فهرست رویدادهای پلاگین

فهرست رویدادهای زیر شامل نام رویداد و شرح مختصری از کاربرد آن، همراه با پیوندی به شرح مفصل است.

همانطور که در تغییرات جوملا ۴ و ۵ توضیح داده شده است، رویدادهای جوملا از رشته‌هایی با پارامترهای مرتبط به کلاس‌های رویداد "عینی" خاص برای هر رویداد، گاهی اوقات از طریق یک کلاس رویداد "عمومی" تغییر کرده‌اند. برخی از کلاس‌های رویداد عینی در جوملا ۴ و برخی دیگر در جوملا ۵ معرفی شدند. اگر می‌خواهید پلاگین شما از هر دو کلاس رویداد عینی و عمومی پشتیبانی کند، باید آن را همانطور که در تغییرات جوملا ۴ و ۵ توضیح داده شده است، کدنویسی کنید.

گروه رویداد به گروهی از پلاگین‌ها اشاره دارد که جوملا قبل از ارسال آن رویداد، از وارد شدن آنها اطمینان حاصل می‌کند.

نام رویداد

توضیح کوتاه

گروه

از نسخه

onContentPrepare

تغییر محتوای نمایش داده شده در یک ویو

محتوا

قبل از ۴.۰

onContentAfterTitle

افزودن HTML پس از عنوان

محتوا

قبل از ۴.۰

onContentBeforeDisplay

افزودن HTML قبل از محتوای اصلی صفحه

محتوا

قبل از ۴.۰

onContentAfterDisplay

افزودن HTML پس از محتوای اصلی صفحه

محتوا

قبل از ۴.۰

onContentPrepareData

تغییر داده‌های پیش‌فرض فرم

محتوا

قبل از ۴.۰

onContentPrepareForm

تغییر فرم

محتوا

قبل از ۴.۰

onContentNormaliseRequestData

قبل از اعتبارسنجی داده‌های POST، توسط کنترلر فراخوانی می‌شود

محتوا

۴.۰

onContentBeforeValidateData

قبل از اعتبارسنجی داده‌های POST، توسط مدل فراخوانی می‌شود

محتوا

۴.۰

onContentBeforeSave

در مدل، قبل از ذخیره داده‌های جدید/به‌روزرسانی شده

محتوا

قبل از ۴.۰

onContentAfterSave

در مدل، بعد از ذخیره داده‌های جدید/به‌روزرسانی شده

محتوا

قبل از ۴.۰

onContentBeforeDelete

در مدل، قبل از حذف یک رکورد

محتوا

قبل از ۴.۰

onContentAfterDelete

در مدل، بعد از حذف یک رکورد

محتوا

قبل از ۴.۰

onContentBeforeChangeState

در مدل، قبل از تغییر وضعیت مجموعه‌ای از رکوردها

محتوا

۴.۰

onContentChangeState

در مدل، بعد از تغییر وضعیت مجموعه‌ای از رکوردها

محتوا

قبل از ۴.۰

onCategoryChangeState

در مدل، قبل از تغییر وضعیت مجموعه‌ای از رکوردهای دسته‌بندی

محتوا

قبل از ۴.۰

onInstallerBeforePackageDownload

در نصب‌کننده، قبل از دانلود یک بسته

نصب‌کننده

قبل از ۴.۰

onInstallerBeforeUpdateSiteDownload

در نصب‌کننده، قبل از دانلود یک سایت به‌روزرسانی

نصب‌کننده

۵.۳

برای اطلاعات بیشتر به آدرس زیر مراجعه کنید:

https://docs.joomla.org/Plugin/Events

رویدادهای محتوا

رویدادهای پلاگین محتوا تنها توسط کامپوننت com_content فعال نمی‌شوند، بلکه توسط سایر کامپوننت‌ها مانند Contacts (مخاطبین)، Categories (دسته‌بندی‌ها) و Tags (برچسب‌ها) و همچنین برخی ماژول‌ها نیز فعال می‌شوند.

این رویدادها در طی فرایندهای زیر فعال می‌گردند:

- آماده‌سازی محتوا برای نمایش در یک View (نمایش) — هم برای متون HTML و هم برای فرم‌های HTML

- پردازش داده‌های ارسال شده از یک فرم (POST) — که مربوط به اعتبارسنجی داده‌ها و عملیات‌های CRUD در سطح مدل MVC است

