معرفی پلاگین ها و رویدادها: تفاوت بین نسخه‌ها   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو
(صفحه‌ای جدید حاوی «=مقدمه= پلاگین های [http://www.joomlafarsi.com جوملا] امکان اجرای یک قطعه کد را زمانیکه ...» ایجاد کرد)
 
 
سطر ۱: سطر ۱:
 
=مقدمه=
 
=مقدمه=
[[پلاگین]] های [http://www.joomlafarsi.com جوملا] امکان اجرای یک قطعه کد را زمانیکه رویداد (event) خاصی اتفاق بیوفتد فراهم میکنند. همچنین [[پلاگین]] ها امکان تقابل و فعل و انفعال با [[کامپوننت]] ها و [[ماژول]] های [[جوملا]] را دارند یعنی بدون اینکه در داخل کدهای [[کامپوننت]] ها و [[ماژول]] ها تغییری ایجاد شود. با استفاده [[پلاگین]] ها امکان ایجاد تغییرات در عملکرد این افزونه ها امکان پذیر است. در داخل هسته [[جوملا]] مجموعه معین ازپیش تعریف شده ای از رویداد های [[پلاگین]] ها از پیش تعریف شده است. بطوریکه یک رویداد اتفاق میافتد تمام توابع مربوط به رویداد یا رویداد ها به ترتیب میشوند. از این رو برای توسعه [[جوملا]] شناسایی رویداد های مربوط به [[پلاگین]] ها و موقعیتی آنها در فایلها قرار دارند اهمیت دارد.
+
 
<br/>
+
[[پلاگین]]‌های [http://www.joomlafarsi.com جوملا] امکان اجرای یک قطعه کد را زمانیکه رویداد (event) خاصی اتفاق بیوفتد فراهم می‌کنند. همچنین [[پلاگین]]‌ها امکان تقابل و فعل و انفعال با [[کامپوننت]]‌ها و [[ماژول]]‌های [[جوملا]] را دارند یعنی بدون اینکه در داخل کدهای [[کامپوننت]]‌ها و [[ماژول]]‌ها تغییری ایجاد شود. با استفاده از [[پلاگین]]‌ها امکان ایجاد تغییرات در عملکرد این افزونه‌ها امکان پذیر است.
با توجه به سیستم نام گذاری استاندارد [[جوملا]] عملکرد کلیه رویدادها با توجه به نام آنها مشخص است. ما در این مقاله انواع [[پلاگین]] ها و رویدادهایی که از قبل تعریق شده است را صرفا معرفی خواهیم کرد.
+
 
=انواع پلاگین ها=
+
در داخل هسته [[جوملا]] مجموعه معین از پیش تعریف شده‌ای از رویداد‌های [[پلاگین]]‌ها از پیش تعریف شده است. بطوریکه یک رویداد اتفاق می‌افتد تمام توابع مربوط به رویداد یا رویداد‌ها به ترتیب می‌شوند. از این رو برای توسعه [[جوملا]] شناسایی رویداد‌های مربوط به [[پلاگین]]‌ها و موقعیتی آنها در فایل‌ها قرار دارند اهمیت دارد.
* [[پلاگین]] های سیستمی (System Plugin)
+
 
* [[پلاگین]] های محتوا (Content Plugin)
+
با توجه به سیستم نام گذاری استاندارد [[جوملا]] عملکرد کلیه رویدادها با توجه به نام آنها مشخص است. ما در این مقاله انواع [[پلاگین]]‌ها و رویدادهایی که از قبل تعریق شده است را صرفا معرفی خواهیم کرد.
* [[پلاگین]] های کاربری (User Plugin)
+
 
* [[پلاگین]] های اعتبارسنجی (Authentication Plugin)
+
=انواع پلاگین‌ها=
* [[پلاگین]] های ویرایشگر (Editors Plugin)
+
 
* [[پلاگین]] های جستجو (Search Plugin)
+
* [[پلاگین]]‌های سیستمی (System Plugin)
* [[پلاگین]] های تماس (Contact 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>
در دسترس میباشند.
+
 
<br/>
+
در دسترس می‌باشند.
'''item$''' = این یک اشاره گر به مطلبی است که در View ساخته میشود.   
+
 
<br/>
+
'''item$''' = این یک اشاره گر به مطلبی است که در View ساخته می‌شود.   
'''params$''' = این یک اشاره گر به آرایه ای که است با پارامترهای مشخص شده توسط Viewدر ارتباط است.
+
 
<br/>
+
'''params$''' = این یک اشاره گر به آرایه‌ای است که با پارامترهای مشخص شده توسط View در ارتباط است.
'''offset$''' = یک عدد از نوع integer است که مشخص کننده صفحه ای از مطلب تولید شده است.
+
 
<br/>
+
'''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>
در دسترس میباشند.
+
 
<br/>
+
در دسترس می‌باشند.
'''form$''' = یک شی JForm است که نمایش داده میشود.
+
 
<br/>
+
'''form$''' = یک شی JForm است که نمایش داده می‌شود.
'''data$''' = یک شی شامل داده هایی برای فرم است.
+
 
<br/>
+
'''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>
در دسترس می باشد.
+
 
<br/>
+
در دسترس می‌‌باشد.
 +
 
 
'''response$''' = شامل اطلاعات نام کاربری user ایکه اعتبار سنجی شده.
 
'''response$''' = شامل اطلاعات نام کاربری user ایکه اعتبار سنجی شده.
<br/>
+
 
'''options$''' = شامل لیستی از option ها.
+
'''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''' قرار دارد و از مسیرزیر در دسترس میباشند.
+
 
 +
این رویدادها هنگامیکه با فرم تماس ([[کامپوننت]] تماس) کار می‌کنید اجرا می‌شوند . این رویداد‌ها در کلاس '''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 هم مورد استفاده قرار گیرند.
+
 
<br/>
+
جهت اعتبار سنجی مورد استفاده قرار می‌گیرد به عبارت دیگر رویدادهای بالا می‌توانند برای اعتبار سنجی و captcha هم مورد استفاده قرار گیرند.
contact$ = شامل یک اشاره گر به کاربری که اطلاعاتی را در فرم تماس ارسال کرده.
+
 
<br/>
+
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) خاصی اتفاق بیوفتد فراهم می‌کنند. همچنین پلاگین‌ها امکان تقابل و فعل و انفعال با کامپوننت‌ها و ماژول‌های جوملا را دارند یعنی بدون اینکه در داخل کدهای کامپوننت‌ها و ماژول‌ها تغییری ایجاد شود. با استفاده از پلاگین‌ها امکان ایجاد تغییرات در عملکرد این افزونه‌ها امکان پذیر است.

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

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

انواع پلاگین‌ها

رویداد‌های وابسته به پلاگین‌های سیستم

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>


جمع آوری شده توسط :شهاب مطاع پور

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.