- 12.05.15
- 21:44
- 1226
- 0
Задача: сайдбары темы должны поддерживать несколько вариантов оформления виджетов (см. рис.) Соответствие вариантов виджетам задано в виде двухуровневого хеша:
id сайдбара => id_base типа виджета => вариант оформления
.
Т. е. режим отображения виджета следует получать так:
1 2 |
$mode_id = $a_widget_modes[$sidebar_id][$id_base]; $mode = $AVAILABLE_MODES[$mode_id]; |
Все режимы являются частью шаблонов (содержат фрагменты вёрстки) и не имеют настраиваемых параметров. Поэтому они заданы в виде массива $AVAILABLE_MODES
прямо в коде темы.
Массив соответствия вариантов виджетам $a_widget_modes
является настраиваемым и каким-либо образом задаётся администратором.
Решение задачи сводится к коррекции передаваемых виджету параметров сайдбара before_widget
, after_widget
, before_title
и after_title
.
Корректировка проводится фильтром 'dynamic_sidebar_params'
. Фильтруемым значением является числовой массив, содержащий два элемента:
[0]
— параметры сайдбара, идентификатор и имя виджета;[1]
— хеш с номером виджета.