1. An Nguyen

    An Nguyen bụi Ban quản trị

    1/9/18
    #1
    Bài viết này hướng dẫn mọi người cách tạo 1 widget đơn giản cho [bd] Widget Framework và tích hợp vào addon của bạn.

    Tạo addon

    1. Bật chế độ debug, mở file library/config.php và thêm dòng $config['debug'] = true;
    2. Vào trang /admin.php?development/, nhấn Create Add-on để tạo 1 addon với thông tin có dạng:

    Ở đây mình tạo 1 addon để hiện ngày giờ hiện tại, và hỗ trợ widget trong Widget Framework

    upload_2018-9-1_14-48-48.png


    Tạo listener

    Việc tạo Listener để lắng nghe các sự kiện mà XF gửi đến cho nó.
    1. Tạo folder chứa addon gồm các file như sau"
    2. Thêm nội dung file
    Listener.php
    PHP:
    1. <?php
    2. class nvTimeNow_Listener
    3. {
    4.     public static function WidgetFrameworkReady (array &$renderers)
    5.     {
    6.         $renderers[]= "nvTimeNow_WidgetRenderer_nvTimeNowWidget";
    7.     }
    8. }
    3. Tạo một Code Event Listener để XenForo lắng nghe class này.

    Vào trang Development > Code Event Listeners, nhấn Create New Code Event Listener, nhập thông tin như sau:
    upload_2018-9-1_17-44-59.png


    4. Mở file nvTimeNowWidget.php và thêm nội dung dạng như sau:
    PHP:
    1. <?php
    2. /** Widget Renderer **/
    3. class nvTimeNow_WidgetRenderer_nvTimeNowWidget extends WidgetFramework_WidgetRenderer
    4. {
    5.   /** Default title **/
    6.   public function extraPrepareTitle(array $widget)
    7.   {
    8.     if (empty($widget['title']))
    9.     {
    10.       return new XenForo_Phrase('date_time_now');
    11.     }
    12.  
    13.     return parent::extraPrepareTitle($widget);
    14.   }
    15.   /** Info widget **/
    16.   protected function _getConfiguration()
    17.   {
    18.     return array(
    19.       'name' => '[NV] Time Now',
    20.       'useWrapper' => false,
    21.     );
    22.   }
    23.  
    24.   /** Option widget neu co **/
    25.   protected function _getOptionsTemplate()
    26.   {
    27.     return false;
    28.   }
    29.  
    30.   /** Template widget **/
    31.   protected function _getRenderTemplate(array $widget, $positionCode, array $params)
    32.   {
    33.     return 'nv_timenow';
    34.   }
    35.  
    36.   /**  **/
    37.   protected function _render(
    38.     array $widget,
    39.     $positionCode,
    40.     array $params,
    41.     XenForo_Template_Abstract $renderTemplateObject
    42.   ) {
    43.     return $renderTemplateObject->render();
    44.   }
    45. }

    Kết quả

    Vào trang /admin.php?widgets, nhấn Add Widget lúc này bạn sẽ thấy thêm 1 mục là [NV] Time Now
    upload_2018-9-1_17-53-45.png

    Chúc các bạn thành công :emoji_grin:
     
    Sửa lần cuối: 3/9/18
    Đang tải...
Đã lưu nháp Draft deleted
Đang tải...