Виджет - это виджет yii, который регистрируется в системе и может быть вставлен в разные места шаблона с помощью конфигурации наборов виджетов.
Класс виджета можно создать с помощью gii выбрав в меню Разработка -> gii (пароль по умолчанию 123) -> YginWidget Generator.
Далее созданный класс необходимо зарегистрировать в системе. Для этого переходим в меню Разработка -> Интерфейс php-скрипта -> Контент модуля сайта:
В php-скриптах создаем новый экземпляр:
- id - уникальный строковый ИД, например, project-my-widget
- Название скрипта - например, Мой виджет
- Активен - будет ли доступен скрипт для использования в виджетах в системе (подробнее см. ниже)
- Алиас - yii-алиас класса виджета
Теперь мы можем создать экземпляр виджета в системе на базе зарегистрированного класса. Для этого переходим в меню Контент -> Виджеты » Виджеты сайта. Рядом с кнопкой создать нажимаем на стрелку внизу и в выпадающем списке выбираем наш скрипт. Можно создать несколько экземпляров виджета, т.к. каждый экземпляр может обладать своими уникальными параметрами. Параметры виджета - это стандартные public-переменные класса виджета (или соответствующие сеттеры/геттеры). Чтобы система о них узнала, класс виджета должен расширять интерфейс IParametersConfig
.
Интерфейс IParametersConfig
содержит один метод getParametersConfig, который описывает параметры виджета:
public static function getParametersConfig() { return array( 'maxNews' => array( 'type' => DataType::INT, 'default' => 3, 'label' => 'Количество отображаемых новостей', 'required' => true, ), ); }
В данном примере описано обязательное свойство числового типа maxNews, имеющее подпись "Количество отображаемых новостей" и по умолчанию равное 3. Теперь при создании экземпляра виджета отобразится это свойство:
Свойств для управления через систему может и не быть. В этом случае ваш виджет может не расширять интерфейс и будет представлять из себя обычный виджет на yii.
После создания экземпляра виджета можно заняться размещением его на лейауте.
Представление виджета и его переопределение
Что надо сделать чтоб виджет и его ресурсы появились в /override ??