قسمت‌های پایین توضیح مختصری درباره هر رویداد محتوا، پارامترها/آرگومان‌های رویداد و مثال‌هایی از کاربرد آن‌ها که در راهنمای جوملا موجود است، ارائه می‌دهند.

برای آشنایی با تغییر جوملا به سمت استفاده از کلاس‌ها برای مدیریت رویدادها، به بخش "تغییرات جوملا ۴ و ۵" مراجعه کنید که در آن توضیحاتی درباره دسترسی به آرگومان‌ها و بازگرداندن مقادیر نیز آمده است.

onContentPrepare

توضیح:

این اولین مرحله در آماده‌سازی محتوا برای خروجی است و رایج‌ترین نقطه برای پلاگین‌های مرتبط با محتوا جهت انجام کار خود محسوب می‌شود. از آنجا که آیتم و پارامترهای مرتبط به صورت مرجع منتقل می‌شوند، کنترل‌کننده‌های رویداد می‌توانند قبل از نمایش، آن‌ها را تغییر دهند.

آرگومان‌های رویداد: 

کلاس رویداد \Joomla\CMS\Event\Content\ContentPrepareEvent آرگومان‌های زیر را دارد:

 

- context — زمینه (context) محتوایی که به پلاگین ارسال می‌شود. این شامل نام کامپوننت و نما (view) یا نام ماژول است (مثلاً com_content.article, com_contact.contact, com_users.user). این مقدار برای اطمینان از فعال بودن رویداد در زمینه‌ی مناسب استفاده می‌شود.

- item — آیتمی که در نما رندر می‌شود، مثلاً یک مقاله، مخاطب یا کاربر. می‌توانید به ویژگی‌های این شیء دسترسی داشته باشید مانند `$item->title`؛ ویژگی‌های در دسترس به نوع آیتم وابسته است. اگر ویژگی‌ای را تغییر دهید، این تغییر روی خروجی صفحه تاثیر می‌گذارد ولی در دیتابیس ذخیره نمی‌شود.

- params — اشاره‌گری به آرایه‌ای انجمنی از پارامترهای آیتم (معمولاً فیلد params در رکورد دیتابیس آیتم، ولی در com_content فیلد attribs). هر مقداری که ست کنید ممکن است در خروجی صفحه موثر باشد، اما در دیتابیس ذخیره نمی‌شود.

- page — عدد صحیحی که به افست مربوط به نمایش لیست‌های صفحه‌بندی شده مرتبط است. اغلب برابر صفر یا null است و نمی‌توان روی آن حساب کرد.

مقدار بازگشتی: ندارد.

مثال:

در مباحث قبلی پلاگین Basic Content متنی از مقاله را که شامل `{fieldname}` باشد پردازش کردیم و آن را با مقدار مربوط به فیلد جایگزین نمودیم.

onContentAfterTitle

توضیح: 

این رویداد برای قرار دادن اطلاعاتی بین عنوان محتوا و بدنه محتوا است.

آرگومان‌های رویداد: 

کلاس رویداد \Joomla\CMS\Event\Content\AfterTitleEvent شامل این آرگومان‌ها است:

هرچند that item و params به صورت مرجع پاس داده شده‌اند، اما این رویداد برای تغییر داده‌های آیتم نیست؛ برای این کار باید از onContentPrepare استفاده کنید.

- context — زمینه (context) محتوایی که به پلاگین ارسال می‌شود، مشابه توضیح بالا.

- item — آیتم در حال رندر شدن مثل مقاله، مخاطب یا کاربر.

- params — مرجعی به آرایه پارامترهای آیتم.

- page — عدد صحیح مرتبط با افست نمایش صفحات صفحه‌بندی شده، اما اغلب صفر یا null است و به آن نمی‌توان اعتماد کرد.

مقدار بازگشتی: 

رشته‌ای از HTML که پس از عنوان آیتم نمایش داده می‌شود.

توجه: 

قابلیت فیلدهای سفارشی جوملا (com_fields) یک پلاگین مرتبط دارد که توسط این رویداد فعال می‌شود. این پلاگین کد HTML فیلدهای سفارشی‌ای را که قابلیت نمایش خودکار بعد از عنوان دارند، برمی‌گرداند. بنابراین این رویداد در نماهایی که آیتمی مانند مقاله (نمایش مقاله com_content)، مخاطب (نمایش مخاطب com_contact) و غیره را نمایش می‌دهند فعال می‌شود. اگر شما کامپوننتی توسعه می‌دهید که از فیلدهای سفارشی پشتیبانی می‌کند، باید این رویداد را فعال نمایید.

