Шаблонные виджеты — это файлы-шаблоны, которые могут включаться в другие шаблоны. Исполняемые виджеты — это те, где нужно выполнение PHP-кода. Это может быть обращение к базе данных, какая-то обработка и пр.
Шаблонные виджеты
Как уже писал, шаблонные виджеты просто вставляются в другие шаблоны. Например, это могут быть счетчики, какие-то javascript-коды и т.д.Оформляются они как обычные файлы шаблона, только именуются специальным образом и лежат в определенном месте. Допустим, у нас есть плагин Dummy и мы хотим создать для него шаблонный виджет под названием Foo. Для этого нужно создать файл widget.foo.tpl в папке /plugins/dummy/templates/skin/default/widgets/. И этот шаблон можно потом подключать такой командой:
$config['widgets'][] = array(
'name' => 'foo.tpl', // шаблонный виджет
'group' => 'right',
'plugin' => 'dummy',
);
Можно создать шаблонный виджет для конкретного скина, тогда путь к нему должен содержать имя этого скина. Например тот же шаблонный виджет для скина Synio будет лежать в папке /plugins/dummy/templates/skin/synio/widgets/.
Исполняемые виджеты
Исполняемые виджеты должны оформляться в виде PHP-класса, который наследуется от родительского класса Widget и их код выглядит примерно так:class PluginDummy_WidgetFoo extends Widget {
public function Exec() {
// Здесь код плагина
}
}
И этот код должен находится в файле /plugins/dummy/classes/widgets/WidgetFoo.class.php — это виджет Foo плагина Dummy.
$config['widgets'][] = array(
'name' => 'foo', // исполняемый виджет
'group' => 'right',
'plugin' => 'dummy',
);
Чтобы исполняемый виджет мог чего-то вывести на страницу, ему нужен шаблон. Но тут все просто — для исполняемого виджета Foo создается шаблон, который оформляется точно так же, как и шаблонный виджет выше, т.е. в файле /plugins/dummy/templates/skin/default/widgets/widget.foo.tpl
Вставка виджета плагина в шаблон
В версии 0.9.7.1 и выше это можно сделать, определив в описании виджета группу, а потом задав эту группу в коде шаблона. Например, если мы хотим, чтобы виджет плагина выводился в группе виджетов «right», мы можем в файле конфигурации плагина /plugins/dummy/config/config.php записать:$config['widgets'][] = array(
//'id' => 'asd',
'name' => 'foo', // шаблонный виджет
'wgroup' => 'right',
'priority' => 'top',
'plugin' => 'dummy',
);
А в самом шаблоне, где эти виджеты надо выводить, запишем:
{wgroup group="right"}
И в этом месте страницы будут выведены все виджеты (как виджеты приложения, так и виджеты активных плагинов), у которых в параметрах стоит 'wgroup' => 'right'. Конечно, при этом будут учитываться и условия вывода виджетов, если они заданы, но это уже тема для другой статьи.
Дополнение для версии 1.1.+
В версии 1.1 и выше рекомендуется задавать идентификатор виджета при его определении в конфиге, вот так:$config['widgets']['foo'] = array(
'name' => 'foo', // шаблонный виджет
'wgroup' => 'right',
'priority' => 'top',
'plugin' => 'dummy',
);
Т.е. не пустые квадратные скобки, а с идентификатором.
1. Создаю файл simpletpl/widgets/WidgetSimpleTopicsTop.class.php
2. вот его код
3.Далее в шаблоне пытаюсь вывести его:
4. В итоге ошибка