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
<?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(); } }