البته، در ادامه ترجمه‌ی بخش فرستاده‌شده از مقاله درباره توسعه جوملا را می‌بینی:

onContentBeforeDisplay

این رویداد درخواست اطلاعاتی است که باید بلافاصله قبل از محتوای اصلی کامپوننت (مثلاً متن مقاله) قرار بگیرد.

برای نماهایی که HTML تولید می‌کنند، این ممکن است شامل استفاده از استایل‌هایی باشد که به عنوان بخشی از محتوا یا پارامترهای مرتبط مشخص شده‌اند.

پارامترهای رویداد

کلاسی که این رویداد را مدیریت می‌کند، \Joomla\CMS\Event\Content\BeforeDisplayEvent است و پارامترهای زیر را دریافت می‌کند:

- context: محیط یا زمینه محتوایی که به پلاگین ارسال می‌شود. این شامل نام کامپوننت و نما (view) است یا نام ماژول (مثل com_content.article، com_contact.contact، com_users.user). با استفاده از این مقدار می‌توانید بررسی کنید که آیا در زمینه موردنظر پلاگین قرار دارید یا خیر.

- item: آیتمی که توسط نما رندر می‌شود، مثلاً یک مقاله، مخاطب یا کاربر.

- params: ارجاع به آرایه‌ای انجمنی از پارامترهای آیتم (معمولاً فیلد params در رکورد دیتابیسی آیتم، یا در مورد com_content، فیلد attribs).

- page: عدد صحیحی که به عنوان تعداد صفحات در نمایش لیست‌های صفحه‌بندی شده مرتبط است، اما اغلب مقدار آن صفر یا null است و نباید روی آن حساب باز کرد.

 

نکته: با اینکه item و params به صورت ارجاعی ارسال می‌شوند، این رویداد برای تغییر داده‌های item نیست. برای این کار باید از رویداد onContentPrepare استفاده کنید.

مقدار بازگشتی:

یک رشته‌ی HTML که بلافاصله قبل از متن آیتم نمایش داده می‌شود.

نکته

امکان فیلدهای سفارشی جوملا (com_fields) با پلاگینی مرتبط است که توسط این رویداد فعال می‌شود. این پلاگین HTML فیلدهای سفارشی را که گزینه نمایش خودکار آنها روی "قبل از نمایش محتوا" تنظیم شده، بازمی‌گرداند. بنابراین این رویداد در نمایی که آیتم (مثل مقاله در com_content، مخاطب در com_contact و غیره) نمایش داده می‌شود، اجرا می‌گردد. اگر یک کامپوننت طراحی می‌کنید که از فیلدهای سفارشی پشتیبانی می‌کند، باید این رویداد را فراخوانی کنید.

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

onContentAfterDisplay

این رویداد درخواست اطلاعاتی است که باید بلافاصله بعد از محتوای اصلی کامپوننت (مثلاً متن مقاله) قرار بگیرد.

پارامترهای رویداد

کلاس این رویداد \Joomla\CMS\Event\Content\AfterDisplayEvent است و شامل پارامترهای زیر می‌شود:

(پارامترها مانند onContentBeforeDisplay هستند و همان توضیحات در مورد context، item، params و page صدق می‌کند.)

مقدار بازگشتی

رشته‌ای از HTML که بلافاصله بعد از متن آیتم نمایش داده می‌شود.

نکته

امکان فیلدهای سفارشی جوملا (com_fields) مشابه بالا، پلاگینی دارد که توسط این رویداد فعال می‌شود و HTML فیلدهایی را که گزینه نمایش خودکار آنها روی "بعد از نمایش محتوا" تنظیم شده، بازمی‌گرداند. اگر کامپوننتی با فیلدهای سفارشی دارید، باید این رویداد را فراخوانی کنید.

onContentPrepareData

توضیح

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

در جوملا، هنگام بارگذاری فرم، تابعی به نام loadFormData برای مشخص کردن داده‌های اولیه‌ی فرم فراخوانی می‌شود (مثلاً در حالت ویرایش، داده‌های موجود یک رکورد). در پایان loadFormData، اکستنشن‌های جوملا تابع preprocessData را فراخوانی می‌کنند که نسخه پیش‌فرض آن این رویداد را فعال می‌کند.             

