Меню сгенерированное модулем Taxonomy Menu с включённой опцией "Display number of items", выглядит следующим образом:
Задача — вынести число материалов из ссылок, т.е сделать что-то подобное:
Смотрится приятней :) Чтобы решить задачу мы добавим свою функцию предварительной обработки блока (preprocess функция), которая будет вызываться при генерации любого блока.
Открываем файл template.php в активной теме и добавляем в него следующий код:
/**
* Выносим из ссылок число записей
*/
function phptemplate_preprocess_block(&$vars) {
// обрабатываем только блок с меню, другие блоки не трогаем
if ($vars['block']->delta == 'menu-category') {
$vars['block']->content = preg_replace('#>(.*) \((\d+)\)</a>#isU', '>$1</a> ($2)', $vars['block']->content);
}
}
Системное название меню (delta) можно посмотреть в разделе управления меню, у меня это menu-category
Важно: чтобы функция phptemplate_preprocess_block
отрабатывала, нужно чтобы в папке темы лежал файл block.tpl.php, его можно скопировать из темы Garland.
Всё. Очищаем кэш и смотрим результат.
Написанное актуально для
Drupal 6
Комментарии
А как тоже самое сделать с меню, которое генерируется Ubercart? Крутил вертел, не получилось ничего. Грешу на системное название этого меню. Я его брал из адресной строки и звучит оно так: uc_catalog
узнать свойство delta у всех блоков можно например так:
ну и возможно придётся подправить регулярное выражение, с уберкартом ещё не работал.
Возможно делаю что-то не то. Никакой реакции код не дал.
block.tpl.php в папке темы есть? кэш обновляли? в качестве шаблонизатора используется phpTemplate?
Звучит смешно, но все есть. Перепроверил по нескольку раз. Единственное что - шаблрнизатор не использовал. За основу брал тему Garland и ее лопатил
мистика. тогда дебагер в руки и F7, F7, F7... :)
а Garland на phpTemplate сделан, так что всё впорядке
Будешь смеяться. Я два дня убил на поиски проблемы. Потом случайно зашел на свой второй проект и обнаружен там интересный косяк на страницах в шапке. Оказывается я правил темплейт другого проекта, а проверял первый и результатов конечно не видел :) Перегрелся короче :)
Все заработало! Спасибо.
Правда свойство delta у уберкартовского меню смешное - "0" :)
А если в меню (термин) есть ещё подпункты (подтермин), то у верхнего термина показывается кол-во материалов только для этого термина, не суммируется с количеством материалов его подпунктов (вложенных терминов).
Можно ли это как-то подправить, чтобы было как в меню Уберкарта? Там у родителя показывается общее число материалов всех его подпунктов.
Сразу подумал что регуляркой все разрулится, но ой как не люблю писать регулярки, гуглил готовое решение, нагуглил твое, но твой код в template.php не агрился на delta =\ Возможно они в последних версиях taxonomy menu переписали код слегка.
Ну и так как я в основном блоки вывожу программно, то и тут решил вывести так же и уже вывод блока прокрутить через регулярку, получилось вот что:
пасиб за функцию :)
А для седьмого не работает.
Ошибка
Notice: Undefined property: stdClass::$content в названиятемы_preprocess_block() (рядок 12 із /home/misto/public_html/sites/all/themes/названиятемы/template.php).
Подскажите пожалуйста как для 7-ки это сделать! Очень надо!!!
Добавить комментарий