Добавление виджета на сайт

Технология виджетов была придумана для облегчения и упрощения создания сайтов.

Виджет — это блок, который реализует определенную законченную функциональность.

Вся нижеследующая информация актуальна для FastsiteCMS v3.21.0 и выше

В PHP:

Все виджеты наследуют базовый класс \Cetera\Widget\Widget

Чтобы получить виджет, следует пользоваться методом \Cetera\Application::getWidget(String <виджет>, Array <параметры виджета>)

Далее, для отображения виджета используются методы \Cetera\Widget\Widget::getHtml() или \Cetera\Widget\Widget::display()

Пример 1. Вывод списка материалов текущего раздела с помощью виджета List

// получим объект Application
$a = \Cetera\Application::getInstance();
 
// получаем требуемый виджет с заданными параметрами
$w = $a->getWidget(
    // название виджета
    'List', 
    // параметры виджета
    array(
        // раздел — текущий
        'catalog' => $a->getCatalog(),
    ),
);
 
// выводим виджет
$w->display();

Пример 2. То же самое, но более кратко, для боевого применения (подразумевается, что $a определена в bootstrap.php)

$a->getWidget('List',array('catalog' => $a->getCatalog()))->display();

В Twig

Можно организовать показ виджета прямо в twig-шаблоне используя тег {% widget %} в шаблонах:

{% widget 'List' with { catalog: application.getCatalog() } %}

Шаблоны виджетов

Очевидно, что не всегда html-код, генерируемый виджетом, будет отвечать потребностям конкретного сайта. Поэтому большинство виджетов используют шаблоны, которые отвечают за то, какой html будет генерировать виджет. У разработчика есть возможность изменить этот шаблон под свои нужды. Для того, чтобы использовать свой шаблон вывода, нужно передать в параметре template имя файла с требуемым шаблоном. Шаблоны по умолчанию виджетов в составе ядра cms расположены в каталоге vendor/cetera-labs/cetera-cms/cms/twig_templates/widgets