این رویداد قبل از onContentPrepareForm فراخوانی می‌شود.

پارامترهای رویداد

کلاس این رویداد \Joomla\CMS\Event\Model\PrepareDataEvent است و شامل:

- context: محیط محتوایی که به پلاگین ارسال می‌شود (مثلاً com_content.article، com_contact.contact).

- data: داده‌های اولیه (برای پیش‌پر کردن فرم) که به صورت شیء PHP ارسال می‌شوند. می‌توانید با $data->title به ویژگی‌ها دسترسی داشته باشید. تغییر مستقیم این ویژگی‌ها منسوخ شده و بهتر است از متد updateData استفاده کنید:

 
$data = $event->getData();
// تغییر داده‌ها
$event->updateData($data);

مقدار بازگشتی ندارد.

onContentPrepareForm

این رویداد بعد از بارگذاری یک فرم اجرا می‌شود و می‌توان از آن برای تغییر فرم (Form Object) به شیوه‌های داینامیک استفاده کرد.

در کامپوننت‌های جوملا فرم می‌تواند:

- هر زمان که فرم برای نمایش آماده شود،

- هنگام پردازش ارسال اطلاعات POST فرم (برای اعتبارسنجی فیلدها)

بارگذاری شود و در هر دو حالت این رویداد فعال می‌شود.

پارامترهای رویداد

کلاس \Joomla\CMS\Event\Model\PrepareFormEvent است و پارامترهای زیر را دارد:

- form: شیء فرم که نام آن معمولاً با getName() به صورت 'com_content.article'، 'com_contact.contact' و ... است. می‌توانید با بررسی این نام تصمیم بگیرید در زمینه موردنظر هستید. سپس می‌توانید با استفاده از متدهای API فرم، فرم را تغییر دهید.

- data: داده‌های پیش‌پر شده موجود در فرم که به صورت شیء PHP است. مانند onContentPrepareData.

نکته: اگر رویداد در هنگام پردازش POST فراخوانی شود، داده‌ها خالی خواهند بود و تغییری در آنها تأثیر نخواهد داشت.

مقدار بازگشتی: ندارد.

onContentNormaliseRequestData

توضیح: 

این رویداد در روند پردازش داده‌های ارسالی فرم توسط کنترلرها و مدل‌ها به دیتابیس فعال می‌شود. این رویداد توسط کنترلر قبل از اینکه داده‌های ارسالی فرم (معمولاً آرایه‌ای که توسط مرورگر در یک پارامتر jform در POST ارسال می‌شود) فیلتر و اعتبارسنجی شوند، فراخوانی می‌شود. آرایه داده‌ها به یک شیء PHP تبدیل شده و به عنوان پارامتر به رویداد ارسال می‌شود. از آنجا که اشیاء PHP همیشه به صورت ارجاعی ارسال می‌شوند، پلاگین‌هایی که به این رویداد گوش می‌دهند می‌توانند داده‌های فرم ارسال شده را تغییر دهند.

پارامترهای رویداد:

کلاس رویداد \Joomla\CMS\Event\Model\NormaliseRequestDataEvent با پارامترهای زیر است:

- context: زمینه محتوایی که به پلاگین ارسال می‌شود. این شامل نام کامپوننت و نام آیتم است (مثلاً com_content.article، com_contact.contact). با این مقدار می‌توانید بررسی کنید که در زمینه مورد نظر پلاگین هستید یا خیر.

- data: داده‌های فرم ارسالی که به صورت شیء PHP ارسال می‌شود. می‌توانید با نمونه `$data->title` به خصوصیات دسترسی داشته باشید. هر تغییری که روی این داده‌ها انجام دهید، در داده‌های فرم اعمال شده و احتمالاً در دیتابیس ذخیره خواهد شد.

- form: نمونه فرم جوملا، همانطور که در مستندات فرم‌های جوملا توضیح داده شده.

مقدار بازگشتی ندارد.

onContentBeforeValidateData

توضیح

این رویداد هنگامی که یک داده ارسال شده از طریق فرم جوملا در درخواست POST پردازش می‌شود، توسط مدل درست قبل از اعمال قواعد اعتبارسنجی فراخوانی می‌شود. می‌توانید از این رویداد برای تغییر داده‌های ارسال شده یا (که کمتر مرسوم است) شیء فرم استفاده کنید.

