Как добавить к пункту меню дополнительное поле?

3 апреля 2008 в 18:07
Аватар пользователя keno keno 0 6

Добрый день!

Помогите пожалуйста разобраться с таким вопросом. Есть ?q=admin/build/menu/item/add Как можно туда вставить необходимое мне поле и соответветственно получить значение поля при рендере меню? Поле необходимо только для первого уровня.

Есть ли готовый модуль для этого? Если нет, то куда смотреть в API для решения? Smile

Комментарии

Основная проблема не как его туда впихнуть, а куда его сохранять. Решение очень плохое, попробуйте обойтись без меню.

3 апреля 2008 в 19:04

penexe, поле нужно для построения сложного меню. Например вставка заданной картинки (из списка) или для вставки класса, который определяет картинку.

neochief, без меню обойтись нельзя Lol Огласите ваше решение то, плз Wink

3 апреля 2008 в 20:49

Вставка класса делается намного проще. Оверрайдим стандартную темовую функцию вывода линки в меню

function phptemplate_menu_item_link($item, $link_item) {
  return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description']) : array(), isset($item['query']) ? $item['query'] : NULL);
}

Код вставляем в template.php
Меняем внутренности по своему усмотрению. К примеру, можно сделать так

$class = str_replace('/','_',$link_item['path']);
return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description'], 'attributes' => array('class' => $class)) : array( 'attributes' => array('class' => $class)), isset($item['query']) ? $item['query'] : NULL);

Учите матчасть, господа офицеры Smile

3 апреля 2008 в 22:05

спасибо
а можно и еще проще
создать словарь с термином "меню1" и создать специальный тип контента под названием "пункт меню", в этом типе контента можно сделать любые поля по своему усмотрению, а потом просто вывести в цикле в блок - например так: http://www.drupal.ru/node/13521
таким образом можно раз и навсегда избавиться от этой путанной части друпал - системы меню...

6 апреля 2008 в 22:44