آموزش: ایجاد پلاگین: تفاوت بین نسخهها
(صفحهای جدید حاوی «=مقدمه= در این مقاله آموزش پلاگین نویسی [http://www.joomlafarsi.com جوملا] تصمیم داریم ...» ایجاد کرد) |
|||
| سطر ۱: | سطر ۱: | ||
=مقدمه= | =مقدمه= | ||
| − | در این | + | |
| − | =انواع | + | در این مقاله، آموزش [[پلاگین]] نویسی [http://www.joomlafarsi.com جوملا] تصمیم داریم یک [[پلاگین]] helloworld از نوع content plugin برای [[جوملا]] 2.5 ایجاد کنیم. Content Pluginها قادر به ایجاد تغییرات در محتوای مطالب هستند مطلبی که از طریق مدیریت مطالب در [[جوملا]] ایجاد میشوند. اکثر [[پلاگین]]ها از نوع content هستند. [[پلاگین]]ها بر اساس یک رویداد خاصی (event) اجرا میشوند. |
| − | انواع event در [[پلاگین]] محتوا یا content | + | |
| + | =انواع eventها در پلاگین محتوا= | ||
| + | |||
| + | انواع event در [[پلاگین]] محتوا یا content pluginها به شرح ذیل میباشند. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
1) onContentPrepare($context, &$item, &$params, $offset =0) | 1) onContentPrepare($context, &$item, &$params, $offset =0) | ||
| سطر ۱۲: | سطر ۱۷: | ||
4) onContentAfterDisplay($context, &$item, &$params, $offset=0) | 4) onContentAfterDisplay($context, &$item, &$params, $offset=0) | ||
</source> | </source> | ||
| − | item$ یک رفرنس (اشاره گر) به مطلب که در view است. | + | |
| − | params$ یک رفرنس به آرایه مربوط به پارامترها است. | + | |
| − | offset$ یک متغیر '''integer''' است که تعیین کننده | + | item$ یک رفرنس (اشاره گر) به مطلب که در view است. |
| − | context$ یک متن است برای جایی که این رویداد (event) شروع به کار | + | |
| + | params$ یک رفرنس به آرایه مربوط به پارامترها است. | ||
| + | |||
| + | offset$ یک متغیر '''integer''' است که تعیین کننده صفحهای از مطالب است که باید نمایش داده شود. | ||
| + | |||
| + | context$ یک متن است برای جایی که این رویداد (event) شروع به کار میکند. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
(example,'com_content.article') | (example,'com_content.article') | ||
</div> | </div> | ||
| − | [[پلاگین]] | + | |
| + | [[پلاگین]]های محتوا (content plugin) از com_content اجرا میشوند و نحوه اجرا شدن و فراخوانی آنها همانند دستور ذیل است: | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$this->params, $offset)); | $results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$this->params, $offset)); | ||
</source> | </source> | ||
| − | شما | + | |
| + | |||
| + | شما میتوانید کد بالا را جهت اجرای [[پلاگین]] محتوا در Root\components\com_content\views\article در فایل view.html.php و در کلاس ContentViewArticle مشاهده کنید. | ||
| + | |||
=ایجاد یک پلاگین= | =ایجاد یک پلاگین= | ||
| − | کلاس [[پلاگین]] باید همانند | + | |
| + | کلاس [[پلاگین]] باید همانند: | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
plg<PluginType><PluginName> | plg<PluginType><PluginName> | ||
</div> | </div> | ||
| − | + | ||
| − | + | نام گذاری شود. | |
| − | + | ||
| − | + | بنابراین در این مقاله ما نام [[پلاگین]] مان را '''plgContentHelloworldPlugin''' قرار میدهیم. | |
| − | + | ||
| − | در این مثال ما از رویداد ()onContentPrepare استفاده | + | کلاس [[پلاگین]] شامل یک کانستراکتور (constructor) است که کلاس پدر کانستراکتور را فراخوانی میکند، کلاس پدر کانستراکتور خود نوعی از کلاس '''JPlugin''' است و همچنین کلاس [[پلاگین]] شامل یک تابع event handler است که در هنگام رویدادن event مورد نظر اجرا خواهد شد. |
| + | |||
| + | در این مثال ما از رویداد ()onContentPrepare استفاده میکنیم. که هنگام آماده شدن مطلب برای نمایش این رویداد فراخوانی میشود. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
class plg<PluginType><PluginName> extends JPlugin | class plg<PluginType><PluginName> extends JPlugin | ||
| سطر ۵۰: | سطر ۷۳: | ||
</source> | </source> | ||
| − | برای دریافت عنوان مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده | + | |
| + | |||
| + | برای دریافت عنوان مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده میکنیم: | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$title = &$article->title; | $title = &$article->title; | ||
</source> | </source> | ||
| − | برای دریافت متن مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده | + | |
| + | |||
| + | برای دریافت متن مطالب ما از پارامتر article$ در onContentPrepare به صورت زیر استفاده میکنیم: | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$text = &$article->text; | $text = &$article->text; | ||
</source> | </source> | ||
| − | '''نکته :''' توجه داشته باشید که در دستورات بالا از عملگر & استفاده شده است این عملگر برای گرفتن یک رفرنس یا اشاره گر است. بنابراین ما | + | |
| + | |||
| + | '''نکته :''' توجه داشته باشید که در دستورات بالا از عملگر & استفاده شده است این عملگر برای گرفتن یک رفرنس یا اشاره گر است. بنابراین ما میتوانیم article->$text; به text$ تغییر دهیم. ما در این [[پلاگین]] تصمیم داریم یک متن قبل از عنوان مطلب ‘Helloworld Before Title’ و یک متن بعد ‘Helloworld After Title’ از عنوان مطلب نمایش دهیم. با استفاده از عملگر الحاق رشته این کار را همانند دستورات زیر میتوانیم انجام دهیم. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$title = 'Helloworld Before Title'.$title.' Helloworld After Title'; | $title = 'Helloworld Before Title'.$title.' Helloworld After Title'; | ||
</source> | </source> | ||
| − | همین کار را | + | |
| + | |||
| + | همین کار را میتوانیم برای محتوای مطالب همانند شکل زیر انجام دهیم. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
$text = 'Helloworld Before Text'.$text.' Helloworld After Text'; | $text = 'Helloworld Before Text'.$text.' Helloworld After Text'; | ||
</source> | </source> | ||
| − | = | + | |
| − | + | =فایلهای پلاگین= | |
| − | + | ||
| − | + | #helloworldPlugin.php این فایل, فایل اصلی [[پلاگین]] است. زمانیکه که رخداد مورد نظر اتفاق افتاد کدهای موجود در این فایل باید اجرا شوند. | |
| − | + | #helloworldPlugin.xml این فایل حاوی اطلاعاتی در مورد [[پلاگین]] است و همچنین شامل اطلاعات مربوط به نصب این [[پلاگین]] نیز میباشد. | |
| + | |||
==ایجاد فایل helloworldPlugin.php== | ==ایجاد فایل helloworldPlugin.php== | ||
| + | |||
تمام کد فایل helloworldPlugin.php شامل | تمام کد فایل helloworldPlugin.php شامل | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| سطر ۹۹: | سطر ۱۴۲: | ||
?> | ?> | ||
</source> | </source> | ||
| − | + | ||
| + | |||
| + | میباشد. | ||
| + | |||
==ایجاد فایل helloworldPlugin.xml == | ==ایجاد فایل helloworldPlugin.xml == | ||
| + | |||
تمام کد فایل helloworldPlugin.xml شامل | تمام کد فایل helloworldPlugin.xml شامل | ||
| + | |||
| + | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
| سطر ۱۲۱: | سطر ۱۷۰: | ||
</source> | </source> | ||
| − | + | ||
| + | |||
| + | میباشد. | ||
| + | |||
==ایجاد فایل index.html == | ==ایجاد فایل index.html == | ||
| + | |||
تمام کد فایل index.html شامل | تمام کد فایل index.html شامل | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<html><body bgcolor="#FFFFFF"></body></html> | <html><body bgcolor="#FFFFFF"></body></html> | ||
</source> | </source> | ||
| − | است. که یک صفحه خالی را نمایش | + | |
| + | |||
| + | است. که یک صفحه خالی را نمایش میدهد. | ||
| + | |||
=ایجاد بسته نصبی= | =ایجاد بسته نصبی= | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | همینک باید یک فایل '''zip''' از فولدر '''helloworldPlugin''' بسازید که شامل فایلهای زیر باشد. | |
| − | + | ||
| − | + | <div dir="ltr"> | |
| + | #helloworldPlugin.php | ||
| + | #index.html | ||
| + | #helloworldPlugin.xml | ||
</div> | </div> | ||
| − | فایل zip ساخته شده در این مرحله | + | |
| − | + | فایل zip ساخته شده در این مرحله میتواند از طریق مدیریت افزونه ها در [[جوملا]] نصب گردد. | |
| − | بعد از نصب [[پلاگین]] فوق [[پلاگین]] helloworldPlugin Content Plugin در قسمت مدیریت [[پلاگین]] | + | |
| + | بعد از نصب [[پلاگین]] فوق [[پلاگین]] helloworldPlugin Content Plugin در قسمت مدیریت [[پلاگین]]ها باید قابل مشاهده باشد. | ||
| + | |||
| + | |||
[[پرونده:Helloworldcontentplugin.jpg |center|frame ]] | [[پرونده:Helloworldcontentplugin.jpg |center|frame ]] | ||
| − | تنها کاری که باید بکنید اینست که [[پلاگین]] فوق را فعال (enabled) کنید و نتیجه را در یک مطلب [[جوملا]] مشاهده کنید. همانطور که همانند شکل زیر مشاهده | + | |
| + | |||
| + | تنها کاری که باید بکنید اینست که [[پلاگین]] فوق را فعال (enabled) کنید و نتیجه را در یک مطلب [[جوملا]] مشاهده کنید. همانطور که همانند شکل زیر مشاهده میکنید متنهای article title و article text به همراه کلمه helloworld به عنوان و متن مطالب الحاق شدهاند. | ||
| + | |||
| + | |||
[[پرونده:Helloworldcontentplugin res.jpg |center|frame ]] | [[پرونده:Helloworldcontentplugin res.jpg |center|frame ]] | ||
| + | |||
| + | |||
به این شکل شما قادر خواهید بود که محتوای مطالب را با استفاده از content plugin ها تغییر دهید. | به این شکل شما قادر خواهید بود که محتوای مطالب را با استفاده از content plugin ها تغییر دهید. | ||
| سطر ۱۵۷: | سطر ۲۲۲: | ||
{{کپی رایت}} | {{کپی رایت}} | ||
| − | [[رده: | + | [[رده:پلاگین جوملا 2.5]] [[رده: سوالات متداول جوملا 2.5]] [[رده: کدنویسی و گسترش جوملا 2.5]][[رده: مقالات جوملا 2.5]] |
نسخهٔ کنونی تا ۱۳ ژوئیهٔ ۲۰۱۳، ساعت ۰۸:۲۴
محتویات
مقدمه
در این مقاله، آموزش پلاگین نویسی جوملا تصمیم داریم یک پلاگین 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>
فایلهای پلاگین
- helloworldPlugin.php این فایل, فایل اصلی پلاگین است. زمانیکه که رخداد مورد نظر اتفاق افتاد کدهای موجود در این فایل باید اجرا شوند.
- 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 بسازید که شامل فایلهای زیر باشد.
- helloworldPlugin.php
- index.html
- helloworldPlugin.xml
فایل zip ساخته شده در این مرحله میتواند از طریق مدیریت افزونه ها در جوملا نصب گردد.
بعد از نصب پلاگین فوق پلاگین helloworldPlugin Content Plugin در قسمت مدیریت پلاگینها باید قابل مشاهده باشد.
تنها کاری که باید بکنید اینست که پلاگین فوق را فعال (enabled) کنید و نتیجه را در یک مطلب جوملا مشاهده کنید. همانطور که همانند شکل زیر مشاهده میکنید متنهای article title و article text به همراه کلمه helloworld به عنوان و متن مطالب الحاق شدهاند.
به این شکل شما قادر خواهید بود که محتوای مطالب را با استفاده از content plugin ها تغییر دهید.
جمع آوری شده توسط :شهاب مطاع پور
|
|