پارامترهای رویداد: 

کلاس \Joomla\CMS\Event\Model\BeforeValidateDataEvent با پارامترهای زیر است:

- form: شیء فرم که نام آن به شکل 'com_content.article'، 'com_contact.contact' و مشابه آن است. با این می‌توانید بررسی کنید در زمینه موردنظر پلاگین هستید یا خیر.

- data: داده‌های ارسال شده از فرم که به صورت آرایه انجمنی و به صورت ارجاعی ارسال شده‌اند. عناصر این آرایه بسته به فرم متفاوت هستند. هر تغییری که روی این داده‌ها انجام دهید قبل از اعتبارسنجی اعمال خواهد شد.

نکته: تغییر مستقیم داده‌ها منسوخ شده و توصیه می‌شود از متد updateData استفاده شود:

 
$data = $event->getData();
// تغییر داده‌ها
$event->updateData($data);
 

مقدار بازگشتی ندارد.

onContentBeforeSave

توضیح: 

این رویداد در سطح مدل قبل از ذخیره داده جدید یا به‌روزرسانی داده‌ها در دیتابیس فراخوانی می‌شود. با بازگرداندن مقدار false می‌توانید از ذخیره داده جلوگیری کنید. در این حالت به طور پیش‌فرض خطایی که به کاربر نشان داده خواهد شد، با استفاده از `$this->setError($table->getError)` تنظیم می‌شود. چون معمولاً خطایی در جدول مربوطه نیست، ممکن است بخواهید خودتان پیامی برای کاربر ایجاد کنید که دلیل عدم ذخیره‌سازی را توضیح دهد.

`onContentBeforeSave` برای اکثر انواع داده‌ها (مثل محتوا، مخاطبین) فراخوانی می‌شود، اما برخی مدل‌ها رویداد خاص خود را دارند:

- `onExtensionBeforeSave` برای اکستنشن‌ها

- `onUserBeforeSave` برای کاربران

پارامترهای رویداد:

کلاس \Joomla\CMS\Event\Model\BeforeSaveEvent شامل:

- context: زمینه محتوایی (نام کامپوننت و آیتم، مانند com_content.article یا com_contact.contact).

- item: شیء جدول (Table object) که حاوی داده‌هایی است که باید ذخیره شوند.

- isNew: یک مقدار بولین که وقتی محتوا قرار است ایجاد شود (نه به‌روزرسانی)، true است.

- data: داده‌هایی که قرار است ذخیره شوند به صورت آرایه انجمنی.

نکته: هم item و هم data داده‌های اصلاح‌شده (برای ذخیره) را نشان می‌دهند و داده‌های فعلی موجود در دیتابیس را نمایش نمی‌دهند.

بازگشتی:  اگر false برگردانید، ذخیره‌سازی متوقف می‌شود.

onContentAfterSave

توضیح: 

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

`onContentAfterSave` برای بیشتر انواع داده‌ها فراخوانی می‌شود، اما برخی مدل‌ها رویداد خاص خود را دارند:

- `onExtensionAfterSave` برای اکستنشن‌ها 

- `onUserAfterSave` برای کاربران

پارامترهای رویداد: 

کلاس \Joomla\CMS\Event\Model\AfterSaveEvent شامل موارد زیر است:

- context: زمینه محتوایی (نام کامپوننت و آیتم).

- item: شیء جدول که داده ذخیره شده را دارد.

- isNew: مقدار بولین که در صورت ایجاد محتوا (نه به‌روزرسانی) برابر true است.

- data: داده‌هایی که ذخیره شده‌اند، به صورت آرایه انجمنی.

مقدار بازگشتی ندارد.

onContentBeforeDelete

توضیح:

این رویداد در سطح مدل قبل از فراخوانی عملیات حذف رکورد از دیتابیس اجرا می‌شود. شما می‌توانید با بازگرداندن false عملیات حذف را لغو کنید. در این حالت، به طور پیش‌فرض خطایی که به کاربر نمایش داده می‌شود، با استفاده از `$this->setError($table->getError)` تنظیم می‌شود. از آنجا که معمولاً خطایی در شیء جدول (Table object) وجود ندارد، بهتر است خودتان پیام مناسبی برای توضیح علت رد حذف به کاربر ارسال کنید.

