آموزش: ایجاد پلاگین
محتویات
مقدمه
در این مقاله آموزش پلاگین نویسی جوملا تصمیم داریم یک پلاگین helloworld از نوع content plugin برای جوملا 2.5 ایجاد کنیم. Content Plugin ها قادر به ایجاد تغییرات در محتوای مطالب هستند مطلبی که از طریق مدیریت مطالب در جوملا ایجاد میشوند. اکثر پلاگین ها از نوع content هستند. پلاگین ها براساس بک رویداد خاصی (event) اجرا میشوند.
انواع event ها در پلاگین محتوا
انواع event در پلاگین محتوا یا content plugin ها به شرح ذیل میباشند. <source lang="php"> 1) onContentPrepare($context, &$item, &$params, $offset =0)
2) onContentAfterTitle($context, &$item, &$params, $offset=0)
3) onContentBeforeDisplay($context, &$item, &$params, $offset=0)
4) onContentAfterDisplay($context, &$item, &$params, $offset=0)
</source>
item$ یک رفرنس (اشاره گر) به مطلب که در view است.
params$ یک رفرنس به آرایه مربوط به پارامترها است.
offset$ یک متغیر integer است که تعیین کننده صفحه ای از مطالب است که باید نمایش داده شود.
context$ یک متن است برای جایی که این رویداد (event) شروع به کار میکند
(example,'com_content.article')
پلاگین های محتوا (content plugin) از com_content اجرا میشوند و نحوه اجرا شدن و فراخوانی آنها همانند دستور ذیل است <source lang="php"> $results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$this->params, $offset)); </source> شما میتوانید کد بالا را جهت اجرای پلاگین محتوا در Root\components\com_content\views\article در فایل view.html.php و در کلاس ContentViewArticle مشاهده کنید.
ایجاد یک پلاگین
کلاس پلاگین باید همانند
plg<PluginType><PluginName>
نام گذاری شود. بنابراین در این مقاله ما نام پلاگین مان را plgContentHelloworldPlugin قرار میدهیم.
کلاس پلاگین شامل یک کانستراکتور (constructor) است که کلاس پدر کانستراکتور را فراخوانی میکند, کلاس پدر کانستراکتور خود نوعی از کلاس JPlugin است و همچنین کلاس پلاگین شامل یک تابع event handler است که در هنگام رویدادن event مورد نظر اجرا خواهد شد.
در این مثال ما از رویداد ()onContentPrepare استفاده میکنیم. که هنگام آماده شدن مطلب برای نمایش این رویداد فراخوانی میشود.
<source lang="php">
class plg<PluginType><PluginName> extends JPlugin
{
public function __construct(&$subject, $params )
{
parent::__construct( $subject, $params );
}
public function onContentPrepare($context, &$article, &$params, $offset = 0)
{
//Plugin code goes here
return true;
}
}
</source> برای دریافت عنوان مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده میکنیم. <source lang="php"> $title = &$article->title; </source> برای دریافت متن مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده میکنیم. <source lang="php"> $text = &$article->text; </source> نکته : توجه داشته باشید که در دستورات بالا از عملگر & استفاده شده است این عملگر برای گرفتن یک رفرنس یا اشاره گر است. بنابراین ما می توانیم article->$text; به text$ تغییر دهیم. ما در این پلاگین تصمیم داریم یک متن قبل از عنوان مطلب ‘Helloworld Before Title’ و یک متن بعد ‘Helloworld After Title’ از عنوان مطلب نمایش دهیم. با استفاده از عملگر الحاق رشته این کار را همانند دستورات زیر میتوانیم انجام دهیم. <source lang="php"> $title = 'Helloworld Before Title'.$title.' Helloworld After Title'; </source> همین کار را میتوانیم برای محتوای مطالب همانند شکل زیر انجام دهیم <source lang="php"> $text = 'Helloworld Before Text'.$text.' Helloworld After Text'; </source>
فایلهای پلاگین
1. helloworldPlugin.php این فایل, فایل اصلی پلاگین است. زمانیکه که رخداد مورد نظر اتفاق افتاد کدهای موجود در این فایل باید اجرا شوند.
2. helloworldPlugin.xml این فایل حاوی اطلاعاتی در مورد پلاگین است و همچنین شامل اطلاعات مربوط به نصب این پلاگین نیز میباشد.
ایجاد فایل helloworldPlugin.php
تمام کد فایل helloworldPlugin.php شامل <source lang="php"> <?php // no direct access defined('_JEXEC') or die; jimport( 'joomla.plugin.plugin' ); class plgContentHelloworldPlugin extends JPlugin { public function __construct(&$subject, $params ) { parent::__construct( $subject, $params ); } public function onContentPrepare($context, &$article, &$params, $offset = 0) { // Article Title $title = &$article->title; // Change Article Title $title = 'Helloworld Before Title'.$title.' Helloworld After Title'; // Article Text $text = &$article->text; // Change Article Text $text = 'Helloworld Before Text'.$text.' Helloworld After Text'; return true; } } ?> </source> میباشد.
ایجاد فایل helloworldPlugin.xml
تمام کد فایل helloworldPlugin.xml شامل <source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <install version="2.5" type="plugin" group="content" method="upgrade"> <name>helloworldPlugin Content Plugin</name> <author>Joomla Farsi</author> <creationDate>92/04/20</creationDate> <copyright>Copyright (C) 2013</copyright> <authorEmail>[email protected]</authorEmail> <version>2.5.0</version> <description>helloworldPlugin Content Test description</description> <files> <filename plugin="helloworldPlugin">helloworldPlugin.php</filename> <filename>index.html</filename> </files> <config> </config> </install>
</source> میباشد.
ایجاد فایل index.html
تمام کد فایل index.html شامل <source lang="php"> <html><body bgcolor="#FFFFFF"></body></html> </source> است. که یک صفحه خالی را نمایش میدهد.
ایجاد بسته نصبی
همینک باید یک فایل zip از فولدر helloworldPlugin بسازید که شامل فایلهای زیر باشد.
1. helloworldPlugin.php
2. index.html
3. helloworldPlugin.xml
فایل zip ساخته شده در این مرحله میتواند از طریق مدیریت افزونه ها در جوملا نصب گردد.
بعد از نصب پلاگین فوق پلاگین helloworldPlugin Content Plugin در قسمت مدیریت پلاگین ها باید قابل مشاهده باشد.
تنها کاری که باید بکنید اینست که پلاگین فوق را فعال (enabled) کنید و نتیجه را در یک مطلب جوملا مشاهده کنید. همانطور که همانند شکل زیر مشاهده میکنید متن های article title و article text به همراه کلمه helloworld به عنوان و متن مطالب الحاق شده اند.
به این شکل شما قادر خواهید بود که محتوای مطالب را با استفاده از content plugin ها تغییر دهید.
جمع آوری شده توسط :شهاب مطاع پور
|
|

