Вопрос

У меня есть тема 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.Очистка кэша браузера не должно быть необходимым, но иногда полезным для других изменений.

(конфигурация сайта - производительность - прозрачные кэшированные данные)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top