- 12.05.15
- 21:44
- 2253
- 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]— хеш с номером виджета.
 
                            