در کامپوننت‌های جوملا زمانی که یک آیتم را به "سطل زباله" می‌فرستید، آن آیتم حذف نمی‌شود بلکه وضعیت آن به "trashed" تغییر می‌کند. آیتم زمانی حذف می‌شود که روی آن کلیک کرده و گزینه "Empty Trash" را انتخاب کنید. اگر چندین آیتم به صورت همزمان برای این عملیات انتخاب شوند، این رویداد برای هر کدام از آنها اجرا خواهد شد.

این رویداد برای انواع داده‌های مختلف (مانند محتوا، مخاطبین) فراخوانی می‌شود اما برخی مدل‌ها رویداد خاص خود را دارند:

- `onExtensionBeforeDelete` برای پلاگین‌ها 

- `onUserBeforeDelete` برای کاربران

پارامترهای رویداد: 

کلاس \Joomla\CMS\Event\Model\BeforeDeleteEvent شامل:

- context: زمینه محتوایی (نام کامپوننت و آیتم، مانند com_content.article یا com_contact.contact).

- item: شیء جدول که داده‌هایی را شامل می‌شود که قرار است حذف شوند.

مقدار بازگشتی: 

با بازگرداندن false، حذف لغو خواهد شد.

onContentAfterDelete

توضیح: 

این رویداد در سطح مدل پس از حذف رکورد از دیتابیس فراخوانی می‌شود. می‌توانید از این رویداد برای حذف اطلاعات مرتبط (مثلاً در دیتابیس یا فایل‌ها) استفاده کنید.

اگر چندین رکورد به صورت همزمان حذف شوند، این رویداد برای هر رکورد به صورت جداگانه اجرا می‌شود.

این رویداد نیز شبیه به onContentBeforeDelete است اما بعد از حذف:

- `onExtensionAfterDelete` برای پلاگین‌ها 

- `onUserAfterDelete` برای کاربران

پارامترهای رویداد:

کلاس \Joomla\CMS\Event\Model\AfterDeleteEvent شامل:

- context: زمینه محتوایی (نام کامپوننت و آیتم).

- item: شیء جدول که داده حذف‌شده را در بر دارد.

مقدار بازگشتی ندارد.

onContentBeforeChangeState

توضیح: 

این رویداد در سطح مدل قبل از تغییر وضعیت چند آیتم فراخوانی می‌شود. شما می‌توانید با بازگرداندن false از تغییر وضعیت جلوگیری کنید. در این صورت بهتر است پیامی به کاربر نشان داده شود که چرا تغییر وضعیت رد شده است.

هشدار: 

جوملا به صورت کامل این لغو را مدیریت نمی‌کند — تغییر وضعیت اعمال نمی‌شود اما پیام‌هایی که به کاربر نمایش داده می‌شود ممکن است نشان دهد که عملیات موفق بوده است.

این رویداد زمانی اجرا می‌شود که کاربر:

- فرم مقالات را مشاهده کند (صفحه‌ای با چندین مقاله) 

- چندین مقاله را انتخاب کند (از طریق چک‌باکس‌ها) 

- عملیاتی را انتخاب کند که وضعیت را تغییر می‌دهد (انتشار، عدم انتشار، بایگانی، سطل زباله)

این رویداد برای کامپوننت‌های مشابه مثل مخاطبین و برچسب‌ها نیز اجرا می‌شود، اما برای فعال/غیرفعال کردن کاربران یا پلاگین‌ها فراخوانی نمی‌شود.

هشدار: 

این رویداد هنگام ویرایش یک آیتم، تغییر وضعیت انتشار و سپس ذخیره آن فراخوانی نمی‌شود.

پارامترهای رویداد: 

کلاس \Joomla\CMS\Event\Model\BeforeChangeStateEvent شامل:

- context: زمینه محتوایی (مثلاً com_content.article، com_contact.contact، com_categories.category).

- pks: آرایه کلیدهای اصلی (primary key) رکوردهایی که قرار است وضعیت آنها تغییر کند.

- value: وضعیت انتشار که باید اعمال شود (0: غیرمنتشرشده، 1: منتشرشده، 2: بایگانی‌شده، -2: به سطل زباله رفته).

مقدار بازگشتی: با بازگرداندن false، تغییر وضعیت لغو خواهد شد.

onContentChangeState

توجه

نام این رویداد «onContentAfterChangeState» نیست — جوملا در این زمینه کمی ناسازگار است.

توضیح

این رویداد در سطح مدل پس از تغییر وضعیت چندین آیتم اجرا می‌شود.

