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

Главные вкладки

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

Добрый день!

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

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

Комментарии

Аватар пользователя neochief neochief 3 апреля 2008 в 19:04

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

Аватар пользователя keno keno 3 апреля 2008 в 20:49

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

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

Аватар пользователя neochief neochief 3 апреля 2008 в 22:05

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

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

Аватар пользователя kiev1 kiev1 6 апреля 2008 в 22:44

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