آموزش دروپال - قسمت شانزدهم - Rules - بخش دوم

توسط amin, 20 بهمن, 1392

سلام هم زبون

جلسه قبلی با مقدمات کار با Rules آشنا شدیم. در اصل یک Rules ساختیم که هر موقع دیدگاه روی محتواهای نوع مقاله قرار داده میشد به صورت خودکار همون دیدگاه به یک ایمیل خاص ارسال هم میشد.

در این جلسه می خواهیم کار را حرفه ای تر جلوه بدیم و امکانی قرار بدیم تا با صلاح دید کاربر اگر روی محتوای هر کاربری دیدگاه قرار داده شد یک ایمیل براش ارسال بشه.

در اولین قدم میریم به سراغ صفحه پروفایل کاربرها به آدرس admin/config/people/accounts/fields و یک فیلد جدید از نوع Boolean می سازیم:

کاربر در صفحه پروفایل خود با انتخاب بله یا خیر انتخاب می کند که دیدگاه های جدید روی محتواهای ایجاد شده توسط او برایش ارسال شود یا خیر.

حالا میرویم سراغ Rules و یک Clone از مورد ساخته شده در جلسه قبل می گیریم و اسمش را عوض می کنیم:

در اولین مرحله ما باید اطلاعات نویسنده ای که دیدگاه بر روی آن قرار داده می شود را داشته باشیم. برای این کار از قسمت Add action گزینه Add a variable را انتخاب می کنیم و در صفحه ظاهر شده نوع آن را از جنس کاربر (user) برمی گزینیم:

در تصویر بالا اول روی مثلث سمت چپ باکس کلیک می کنیم و comment را انتخاب کرده سپس منتظر می مانیم تا سایر گزینه ها آزاد شود و node را انتخاب می کنیم و بعد از آن گزینه author را بر می گزینیم.

دقت داشته باشید که در این مرحله ما داریم به اطلاعات ذخیره شده در پایگاه داده برای هر یک از entity های موجود در سایت دسترسی پیدا می کنیم. یعنی این Rules که ما ساختیم در هنگامی اجرا می شود که یک دیدگاه جدید بر روی مقالات ارسال می شود و حالا با روش بالا سعی داریم مرحله به مرحله به اطلاعات بیش تری از جلمه نویسنده مطلبی که دیدگاه بر روی آن قرار گرفته دست پیدا کنیم.

در انتهای صفحه هم یک نام برای این variable انتخاب می کنیم تا در هنگام کار بدانیم اطلاعات مربوط به نویسنده یک دیدگاه را در بر دارد.( می دانید کلمه variable  به معنای متغیر است ! )

کار با این عملیات (Action) تمام شد.

به سراغ ویرایش عملیات send email قبلی می رویم و قصد داریم در بخش TO که آدرس ارسال ایمیل را مشخص می کرد تغییرات را اعمال کنیم.

فقط قبلش یک کاری باید بکنیم. در صفحه اصلی مربوط به این Rules باید ترتیب عملیات ها را عوض کنیم. ببینید ما قصد داریم از این variable جدیدی که ساختیم و حاوی اطلاعات نویسنده محتوایی است که دیدگاه روی اون قرار میگیره در داخل یک عملیات دیگه یعنی send email استفاده کنیم پس باید اول این variable بیاد و بعد عملیات ارسال ایمیل (send email) مانند تصویر زیر:

حالا وارد بخش ویرایش Send email می شویم. در همان ابتدا اگر قسمت REPLACEMENT PATTERNS مربوط به بخش TO را باز کنید می تونید در انتهای اون بخشی را ببینید با عنوان Replacement patterns for Node author که در اطلاعاتی را درباره نویسنده محتوا به ما میده که ما فقط می خواهیم آدرس ایمیلش را داشته باشیم:

این کار هم تموم شد.

حالا اگر دیدگاه جدیدی گذاشته بشه برای نویسنده اون محتوا ارسال خواهد شد.

فقط مونده کاری کنیم که در صورتی که کاربر تیک فعال سازی که در ابتدای آموزش ساختیم را زده باشه این کار انجام بشه که به شرح زیر اقدام می کنیم:

گزینه Add condition را انتخاب می کنیم و گزینه Data value is empty را برمی گزینیم تا به صفحه زیر برسیم:

در این حالت Rules بررسی می کند که اگر این گزینه خالی باشد ( یعنی کاربر تیک فعال سازی را نزده باشد ) مقدار درست را برمی گرداند که یعنی شرط برقرار است و عملیات ارسال ایمیل انجام خواهد شد ولی این دقیقا برعکس چیزی است که ما می خواهیم. پس در پایین صفحه گزینه Negate را فعال می کنیم تا کار برعکس شود. حالا اگر این گزینه خالی نبود ( یعنی کاربر این مورد را فعال کرده بود) شرط برقرار است و بقیه مراحل Rules یعنی عملیات ها به اجرا در خواهند آمد.

کار تمام شد.

ولی خیلی جای پیشرفت داره. مثلا شما می تونید کاری کنید که بررسی کنه اگه کسی که داره دیدگاه میذاره خود نویسنده محتوا هست ( مثلا داره جواب یک دیدگاه را میده) دیگه این دیدگاه براش ایمیل نشه و غیره.

فرض کنید که یک سایت برای دانشگاه یا مدرسه ساختید و می خواهید هر وقت استاد یا معلم تکلیف جدیدی روی سایت برای درس خودش گذاشت یک ایمیل و اس ام اس هشدار دهنده برای دانشجویان و دانش آموزانی که اون درس را دارند ارسال بشه. حالا دیگه می دونید نمی خواد برای چنین کاری یک افزونه جدید بنویسید و بهتره که از قابلیت های بیشمار Rules بهره ببرید.

هم رزمان من در سنگر دروپال پیروز و سلامت و خوشحال باشید.

متن ساده

  • No HTML tags allowed.
  • نشانی‌های وب و پست الکتونیکی به صورت خودکار به پیوند‌ها تبدیل می‌شوند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.

کشته مرده (تایید نشده)

9 سال 9 ماه قبل

سلام
خوشحالم که خیلی خوب به کارتون ادامه می دید ، ما که همیشه می استفاده ایم !