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.
 3. Nội dung file TenWidgetCuaBan.php
3. 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();
    }
}
 
						