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