Skip to content
Butschster edited this page Mar 30, 2014 · 1 revision

Создание виджета

Файловая структура:

Структура файлов подчиняется стандартным правилам Kohana.

	classes\model\widget\type.php //class Model_Widget_Type - путь до класса виджета
	OR
	classes\model\widget\type\underscore.php //class Model_Widget_Type_Underscore
	| 
	views\widgets\backend\type.php - путь до файла шаблона дополнительных настроек виджета
	OR
	views\widgets\backend\type_underscore.php
	|
	views\widgets\frontend\type.php - путь до файла шаблона по умолчанию для виджета
	OR
	views\widgets\frontend\type_underscore.php

В системе имеется два типа виджета, от которых можно наследовать свой класс:

  • Model_Widget_Decorator для любых типов виджетов
  • Model_Widget_Decorator_Pagination для виджетов, использующих постраничную навигацию и вывода списка.

Также вы всегда можете создать свой тип виджетов и использовать его.

Создание нового виджета начинается с конфига, все виджеты описываются в конфиг файле /config/widgets.php.

Например:

return array(
	__('Widget category') => array(
		// class Model_Widget_Super_widget
		// path classes\model\widget\super\widget.php
		'super_widget' => __('Super widget'), 
	),
);

Создание класса

Frontend часть

При наследовании своего класса от Model_Widget_Decorator вам необходимо реализовать абстрактный метод fetch_data(), который служит для передачи значений в шаблон виджета.

class Model_Widget_Test extends Model_Widget_Decorator {

	public function fetch_data()
	{
		return array(
			'param1' => 'abc 
		);
	}
}

В сниппете указаном в качестве шаблона виджета это значение получается как:

<?php echo $param1; // return "abc" ?>

При наследовании своего класса от Model_Widget_Decorator_Pagination вам необходимо также реализовать метод count_total(), которые делает подсчет общего кол-ва документов в разделе, используется виджететом постраничной навигаци для расчета кол-ва страниц.


Backend часть

Смотреть описание методов