Виджет - это виджет yii, который регистрируется в системе и может быть вставлен в разные места шаблона с помощью конфигурации наборов виджетов.

Класс виджета можно создать с помощью gii выбрав в меню Разработка -> gii (пароль по умолчанию 123) -> YginWidget Generator.

Далее созданный класс необходимо зарегистрировать в системе. Для этого переходим в меню Разработка -> Интерфейс php-скрипта -> Контент модуля сайта:

screen04.jpg

В 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. Теперь при создании экземпляра виджета отобразится это свойство:

screen05.jpg

Свойств для управления через систему может и не быть. В этом случае ваш виджет может не расширять интерфейс и будет представлять из себя обычный виджет на yii.

После создания экземпляра виджета можно заняться размещением его на лейауте.

16 июля 2013

Автор: Михаил Абрамов

Комментарии (1)

Добавить комментарий
  • Фёдор
    09.07.2015, 2:00:17

    Представление виджета и его переопределение

    На каком этапе создаётся шаблон представления виджета на фронтенде?
    Что надо сделать чтоб виджет и его ресурсы появились в /override ??