Кастомизация виджетов

Рубрика: MaxSite CMS -> Ход работ
Воскресенье, 7 сентября 2008 г.
Просмотров: 4263
Подписаться на комментарии по RSS
]]>
]]>

Помню как страшный сон: однажды мне нужно было сделать сайт на WordPress, в котором виджеты использовали разное оформление. Оформление менялось довольно серьезно: чередовались вначале один фон/цвет, потом - другой. Тогда выкрутился так: в виджетах прописал свои хуки на которые прицепил static-переменную, по которой и отслеживал четность/нечетность и менял css-класс блока виджета.

Недавно возникла примерно такая же задача в одном из заказов на MaxSite CMS, только ситуация усложнилась в несколько раз. Вместо чередования, нужно оформить каждый виджет уникально. В одном есть рамка, в другом - нет. В одном UL-список нужно булечкой, в другом картинкой. Плюс во всех разные размеры шрифтов.

Обычно для таких задач я сразу отказываюсь от виджетного сайдбара и вручную прописываю виджеты в шаблоне. Всё-таки как-то сложилось так, что виджеты в сайдбарах обычно выглядят однотипно.

Но задача меня заинтересовала и я немного помозговал придумал как сделать так, чтобы каждый виджет получал уникальные css-классы.

Чтобы было понятно о чем речь, расмотрим как обычно оформляется виджет. В файлах sidebar-N.php можно указать HTML до и после виджета. На данный момент все виджеты обрамляются в div.widget.

Для того, чтобы определить скажем третий виджет во втором сайдбаре можно придумать класс div.widget_2_3. А для виджета последних записей указывать класс div.last_pages_widget.

В CSS всё это дело оформляется очень просто:

  1.  <div class="widget widget_2_3 last_pages_widget">...

То есть все классы мы просто указываем через пробел, а в style.css описываем по отдельности.

Таким образом, немного изменив систему я ввел для HTML до и после специальные замены:

  • [SB] - заменяется на номер/имя сайдбара
  • [NUMW] - заменяется на номер отображаемого виджета в сайбаре
  • [FN] - имя функции виджета
  • [NUMF] - номер виджета для этой функции (первый - 0)
Стандартно в дефолтном шаблоне теперь будет такой код:

  1.  <div class="widget widget_[SB]_[NUMW] [FN] [FN]_[NUMF]">

Например для второго виджета первого сайдбара, Последних записей (last_pages_widget) с номером 2 автоматом получится такой код:

  1.  <div class="widget widget_1_2 last_pages_widget last_pages_widget_2">

Что это дает в итоге. Практически безграничные возможности по кастомизации любого виджета.

Например можно для четных и нечетных сделать разное оформление. Для любого виджета можно использовать свои стили. Каждый виджет одной функции также может быть кастомизирован в индивидуальном порядке.

Получаются любые комбинации. smile

Данная возможность будет доступна в MaxSite CMS 0.21.

]]>twitter.com Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)