چگونه اولین ماژول پرستاشاپ خود رو بسازین؟

چگونه اولین ماژول پرستاشاپ خود رو بسازین؟

PrestaShop یک راه حل تجارت الکترونیکی ابتکاری و کارآمد با تمام ویژگی هایی است که برای ایجاد یک فروشگاه آنلاین و رونق کسب و کار خود به آن نیاز دارین.

اما اگه می خواهید چند ماژول سفارشی برای نمایش چیزی در وب سایت خود بسازین، چه می کنین؟

خوب، در این مقاله از مستر وب شما یاد خواهید گرفت که چگونه اولین ماژول PrestaShop خود رو بسازین که یک ویدیوی iframe رو از YouTube در صفحه اصلی شما نمایش بده.

سازنده و ساختار ماژول پرستاشاپ

باید پوشه ماژول خود رو در ریشه پوشه ای بنام “modules” ایجاد کنین.

این پوشه شامل همه ماژول های PrestaShop است.

حتی سبد خرید وب سایت و سایر ماژول های اساسی رو می توان در اینجا یافت.

با ایجاد یک فهرست جدید به نام youtube_video شروع کنین.

برای این ماژول، من از *PrestaShop v1.7.4 استفاده خواهم کرد.

ابتدا باید اولین بررسی رو انجام بدین تا دسترسی مستقیم به فایل php مسدود بشه و از exit () استفاده بشه.

پس از آن، باید کلاس ماژول خود رو با نام گذاری پوشه به نام Camel Case ایجاد کنین.

بنابراین، اگه نام پوشه ماژول شما youtube_video باشه، نام کلاس Youbube_Video خواهد بود.

در کلاس تازه ایجاد شده شما باید تابع ___ تابع ساخت {سازنده} (___ construct function (constructor)) رو مانند کد زیر ایجاد کنین.

سازنده اطلاعات اولیه خواهد داشت از جمله نام ماژول (دقیقاً مانند نام پوشه شما خواهد بود)، نسخه، نویسنده، محدوده سازگاری نسخه، توضیحات، پیام تأیید حذف نصب و نام نمایش برای PrestaShop’s BackOffice که در آن می تونین ماژول جدید خود رو نصب کنین.

به نظر خوب است، درسته؟ به زودی به آنجا خواهیم رسید.

php<?   

if (!defined(‘_PS_VERSION_’))    

    ;() exit     

class Youtube_Video extends Mo   

{

    ()public function __construct    

