[РЕШЕНО] Динамическое меню или меню из view

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

Аватар пользователя monsterofcode monsterofcode 24 августа 2010 в 8:54

Всем привет. То ли я туплю конкретно, то ли проблема настоящая. Надо сделать раскрывающееся меню, в котором три пункта ежедневно изменяются. Можно ли его сделать из view и как - сам найти не смог. Написать модуль - надо JS париться - а я в нём не очень силён. Использовать хук меню не выходит - как я понял пункты при создании сохраняются в базу и всё на этом - надо модуль переустонавливать. Или я неправильно делал. Друпал 6 - как я понял там нет DYNAMIC_ITEM. Если кто на путь истинный поставит буду благодарен.

Комментарии

Аватар пользователя glu2006 glu2006 24 августа 2010 в 11:57

А hook_menu_alter() не подходит?
Вообще лучше четко знать что вы хотите делать и по каким критериям должны меняться пункты меню т.е. из-за появления нового контента или еще как-то.
Вообще-то пункты меню просто кешируются и после любого изменения меню необходимо сбрасывать кеш.

Аватар пользователя monsterofcode monsterofcode 24 августа 2010 в 13:07

Благодарю за ответ. В навигационное(или любое) меню добавить пункт имеющий три подпункта. Каждый пункт отображает дату-3 пункта - три даты за предыдущие три дня. При нажатии на ссылку отображается вьюха с материалом за эту дату. В том то и дело. Думал по крону кэш чистить каждый день - незнаю правильно это или нет. Думал элегантнее какнить можно. Хочется красиво сделать, но даже гугл не хочет признаваться ( В принципе думаю мне и изменение пунктов на крайняк сойдёт. С параметрами придумать попытаюь чего, или даже чило в качестве параметра передавать, которое вью будет кушать. хотя вроде так не выйдет.
Единственный для меня выход (если не писать свой модуль(сниппет) и выносить в другое место из моего меню ) - создать меню с пунктами типа:
-One day ago
-Two days ago
-Three days ago
и три вЪюшки с соответствующими фильтрами. Хотя мне это решение ненравится

Аватар пользователя monsterofcode monsterofcode 20 сентября 2010 в 14:33

Решил так:

$items['three_days_ago'] = array
(
'menu_name'=>'Primary-links',
'title' => 'three_days_ago',
'weight'=>3,
'title callback' => 'title_item',
'title arguments' => array('3'),
'page callback' => 'go_to_view',
'page arguments' => array('3'),
'access callback' => TRUE,
'type'=>MENU_NORMAL_ITEM,
);
return $items;
}

function title_item($ld=NULL)
{
$ts=mktime(0, 0, 0, date("m") , date("d")-(int)$ld, date("Y"));
$d=format_date($ts, $type = 'custom', $format = 'F d ,Y', $timezone = NULL);
return $d;
}

function go_to_view($ld=NULL)
{
$ts=mktime(0, 0, 0, date("m") , date("d")-(int)$ld, date("Y"));
$d=format_date($ts, $type = 'custom', $format = 'Y', $timezone = NULL).format_date($ts, $type = 'custom', $format = 'm', $timezone = NULL).format_date($ts, $type = 'custom', $format = 'd', $timezone = NULL);
drupal_goto('the-daily/archive/'.$d);
}