Как добавить классы для стиля в Drupal при использовании menu_block? - PullRequest
1 голос
/ 06 декабря 2009

Я использую модуль menu_block в Drupal для своих меню. Это работает очень хорошо, но я хочу, чтобы мои пункты меню были стилизованы под меню изображений. Это невозможно сделать с настройками по умолчанию - пункты меню выглядят примерно так:

<li class="leaf first menu-mlid-199"><a href="/this/is/some/nice/url" title="Homepage">Homepage</a></li>

Полагаю, я мог бы использовать класс menu-mlid-199, чтобы получить нужный стиль, потому что это уникальный идентификатор каждого пункта меню, но мне это кажется довольно уродливым Есть ли другой способ добавить разумно названные классы в мои пункты меню, например, генерировать их из заголовка страницы или псевдонима URL? Даже просто последовательность показалась бы лучше - например, menu-item-1 и т. Д.

Ответы [ 3 ]

2 голосов
/ 06 декабря 2009

Хотя ваш вопрос очень ясен о том, что вы хотите знать (см. Ниже), мне не на 100% ясно, какую функциональность вы хотите достичь. Поэтому я просто подумал начать с упоминания модуля меню изображения на тот случай, если этот модуль приблизится к тому, что вам нужно. Другой альтернативой может быть также модуль значки меню . Другие нестандартные решения подобных проблем обсуждались здесь .

Что касается изменения атрибутов класса для пунктов меню: классы присваиваются пункту меню с помощью theme_menu_item () . Вы можете просто переопределить эту функцию из вашей собственной темы. Объяснение того, как переопределить тематические функции, дано в официальной документации drupal .

1 голос
/ 24 апреля 2010

Я изменил строку

в menu_block.module:

(639) $ extra_class [] = 'menu-mlid-'. $ пунктов [$ ключ] [ 'ссылка'] [ 'mlid'];

в

$ extra_class [] = 'menu-href-'. str_replace ( '/', '-', $ пункты [$ ключ] [ 'ссылка'] [ 'HREF']);

и у меня все работает нормально, он не использует mlid (который я обычно не знаю), но путь (который я знаю)

0 голосов
/ 07 декабря 2009

При выводе темы модуля всегда обращайте внимание на файлы .tpl.php, которые находятся в каталоге модуля. В этом случае файл .tpl.php - это menu-block-wrapper.tpl.php. Скопируйте его в папку с темой, которую вы используете, и при необходимости измените ее.

Также есть полезная информация о стилях блоков меню в файле README.txt, который содержится в пакете модуля.

Практически каждый фрагмент вывода HTML Drupal является тематическим, так что читайте о них и узнайте, как переопределить функцию, которая выводит список пунктов меню. Если вы установите модуль Devel, вы увидите, какие функции создают этот список. Затем вы можете назначить дополнительные классы или идентификаторы для этих элементов, чтобы вы могли оформить их с помощью CSS столько раз, сколько захотите.

Удачи!

...