هشدار

این رویداد زمانی که یک آیتم را ویرایش می‌کنید، وضعیت انتشار آن را تغییر می‌دهید و سپس ذخیره می‌کنید، فراخوانی نمی‌شود.

پارامترهای رویداد: 

کلاس رویداد \Joomla\CMS\Event\Model\AfterChangeStateEvent شامل:

- context: زمینه محتوایی که به پلاگین ارسال می‌شود. این عبارت نام کامپوننت و نام آیتم است (مثلاً com_content.article، com_contact.contact). با این مقدار می‌توانید بررسی کنید که در زمینه مورد نظر برای پلاگین هستید یا خیر.

- pks: آرایه‌ای از کلیدهای اصلی رکوردهایی که وضعیت آن‌ها تغییر کرده است.

- value: مقدار وضعیت انتشار که اعمال شده است (0: غیرمنتشرشده، 1: منتشرشده، 2: بایگانی‌شده، -2: به سطل زباله رفته).

مقدار بازگشتی ندارد.

onCategoryChangeState

توضیح

این رویداد در سطح مدل پس از تغییر وضعیت چندین دسته‌بندی (کاتگوری) فراخوانی می‌شود. هنگامی که چندین دسته برای تغییر وضعیت انتخاب می‌شوند، رویدادهای زیر به ترتیب اجرا می‌شوند:

- onContentBeforeChangeState 

- onContentChangeState 

- onCategoryChangeState

توجه داشته باشید که زمینه (context) در onCategoryChangeState با رویدادهای دیگر متفاوت است.

پارامترهای رویداد

کلاس \Joomla\CMS\Event\Model\AfterCategoryChangeStateEvent شامل:

- context: زمینه محتوایی که به پلاگین ارسال می‌شود. این عبارت مربوط به کامپوننت مرتبط با کاتگوری‌ها است (مثلاً com_content، com_contact). با این مقدار می‌توانید بررسی کنید که در زمینه مورد نظر هستید یا خیر.

- pks: آرایه‌ای از کلیدهای اصلی رکوردهای دسته‌بندی که وضعیت آن‌ها تغییر کرده است.

- value: مقدار وضعیت انتشار اعمال شده (0: غیرمنتشرشده، 1: منتشرشده، 2: بایگانی‌شده، -2: به سطل زباله رفته).

مقدار بازگشتی ندارد.

رویدادهای نصب (Installer Events)

رویدادهای نصب در پلاگین‌ها زمانی فعال می‌شوند که برخی عملیات در فرآیند نصب پلاگین‌ها یا دانلود سایت‌های به‌روزرسانی انجام شود.

onInstallerBeforePackageDownload

توضیح: 

این رویداد قبل از دانلود یک بسته قابل نصب (فایل zip) از یک پلاگین (که می‌تواند پکیج، کامپوننت، ماژول، پلاگین، قالب، کتابخانه باشد) اجرا می‌شود. این امکان را به پلاگین‌ها می‌دهد تا URL یا هدرهای درخواست را تغییر دهند.

پارامترهای رویداد: 

کلاس رویداد \Joomla\CMS\Event\Installer\BeforePackageDownloadEvent شامل:

- url: آدرس URL بسته.

- headers: هدرهایی که همراه درخواست ارسال می‌شوند.

مقدار بازگشتی ندارد.

نمونه کد

 
public function onInstallerBeforePackageDownload(\Joomla\CMS\Event\Installer\BeforePackageDownloadEvent $event): void
{
    $event->updateUrl($event->getUrl() . '?auth=foo');
}

onInstallerBeforeUpdateSiteDownload

توضیح:

این رویداد قبل از دانلود یک سایت به‌روزرسانی اجرا می‌شود. این امکان را به پلاگین‌ها می‌دهد تا URL یا هدرهای درخواست را تغییر دهند.

پارامترهای رویداد:

کلاس رویداد \Joomla\CMS\Event\Installer\BeforeUpdateSiteDownloadEvent شامل:

- url: آدرس URL سایت به‌روزرسانی.

- headers: هدرهایی که همراه درخواست ارسال می‌شوند.

مقدار بازگشتی ندارد.

نمونه کد

 
public function onInstallerBeforeUpdateSiteDownload(\Joomla\CMS\Event\Installer\BeforeUpdateSiteDownloadEvent $event): void
{
    $event->updateUrl($event->getUrl() . '?auth=foo');
}