Hướng dẫn tạo một widget cơ bản với addon [bd] Widget Framework

Bài viết này sẽ hướng dẫn tạo một widget cơ bản với addon [bd] Widget Framework.

1. Đầu tiên, bạn phải bật debug, tạo 1 addon trong ACP. Tiếp theo, tạo 1 folder bên trong folder library
library
–TenFolderCuaBan
—-Listener.php //Tạo file Listener.php nằm trong folder TenFolderCuaBan
—-WidgetRenderer //Tạo folder WidgetRenderer nằm trong folder TenFolderCuaBan
——–TenWidgetCuaBan.php //Tạo file TenWidgetCuaBan.php nằm trong folder WidgetRenderer.
2. Nội dung file Listener.php

<?php
class TenFolderCuaBan_Listener
{
    public static function WidgetFrameworkReady (array &$renderers)
    {
        $renderers[]= "TenFolderCuaBan_WidgetRenderer_TenWidgetCuaBan";
    }
}

3. Tạo một Code Event Listener để XenForo lắng nghe class này.

Bạn vào Development > Code Event Listeners 

Ấn vào Create new Code Code Event Listeners
Thu được hình bên dưới
Listen to Event: widget_framework_ready
Execute Callback: TenFolderCuaBan_Listener::WidgetFrameworkReady
Addon: Chọn addon mà bạn đã tạo.
Sau đó save lại.
widget framework3. Nội dung file TenWidgetCuaBan.php

<?php
class TenFolderCuaBan_Listener extends WidgetFramework_WidgetRenderer
{
//4 hàm dưới đây bắt buộc có
    protected function _getConfiguration()
    {
        return array(
            'name' => 'Node In Sidebar', //Là cái Renderer ở hình bên dưới
            'useCache' => true, //Sử dụng Cache cho widget của bạn, nếu không muốn dùng, để là false
            'useUserCache' => true,
            'cacheSeconds' => 3600, // Thời gian lưu Cache
        );
    }
/*Hàm này sẽ hiển thị các Options mà bạn tạo ra trong 1 template. Nếu không dùng để là false.
Bạn có thể xem các vị dụ về hàm này trong các file php trong thư mục WidgetFramework/WidgetRenderer
*/
    protected function _getOptionsTemplate()
    {
        return false;
    }

    protected function _getRenderTemplate(array $widget, $positionCode, array $params)
    {//TemplateChuaNoiDungWidgetCuaBan là tên template do bạn tạo ra, chứa nội dung widget của bạn.
        return 'TemplateChuaNoiDungWidgetCuaBan';
    }

    protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject)
    {
        //Khai báo biến
        $liltee = 'Ten toi la Tuan';

        /*Truyền biến $liltee vào trong template TemplateChuaNoiDungWidgetCuaBan.
Trong template đó, {$tentoi} sẽ hiển thị Ten toi la Tuan*/
        $renderTemplateObject->setParam('tentoi', $liltee);

        return $renderTemplateObject->render();
    }
}

widget framework2

 

Leave a Reply

Your email address will not be published. Required fields are marked *