themee_menu_item () не работает
-
15-09-2020 - |
Вопрос
У меня есть тема Drupal под названием Wellington, расположенная в \ Sites \ All \ Themes \ Wellington.Я хочу переопределить функцию MENU_ITEM и следил за инструкциями на http://drupal.org/node/310356.
Я хочу добавить класс на Li, как описано.
Я попробовал название функции wellington_menu_item и попробовал phptemplate_menu_item, но не повезло.Я могу поставить операторы печати в функции, и они отображаются на экране.
Дополнительно я могу распечатать строку возврата непосредственно перед возвратой и ее правильной, но когда меню отображается, нет никакой разницы, его нормальный главный показатель, то есть нет переопределения.
Сама тема работает нормально, и я вижу CSS и HTML.
Обучал, любые идеи?
<?php
/**
* Theme override for theme_menu_item()
*/
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}
// Add unique identifier
static $item_id = 0;
$item_id += 1;
$id .= ' ' . 'menu-item-custom-id-' . $item_id;
// Add semi-unique class
$class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));
return '<li class="'. $class .'" id="' . $id . '">'. $link . $menu ."</li>\n";
}
?>
.
Это называется на странице .tpl.php, используя
<?php print theme('links', $primary_links); ?>
. Решение
Как вы упоминаете, что вы можете печатать строку результатов, прежде чем возвращать его, переопределения работают.Что я подозреваю, является то, что результат вашей функции на самом деле не используется при рендеринге.Возможно, потому что он хранится в переменме шаблона, которая затем переопределена с другим значением в функции предварительной обработки, называемой позже.
Я предлагаю вашему использованию Theme Developer Модуль для проверки того, какой шаблон / функция используется для рендераПункт меню.
Другие советы
Не забудьте опустошить кэш браузера и кэш Drupal, когда вы добавили функцию в Template.php.Очистка кэша браузера не должно быть необходимым, но иногда полезным для других изменений.
(конфигурация сайта - производительность - прозрачные кэшированные данные)