    {       

        ‘;this->name = ‘youtube_video$         

        ‘; this->tab = ‘front_office_features $         

      ‘; this->version = ‘1.0.0 $        

        ‘; this->author = ‘Assist Software $       

      ; this->need_instance = 1 $       

        ; this->ps_versions_compliancy = array(‘min’ => ‘1.7.1.0’, ‘max’ => _PS_VERSION_) $       

        ;this->bootstrap = true $     

  ؛ () parent::__construct     

  ;  this->displayName = $this->l(‘YouTube Video’, ‘youtube_video’) $    

      ; this->description = $this->l(‘This module is developed to display an YouTube video.’, ‘youtube_video’) $   

      ; this->confirmUninstall = $this->l(‘Are you sure you want to uninstall?’, ‘youtube_video’) $   

    }

 

سازنده در PHP چیست؟

سازنده در PHP5 معرفی شد و این روش صحیحی برای تعریف سازنده های شماست.

در PHP4 از نام کلاس برای سازنده استفاده شده است.

اکنون، لازم نیست که یک سازنده در کلاس خود تعریف کنین، اما اگه می خواهید پارامترهایی رو برای ساخت و ساز شیء عبور بدین، پس به یک سازنده نیاز دارین.

توابع نصب و حذف نصب

()public function install

{    

if (Shop::isFeatureActive())     

;Shop::setContext(Shop::CONTEXT_ALL)     

&&return parent::install()     

(this->registerHook(‘displayHome’)&& ;Configuration::updateValue(‘youtube_video_url’, ‘wlsdMpnDBn8’     

}    

() public function uninstall     

{

if (!parent::uninstall() || !Configuration::deleteByName(‘youtube_video_url’))

;return false

;return true

}

 

برای اینکه بتونین ماژول خود رو در PrestaShop’s BackOffice نصب کنین، باید 2 تابع دیگه ایجاد کنین: install () و uninstall ().

همانطور که در تابع نصب مشاهده می کنین، ما والد بازگشتی داریم: install () که تابع نصب والد رو فعال می کنه.

نکته مهم بعدیthis-> RegisterHook (‘displayHome’) $ است که الگوی ماژول ما رو در صفحه اصلی وب سایت پرستاشاپ قرار میده.

قلاب (Hook) در پرستاشاپ چیست؟

قلاب ها راهی برای مرتبط کردن کد شما با برخی از رویدادهای خاص PrestaShop است.

بیشتر اوقات، آن ها برای درج مطالب در یک صفحه استفاده میشن.

مکانی که اضافه خواهد شد (هدر، پاورقی، ستون چپ یا راست) به قلابی که انتخاب می کنین، بستگی داره.

همچنین از قلاب می توان برای انجام اقدامات خاص تحت شرایط خاص (به عنوان مثال ارسال ایمیل برای مشتری در هنگام ایجاد سفارش) استفاده کرد.

نام های قلاب دارای پیشوند “عمل” یا “نمایش” هستن.

این پیشوند نشان میده که قلابی توسط یک رویداد تحریک شده است یا برای نمایش محتوا از آن استفاده میشه:

  • اقدام <چیزی> (ناشی از رویدادهای خاصی که در پرستاشاپ اتفاق می افته)
  • نمایش <چیزی> (منجر به نمایش چیزی میشه، چه در قسمت جلویی یا عقب)

در عملکرد نصب، باید مقدار پیش فرض رو برای URL ویدیوی یوتیوب تعیین کنین، (که به شما امکان میده بعداً آن رو در صفحه پیکربندی Module ویرایش کنین).

هنگامی که می خواهید ماژول رو حذف نصب کنین، Configuration :: deleteByName متغیری رو حذف می کنه که URL یوتیب رو ذخیره می کنه.

فایل الگو

public function hookDisplayHome($params)

   < assign variables to template >//     

 )this->context->smarty->assign $ 

       array(‘youtube_url’ => Configuration::get(‘youtube_video_url’)      

;(   

   ; (   return $this->display(__FILE__, ‘youtube_video.tpl’)   

{

 

this-> RegisterHook (‘displayHome’)$ رو به خاطر دارین؟

اکنون زمان استفاده از آن در ماژول است.

ما “displayHome” رو ثبت کردیم، اما برای اینکه بتونیم از آن استفاده کنیم باید تابع رو در قالب بعدی اعلام کنیم:

اگه displayHome داشته باشیم نام تابع hookDisplayHome” ” خواهد بود (مراقب موارد نوشتاری باشین).

با استفاده از این تابع، می تونیم یک فایل الگو به نام youtube_video.tpl رو ضمیمه کنیم و متغیرها رو با استفاده از Smarty برای آن ارسال کنیم.

اسمارتی (Smarty) چیست؟

Smarty موتور الگویی برای PHP است.

به طور خاص، این موتور روش کنترل برای جدا کردن منطق و محتوای برنامه از ارائه آن رو آسان می کنه.

این بهترین توصیف در شرایطی است که برنامه نویس برنامه و طراح الگو نقش های مختلفی رو بازی می کنن یا در بیشتر موارد افراد یکسانی نیستن.

به عنوان مثال، ما متغیری به نام youtube_url رو به فایل .tpl خود ارسال خواهیم کرد.

مقدار متغیر با استفاده از Configuration :: get و نام پیکربندی که در تابع نصب استفاده کردیم، تنظیم خواهد شد.

برای ایجاد فایل الگو، باید از ساختار بعدی در پوشه ماژول خود مانند تصویر صفحه زیر استفاده کنین:

در فایل youtube_video.tpl که به تازگی ایجاد شده، از یکپارچه سازی iframe YouTube اما با استفاده از متغیر”youtube_url” استفاده می کنین که آن رو تابع hookDisplayHome اعلام کرده است.

با Smarty، می تونین متغیر رو با نوشتن آن مانند این {$youtube_url} در فایل .tpl استفاده کنین.

پس از انجام این کار، ماژول iframe رو در صفحه اصلی با URL YouTube داده شده، نمایش میده.

<div id=”custom-text”>

iframe width=”560″ height=”315″ src=”https://www.youtube.com/embed/{$youtube_url}?rel=0″ frameborder=”0″ allow=”autoplay; encrypted-media”<

>allowfullscreen></iframe

  • </div>

شکل پیکربندی

تا اینجا خوب پیش رفتین.

اما اگه می خواهید URL یوتیوب رو از صفحه پیکربندی ماژول تغییر بدین، باید کد دیگه ای رو یادداشت کنین.

برای تولید فرم پیکربندی از تابع displayForm” ” در ماژول استفاده کنین.

()public function displayForm

{

 < init fields for form array >//      

(fields_form[0][‘form’] = array $      

)input’ => array       

(array

‘label’ => $this->l(‘URL of the YouTube video’),      

‘name’ => ‘youtube_video_url’,        

‘lang’ => true ،        

‘size’ => 20,      

‘required’ => true

،(           

،(     

(‘submit’ => array       

‘title’ => $this->l(‘Save’),      

‘class’ => ‘btn btn-default pull-right’       

(

؛(

< load helperForm >// 

();helper = new HelperForm $    

 < module, token and currentIndex >//    

;helper->module = $this $    

;helper->name_controller = $this->name $      

;helper->token = Tools::getAdminTokenLite(‘AdminModules’) $        

;  helper->currentIndex = AdminController::$currentIndex.’&configure=’.$this->name $        

< title and toolbar >//          

;helper->title = $this->displayName $       

helper->show_toolbar = true;        // false -> remove toolbar $         

  helper->toolbar_scroll = true;      // yes – > Toolbar is always visible on the top of the screen. $          

; helper->submit_action = ‘submit’.$this->name $           

(helper->toolbar_btn = array $         

<=’save’                         

(array                  

‘desc’ => $this->l(‘Save’),                 

                ‘href’ => AdminController::$currentIndex.’&configure=’.$this->name.’&save’.$this->name.              

‘&token=’.Tools::getAdminTokenLite(‘AdminModules’),                    

)’back’ => array                

href’ => AdminController::$currentIndex.’&token=’.Tools::getAdminTokenLite(‘AdminModules’),                

‘desc’ => $this->l(‘Back to list’)           

(

(،   

    < load current value >// 

    ;helper->fields_value[‘youtube_video_url’] = Configuration::get(‘youtube_video_url’) $         

;return $helper->generateForm($fields_form)     

{

باید کد رو از تابع فوق درک کنین، زیرا این کدی است که ورودی مورد نیاز شما رو ایجاد می کنه.

آرایش فرم شامل علائم و اختصاراتی با عنوان است، آرایش دیگه ای هم وجود داره که در آن می تونین چندین ورودی متفاوت مانند متن، رمز ورود، ایمیل و غیره ایجاد کنین.

برای این ماژول،باید فقط یک قسمت برای URL مورد نیاز برای ویرایش ایجاد کنین.

نام فیلد مهمه، آن رو دقیقاً مانند پیکربندی اعلام کنین.

< init fields for form array >// 

) fields_form[0][‘form’] = array $ 

     ) ‘legend’ => array 

         ‘title’ => $this->l(‘YouTube Module’), 

     , ( 

    ) ‘input’ => array      

      )array       

       ‘type’ => ‘text’,   

     ‘label’ => $this->l(‘URL of the YouTube video’),  

              ‘name’ => ‘youtube_video_url’,    

            ‘size’ => 20,             

   ‘required’ => true       

   , (    

   ),   submit’ => array    

        ‘title’ => $this->l(‘Save’),  

          ‘class’ => ‘btn btn-default pull-right’ 

               );

 

در همان تابع ذکر شده در بالا، در انتهای آن، این قسمت از کد رو دارین.

این یکی برای نمایش مقدار فعلی URL ورودی است و از این طریق می تونین مقدار قبلی رو بدونین:

helper-> Field_value [‘youtube_video_url’]$ همان نام ورودی بالا رو خواهد داشت.

ما مقدار رو با استفاده از Configutation::get اختصاص میدیم تا مقدار فعلی URL یوتیوب رو دریافت کنیم.

  •  

< load current value >// 

; helper->fields_value[‘youtube_video_url’] = Configuration::get(‘youtube_video_url’) $

ذخیره داده از فرم پیکربندی

اکنون که فرم رو در صفحه پیکربندی ماژول دارین، باید آن رو به نوعی ذخیره کنین.

تابع getContent این ذخیره سازی رو امکان پذیر می کنه.

این تابع مقدار ورودی رو از فرم تولید شده با تابع  displayForm بدست میاره.

با استفاده از Tools :: getValue (‘youtube_video_url)، می تونین مقدار ورودی رو از فرم ارسالی دریافت کنین.

سپس، آن رو در متغیر پیکربندی با Configuration::updateValue ذخیره کنین.

()public function getContent

{  

;  output = null $   

   < here we check if the form is submited for this module >//  

 if (Tools::isSubmit(‘submit’.$this->name))

      ;  youtube_url = strval(Tools::getValue(‘youtube_video_url’)) $  

       < make some validation, check if we have something in the input >//  

      if (!isset($youtube_url))    

    ;   output .= $this->displayError($this->l(‘Please insert something in this field.’)) $ 

       else   

     {  

         < this will update the value of the Configuration variable >  //     

     ;   Configuration::updateValue(‘youtube_video_url’, $youtube_url)    

       < this will display the confirmation message > //  

        ;    output .= $this->displayConfirmation($this->l(‘Video URL updated!’)) $

      {  

  ()return $output.$this->displayForm

{

ماژول خود رو نصب و پیکربندی کنین

کد تمام شد، اما ماژول رو باید نصب و پیکربندی کنین.

ابتدا باید وارد BackOffice از PrestaShop بشین و به لیست ماژول ها دسترسی پیدا کنین.

اکنون ماژول”youtube video” رو جستجو کنین.

هنگامی که آن رو پیدا کردین، روی دکمه نصب کلیک کنین و ماژول در PrestaShop نصب میشه.

اکنون می تونین url ویدئو یوتیوب رو با تغییر مقدار ورودی و کلیک بر روی دکمه save ویرایش کنین.

نتیجه نهایی در صفحه اصلی شما

این نتیجه نهایی ماژول تازه ایجاد شده شماست.

موقعیت فعلی اکنون در انتهای صفحه اصلی است، اما شما می تونین با گزینه کشیدن و رها کردن در BackOffice پرستاشاپ موقعیت رو تغییر بدین تا در وهله اول آن رو نشان بدین.

نتیجه

نتیجه گیری برای این آموزش مبتدی در مورد “چگونه اولین ماژول PrestaShop خود رو بسازیم” اینه که اگه ساختار و نحوه کار قلاب ها رو درک کنین، ماژول های در حال توسعه در PrestaShop آسان خواهند بود.

شما باید اهمیت استفاده از نام مناسب برای پوشه ماژول و برای نام کلاس درک کنین.

استفاده از قلاب به شما امکان میده الگوهای سفارشی خود رو در هر کجا که می خواهید نمایش بدین و می تونین موقعیت صفحه رو نیز تغییر بدین.

اگر بخواهیم چیزی رو در مکانی که قلاب های PrestaShop وجود ندارن، به نمایش بگذاریم چه؟

در این حالت، می تونین نام قلاب سفارشی خود رو ثبت کنین و از آن به همان روش های پیش فرض با یک تذکر استفاده کنین:

شما باید با استفاده از Smarty قلاب سفارشی خود رو به صورت دستی در.tpl فایل های تم قرار بدین. و در آخر مطلب آموزش سئو پرستاشاپ رو هم در مستر وب حتما بخونید

چگونه اولین ماژول پرستاشاپ خود رو بسازین؟