bestboy7

کمک در نوشتن یک پلاگین ساده

2 پست در این موضوع

سلام به اساتید عزیز

راستش من کمی با افزونه نویسی آشنا هستم ماژول و کامپوننت نوشتم اما پلاگین رو نه و نمیدونم ساختارش چه جوریه. از دوستان و اساتید اگه آموزشی دارند که کمک کنه ممنون میشم معرفی کنند البته از درون سایت رسمی آموزش جوملا (http://docs.joomla.org/) یه چیزایی خوندم اما متوجه نشدم که چه فایلایی میخواد و هر فایل چه کدهایی باید وارد بشه.

از دوستان اگه لطف کنند یه مثال ساده با فایلهای مربوطه اگه دارند بفرستند که یه پلاگین ساده مطلب ایجاد کنه که:

فرض: یک جدول درون دیتابیس داریم که فیلدهای آی دی، نام، نام خانوادگی افراد درونش وجود داره. حالا اگه درون متن مطلب کد زیر رو بنویسیم

{pluginname view=first|id=10}

و بیاد از جدول مربوطه برای فرد با آی دی 10 نام رو درون کد زیر درون متن نمایش بده

<div>
name: xxxxxx
</div>

و اگه کد پلاگین زیر رو درون متن زدیم:

{pluginname view=last|id=10}

خروجی نمایش درون متن بر اساس کد زیر باشه

<div>
last name: yyyyy
</div>

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

ممنون میشم اگه کسی کمک کنه

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket

باید پلاگین از نوع content بنویسید ... در ساده ترین حالتش برات توضیح میدم بقیه با خودت!

فرض کن یک پلاگین میخام بنویسم بنام P30ads که با درج کد {p30adsdisplay} توی مطلب اون رو تبدیل کنه به یک تصویر (یا چیزی از دیتابیس بخونه و نمایش بده)

فایلهای زیر رو تو یک پوشه بساز:

p30ads.php

p30ads.xml

داخل فایل p30ads.php فقط کد زیر رو قرار بده خالی نباشه!

<?php echo 'salam'?>

داخل فایل p30ads.xml کدهای زیر رو قرار بده:

<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="content" method="upgrade">
   <name>P30 ads</name>
   <version>1.0.0</version>
   <license>non-commercial</license>
   <author>joomlairan.com - Abolfazl Talebi</author>
   <authorEmail>abimanager@gmail.com</authorEmail>
   <authorUrl>http://joomlairan.com</authorUrl>
   <copyright>Copyright (C) 2013 joomlairan. All rights reserved.</copyright>
   <creationDate>2013</creationDate>
   <description>پلاگین نمایش تبلیغ</description>    


   <files>
       <filename plugin="p30ads">p30ads.php</filename>
   </files>




   <config>
       <fields name="params" >




           <fieldset name="advance">

             <field name="image" type="media" label="انتخاب تصویر" />

           </fieldset> 




       </fields>       
   </config>            


</extension>

حالا زیپشون کن و نصب کن

بعد از نصب میری تو مسیر زیر و فایل p30ads.php رو باز میکنی :

plugins/content/p30ads/p30ads.php

بعد کدهای زیر رو توش قرار بده:

<?php

defined ('_JEXEC') or die();

jimport('joomla.pugin.plugin');
jimport('joomla.html.parameter');


class plgContentP30ads extends JPlugin
{

   public function onContentPrepare ($context , &$article , &$params , $page=0)
   {


       //echo var_dump($article);



        $regex = '/{p30adsdisplay}/i';

        $matches = array();
        preg_match_all($regex ,$article->text , $matches);


       $image = $this->params->get('image');

       $image = plgContentP30ads::generateCode($image);


       foreach ($matches[0] as $item)
       {

           $article->text = preg_replace($regex , $image , $article->text);
       }


   }




   function generateCode($image)
   {


       $image = '<img src="'.$image.'" />' ;

       return $image;


   }

}


?>

در کدهای بالا اینها رو داریم :

         $regex = '/{p30adsdisplay}/i';

این عبارتی هست که میخام در مطلب دنبالش بگردم و از RegExp استفاده کردم

         preg_match_all($regex ,$article->text , $matches);

با این خط دنبال عبارت {p30adsdisplay} در متن باز شده توسط کاربر میگردم و یک آرایه درست میکنم

        foreach ($matches[0] as $item)
       {

           $article->text = preg_replace($regex , $image , $article->text);
       }

تو این خط هم هر چی پیدا شد با مقدار $image جایگرین میکنم .. حالا من $image یک تصویر قرار دادم شما بردار بجاش چیز دیگه بزار!

اگر بخای به صورت {pluginname view=first|id=10} کد تولید کنید باید RegExp خودت رو گسترش بدی!

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری