Сделал плагин для табов. Сами по себе эти табы не проблема, тем более, что они уже стандартно входят в jQuery UI (он в комплекте MaxSite CMS). Но мне хотелось сделать так, чтобы эти табы можно было настраивать как обычный виджет.
Проблема в том, что содержимое таба это какая-то php-функция. Можно конечно просто выводить какой-то статический текст, но мне такой вариант не интересен. Насколько я знаю, даже в некоторых WordPress-шаблонах данная проблема решена «в лоб»: функции для табов явно прописаны в шаблоне или виджете. То есть например поменять порядок или сами функции можно только изменив исходный php-код. Мне такой подход не нравится, поэтому я придумал другую схему.
Вариант 1. Используем Ушки
Прежде всего для содержимого таба я решил использовать плагин Ушки. Поскольку ушкой может быть любой код, включая и php, то отпала необходимость изобретать велосипед.
Схема до безобразия простая.
Вначале активируем плагины «Tabs» и «Ушки». Располагаем виджет табов в сайдбаре. В самом виджете таба указывает названия табов и названия ушек, например так:
Метки | таб-метки Рубрики | таб-рубрики Цитата | таб-цитата
Разделитель - «|».
Далее идем в Ушки (в Плагины) и создаем ушки «таб-метки», «таб-рубрики» и «таб-цитата». Во всех ушках ставим тип «PHP».
Теперь наша задача прописать код в ушках. Поскольку все наши функции это виджеты, то мы можем просто ими воспользоваться. Имена функций можно посмотреть на странице «Сайдбары и виджеты» или в коде виджетов. В большинстве случаев функции вывода будут формата: «виджет_widget_custom».
Код для ушки «таб-метки»:
<?php echo tagclouds_widget_custom(array(), 999); ?>
Код для ушки «таб-рубрики»:
<?php echo catclouds_widget_custom(array(), 999); ?>
Код для ушки «таб-цитата»:
<?php echo randomtext_widget_custom(array(), 999); ?>
Как видите у всех стандартный формат вызова. Для того, чтобы кастомизировать вывод можно в первом параметре (массив) указать нужные параметры. Естественно, эти параметры зависят от конкретного виджета и их следует уже смотреть в файле плагина.
Второй параметр - номер виджета. Если указать скажем 1, то будут использоваться настройки (точнее кэш) первого виджета данной функции. Поэтому я указал несуществующий 999.
В общем-то можно пойти и на хитрость: вначале настроить виджет как обычно, а потом просто указать его номер. Но в этом случае вам нужно вызывать функцию «виджет_widget», где указать единственный параметр - номер виджета.
Для того, чтобы изменить внешний вид таба нужно редактировать файл tabs.css. Сами табы отображаются в виде картинки tabs.png. Все эти файлы находятся в каталоге плагина /to_template/ и их необходимо скопировать в каталог шаблона.
Вариант 2. Используем Виджеты
Можно сразу указать функцию виджета. Для этого в сайдбаре расположим виджеты для табов. Нужно только указать номер и условие = false:
category_widget 20 links_widget 20 false catclouds_widget 20 false
Условие «false» указывается для того, чтобы виджет никогда не отображался в сайдбаре. Но при этом мы можем настроить эти виджеты.
После этого в настройках виджета табов указываем функции виджетов и их номер:
Рубрики | category_widget 20 Ссылки | links_widget 20 Рубрики | catclouds_widget 20
Там же указываем, что мы используем функции виджетов, а не ушку.