معرفی پلاگین ها و رویدادها: تفاوت بین نسخهها
(صفحهای جدید حاوی «=مقدمه= پلاگین های [http://www.joomlafarsi.com جوملا] امکان اجرای یک قطعه کد را زمانیکه ...» ایجاد کرد) |
|||
| سطر ۱: | سطر ۱: | ||
=مقدمه= | =مقدمه= | ||
| − | [[پلاگین]] | + | |
| − | + | [[پلاگین]]های [http://www.joomlafarsi.com جوملا] امکان اجرای یک قطعه کد را زمانیکه رویداد (event) خاصی اتفاق بیوفتد فراهم میکنند. همچنین [[پلاگین]]ها امکان تقابل و فعل و انفعال با [[کامپوننت]]ها و [[ماژول]]های [[جوملا]] را دارند یعنی بدون اینکه در داخل کدهای [[کامپوننت]]ها و [[ماژول]]ها تغییری ایجاد شود. با استفاده از [[پلاگین]]ها امکان ایجاد تغییرات در عملکرد این افزونهها امکان پذیر است. | |
| − | با توجه به سیستم نام گذاری استاندارد [[جوملا]] عملکرد کلیه رویدادها با توجه به نام آنها مشخص است. ما در این مقاله انواع [[پلاگین]] | + | |
| − | =انواع | + | در داخل هسته [[جوملا]] مجموعه معین از پیش تعریف شدهای از رویدادهای [[پلاگین]]ها از پیش تعریف شده است. بطوریکه یک رویداد اتفاق میافتد تمام توابع مربوط به رویداد یا رویدادها به ترتیب میشوند. از این رو برای توسعه [[جوملا]] شناسایی رویدادهای مربوط به [[پلاگین]]ها و موقعیتی آنها در فایلها قرار دارند اهمیت دارد. |
| − | * [[پلاگین]] | + | |
| − | * [[پلاگین]] | + | با توجه به سیستم نام گذاری استاندارد [[جوملا]] عملکرد کلیه رویدادها با توجه به نام آنها مشخص است. ما در این مقاله انواع [[پلاگین]]ها و رویدادهایی که از قبل تعریق شده است را صرفا معرفی خواهیم کرد. |
| − | * [[پلاگین]] | + | |
| − | * [[پلاگین]] | + | =انواع پلاگینها= |
| − | * [[پلاگین]] | + | |
| − | * [[پلاگین]] | + | * [[پلاگین]]های سیستمی (System Plugin) |
| − | * [[پلاگین]] | + | * [[پلاگین]]های محتوا (Content Plugin) |
| − | = | + | * [[پلاگین]]های کاربری (User Plugin) |
| + | * [[پلاگین]]های اعتبارسنجی (Authentication Plugin) | ||
| + | * [[پلاگین]]های ویرایشگر (Editors Plugin) | ||
| + | * [[پلاگین]]های جستجو (Search Plugin) | ||
| + | * [[پلاگین]]های تماس (Contact Plugin) | ||
| + | |||
| + | =رویدادهای وابسته به پلاگینهای سیستم= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onBeforeRender() | 1) onBeforeRender() | ||
| سطر ۲۱: | سطر ۲۸: | ||
4) onAfterDispatch() | 4) onAfterDispatch() | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''JAdministrator''' در فایل '''application.php''' قرار دارند | + | |
| + | این رویدادها در کلاس '''JAdministrator''' در فایل '''application.php''' قرار دارند در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\administrator\includes | Joomla_Root\administrator\includes | ||
</div> | </div> | ||
| − | در دسترس | + | |
| + | در دسترس میباشند. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
5) onAfterInitialise() | 5) onAfterInitialise() | ||
</div> | </div> | ||
| − | این رویداد در کلاس '''JAdministrator''' در فایل '''application.php''' قرار دارند | + | |
| + | این رویداد در کلاس '''JAdministrator''' در فایل '''application.php''' قرار دارند در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\libraries\joomla\application | Joomla_Root\libraries\joomla\application | ||
</div> | </div> | ||
| − | در دسترس | + | |
| + | در دسترس میباشند. | ||
| + | |||
=رویدادهای وابسته به پلاگین محتوا= | =رویدادهای وابسته به پلاگین محتوا= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onContentPrepare($context, &$item, &$params, $offset) | 1) onContentPrepare($context, &$item, &$params, $offset) | ||
| سطر ۴۴: | سطر ۶۰: | ||
4) onContentAfterDisplay($context, &$item, &$params, $offset) | 4) onContentAfterDisplay($context, &$item, &$params, $offset) | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''ContentViewArticle''' در فایل '''view.html.php''' قرار دارند | + | |
| + | این رویدادها در کلاس '''ContentViewArticle''' در فایل '''view.html.php''' قرار دارند در مسیر | ||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\components\com_content\views\article | Joomla_Root\components\com_content\views\article | ||
</div> | </div> | ||
| − | در دسترس | + | |
| − | + | در دسترس میباشند. | |
| − | '''item$''' = این یک اشاره گر به مطلبی است که در View ساخته | + | |
| − | + | '''item$''' = این یک اشاره گر به مطلبی است که در View ساخته میشود. | |
| − | '''params$''' = این یک اشاره گر به | + | |
| − | + | '''params$''' = این یک اشاره گر به آرایهای است که با پارامترهای مشخص شده توسط View در ارتباط است. | |
| − | '''offset$''' = یک عدد از نوع integer است که مشخص کننده | + | |
| − | + | '''offset$''' = یک عدد از نوع integer است که مشخص کننده صفحهای از مطلب تولید شده است. | |
| + | |||
'''context$''' = یک متن مشخص است. | '''context$''' = یک متن مشخص است. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
5) onContentPrepareForm($form, $data) | 5) onContentPrepareForm($form, $data) | ||
| سطر ۶۲: | سطر ۸۱: | ||
6) onContentPrepareData($context, $data) | 6) onContentPrepareData($context, $data) | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''ContactModelContact'''در فایل '''contact.php''' قرار دارند | + | |
| + | این رویدادها در کلاس '''ContactModelContact'''در فایل '''contact.php''' قرار دارند در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\components\com_contact\models | Joomla_Root\components\com_contact\models | ||
</div> | </div> | ||
| − | در دسترس | + | |
| − | + | در دسترس میباشند. | |
| − | '''form$''' = یک شی JForm است که نمایش داده | + | |
| − | + | '''form$''' = یک شی JForm است که نمایش داده میشود. | |
| − | '''data$''' = یک شی شامل | + | |
| − | + | '''data$''' = یک شی شامل دادههایی برای فرم است. | |
| + | |||
'''context$''' = یک متن مشخص است. | '''context$''' = یک متن مشخص است. | ||
| − | = | + | |
| + | =پلاگینهای کاربری= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onUserLogin($response, $options) | 1) onUserLogin($response, $options) | ||
| سطر ۸۳: | سطر ۱۰۷: | ||
4) onUserLogoutFailure($parameters) | 4) onUserLogoutFailure($parameters) | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''JApplication''' در فایل '''application.php''' قرار دارند | + | |
| + | این رویدادها در کلاس '''JApplication''' در فایل '''application.php''' قرار دارند در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\libraries\joomla\application | Joomla_Root\libraries\joomla\application | ||
</div> | </div> | ||
| − | در دسترس | + | |
| + | در دسترس میباشند. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
5) onUserBeforeSave($getproperties, $isNew, $properties) | 5) onUserBeforeSave($getproperties, $isNew, $properties) | ||
| سطر ۹۷: | سطر ۱۲۵: | ||
8) onUserAfterDelete($getproperties,$result, $error) | 8) onUserAfterDelete($getproperties,$result, $error) | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''JUser''' در فایل '''user.php''' قرار دارند | + | |
| + | این رویدادها در کلاس '''JUser''' در فایل '''user.php''' قرار دارند در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
Joomla_Root\libraries\joomla\user | Joomla_Root\libraries\joomla\user | ||
</div> | </div> | ||
| − | در دسترس | + | |
| − | = | + | در دسترس میباشد. |
| + | |||
| + | =پلاگینهای اعتبارسنجی= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onUserAuthorisation($response, $options) | 1) onUserAuthorisation($response, $options) | ||
</div> | </div> | ||
| − | این رویداد در کلاس '''JAuthentication''' در فایل '''authentication.php''' قرار دارد | + | |
| + | این رویداد در کلاس '''JAuthentication''' در فایل '''authentication.php''' قرار دارد در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
JoomlaRoot\libraries\joomla\user | JoomlaRoot\libraries\joomla\user | ||
</div> | </div> | ||
| − | در دسترس | + | |
| − | + | در دسترس میباشد. | |
| + | |||
'''response$''' = شامل اطلاعات نام کاربری user ایکه اعتبار سنجی شده. | '''response$''' = شامل اطلاعات نام کاربری user ایکه اعتبار سنجی شده. | ||
| − | + | ||
| − | '''options$''' = شامل لیستی از | + | '''options$''' = شامل لیستی از optionها. |
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
2) onUserAuthorisationFailure($authorisation) | 2) onUserAuthorisationFailure($authorisation) | ||
</div> | </div> | ||
| − | این رویداد در کلاس '''JApplication''' در فایل '''application.php''' قرار دارد | + | |
| + | این رویداد در کلاس '''JApplication''' در فایل '''application.php''' قرار دارد در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
JoomlaRoot\libraries\joomla\application | JoomlaRoot\libraries\joomla\application | ||
</div> | </div> | ||
| − | در دسترس | + | |
| + | در دسترس میباشد. | ||
| + | |||
=پلاگین ویرایشگر= | =پلاگین ویرایشگر= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onInit() | 1) onInit() | ||
| سطر ۱۳۹: | سطر ۱۸۱: | ||
7) onGetInsertMethod($name) | 7) onGetInsertMethod($name) | ||
</div> | </div> | ||
| + | |||
=پلاگین جستجو= | =پلاگین جستجو= | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onContentSearch($keyword,$match,$ordering,$areas) | 1) onContentSearch($keyword,$match,$ordering,$areas) | ||
| سطر ۱۴۵: | سطر ۱۸۹: | ||
2) onContentSearchAreas() | 2) onContentSearchAreas() | ||
</div> | </div> | ||
| − | این رویدادها در کلاس '''SearchModelSearch''' در فایل '''search.php''' قرار دارد | + | |
| + | این رویدادها در کلاس '''SearchModelSearch''' در فایل '''search.php''' قرار دارد در مسیر | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
JoomlaRoot\components\com_search\models | JoomlaRoot\components\com_search\models | ||
</div> | </div> | ||
| − | در دسترس | + | |
| + | در دسترس میباشند. | ||
| + | |||
=پلاگین تماس = | =پلاگین تماس = | ||
| − | این رویدادها هنگامیکه با فرم تماس ([[کامپوننت]] تماس) کار | + | |
| + | این رویدادها هنگامیکه با فرم تماس ([[کامپوننت]] تماس) کار میکنید اجرا میشوند . این رویدادها در کلاس '''ContactControllerContact''' و در فایل '''contact.php''' قرار دارد و از مسیر زیر در دسترس میباشند. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
1) onSubmitContact(&$contact, &$data) | 1) onSubmitContact(&$contact, &$data) | ||
</div> | </div> | ||
| − | زمانیکه فرم اعتبار سنجی شد اجرا | + | |
| + | زمانیکه فرم اعتبار سنجی شد اجرا میشود. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
2)onValidateContact(&$contact, &$data) | 2)onValidateContact(&$contact, &$data) | ||
</div> | </div> | ||
| − | جهت اعتبار سنجی مورد استفاده قرار | + | |
| − | + | جهت اعتبار سنجی مورد استفاده قرار میگیرد به عبارت دیگر رویدادهای بالا میتوانند برای اعتبار سنجی و captcha هم مورد استفاده قرار گیرند. | |
| − | contact$ = شامل یک اشاره گر به کاربری که اطلاعاتی را در فرم تماس ارسال کرده. | + | |
| − | + | contact$ = شامل یک اشاره گر به کاربری که اطلاعاتی را در فرم تماس ارسال کرده است. | |
| − | data$ = شامل اشاره گر به متغیری که توسط متد POST دریافت | + | |
| + | data$ = شامل اشاره گر به متغیری که توسط متد POST دریافت میشود و به شکل زیر مورد استفاده قرار میگیرد. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$data=JRequest::getVar('jform, array(), 'post','array'); | $data=JRequest::getVar('jform, array(), 'post','array'); | ||
نسخهٔ کنونی تا ۴ اوت ۲۰۱۳، ساعت ۰۳:۴۴
محتویات
مقدمه
پلاگینهای جوملا امکان اجرای یک قطعه کد را زمانیکه رویداد (event) خاصی اتفاق بیوفتد فراهم میکنند. همچنین پلاگینها امکان تقابل و فعل و انفعال با کامپوننتها و ماژولهای جوملا را دارند یعنی بدون اینکه در داخل کدهای کامپوننتها و ماژولها تغییری ایجاد شود. با استفاده از پلاگینها امکان ایجاد تغییرات در عملکرد این افزونهها امکان پذیر است.
در داخل هسته جوملا مجموعه معین از پیش تعریف شدهای از رویدادهای پلاگینها از پیش تعریف شده است. بطوریکه یک رویداد اتفاق میافتد تمام توابع مربوط به رویداد یا رویدادها به ترتیب میشوند. از این رو برای توسعه جوملا شناسایی رویدادهای مربوط به پلاگینها و موقعیتی آنها در فایلها قرار دارند اهمیت دارد.
با توجه به سیستم نام گذاری استاندارد جوملا عملکرد کلیه رویدادها با توجه به نام آنها مشخص است. ما در این مقاله انواع پلاگینها و رویدادهایی که از قبل تعریق شده است را صرفا معرفی خواهیم کرد.
انواع پلاگینها
- پلاگینهای سیستمی (System Plugin)
- پلاگینهای محتوا (Content Plugin)
- پلاگینهای کاربری (User Plugin)
- پلاگینهای اعتبارسنجی (Authentication Plugin)
- پلاگینهای ویرایشگر (Editors Plugin)
- پلاگینهای جستجو (Search Plugin)
- پلاگینهای تماس (Contact Plugin)
رویدادهای وابسته به پلاگینهای سیستم
1) onBeforeRender()
2) onAfterRender()
3) onAfterRoute()
4) onAfterDispatch()
این رویدادها در کلاس JAdministrator در فایل application.php قرار دارند در مسیر
Joomla_Root\administrator\includes
در دسترس میباشند.
5) onAfterInitialise()
این رویداد در کلاس JAdministrator در فایل application.php قرار دارند در مسیر
Joomla_Root\libraries\joomla\application
در دسترس میباشند.
رویدادهای وابسته به پلاگین محتوا
1) onContentPrepare($context, &$item, &$params, $offset)
2) onContentAfterTitle($context, &$item, &$params, $offset)
3) onContentBeforeDisplay($context, &$item, &$params, $offset)
4) onContentAfterDisplay($context, &$item, &$params, $offset)
این رویدادها در کلاس ContentViewArticle در فایل view.html.php قرار دارند در مسیر
Joomla_Root\components\com_content\views\article
در دسترس میباشند.
item$ = این یک اشاره گر به مطلبی است که در View ساخته میشود.
params$ = این یک اشاره گر به آرایهای است که با پارامترهای مشخص شده توسط View در ارتباط است.
offset$ = یک عدد از نوع integer است که مشخص کننده صفحهای از مطلب تولید شده است.
context$ = یک متن مشخص است.
5) onContentPrepareForm($form, $data)
6) onContentPrepareData($context, $data)
این رویدادها در کلاس ContactModelContactدر فایل contact.php قرار دارند در مسیر
Joomla_Root\components\com_contact\models
در دسترس میباشند.
form$ = یک شی JForm است که نمایش داده میشود.
data$ = یک شی شامل دادههایی برای فرم است.
context$ = یک متن مشخص است.
پلاگینهای کاربری
1) onUserLogin($response, $options)
2) onUserLoginFailure($response)
3) onUserLogout($parameters, $options)
4) onUserLogoutFailure($parameters)
این رویدادها در کلاس JApplication در فایل application.php قرار دارند در مسیر
Joomla_Root\libraries\joomla\application
در دسترس میباشند.
5) onUserBeforeSave($getproperties, $isNew, $properties)
6) onUserAfterSave($getproperties, $isNew, $result, $error)
7) onUserBeforeDelete($getproperties)
8) onUserAfterDelete($getproperties,$result, $error)
این رویدادها در کلاس JUser در فایل user.php قرار دارند در مسیر
Joomla_Root\libraries\joomla\user
در دسترس میباشد.
پلاگینهای اعتبارسنجی
1) onUserAuthorisation($response, $options)
این رویداد در کلاس JAuthentication در فایل authentication.php قرار دارد در مسیر
JoomlaRoot\libraries\joomla\user
در دسترس میباشد.
response$ = شامل اطلاعات نام کاربری user ایکه اعتبار سنجی شده.
options$ = شامل لیستی از optionها.
2) onUserAuthorisationFailure($authorisation)
این رویداد در کلاس JApplication در فایل application.php قرار دارد در مسیر
JoomlaRoot\libraries\joomla\application
در دسترس میباشد.
پلاگین ویرایشگر
1) onInit()
2) onSave($id)
3) onSetContent($id)
4) onCustomEditorButton (editors-xtd)
5) onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
6) onGetContent($id)
7) onGetInsertMethod($name)
پلاگین جستجو
1) onContentSearch($keyword,$match,$ordering,$areas)
2) onContentSearchAreas()
این رویدادها در کلاس SearchModelSearch در فایل search.php قرار دارد در مسیر
JoomlaRoot\components\com_search\models
در دسترس میباشند.
پلاگین تماس
این رویدادها هنگامیکه با فرم تماس (کامپوننت تماس) کار میکنید اجرا میشوند . این رویدادها در کلاس ContactControllerContact و در فایل contact.php قرار دارد و از مسیر زیر در دسترس میباشند.
1) onSubmitContact(&$contact, &$data)
زمانیکه فرم اعتبار سنجی شد اجرا میشود.
2)onValidateContact(&$contact, &$data)
جهت اعتبار سنجی مورد استفاده قرار میگیرد به عبارت دیگر رویدادهای بالا میتوانند برای اعتبار سنجی و captcha هم مورد استفاده قرار گیرند.
contact$ = شامل یک اشاره گر به کاربری که اطلاعاتی را در فرم تماس ارسال کرده است.
data$ = شامل اشاره گر به متغیری که توسط متد POST دریافت میشود و به شکل زیر مورد استفاده قرار میگیرد.
<source lang="php">
$data=JRequest::getVar('jform, array(), 'post','array');
</source>
جمع آوری شده توسط :شهاب مطاع پور
|
|