а можно поподробнее?
Я думал реализовывать такое через hook_menu (но мало ли есть какой плагин)
Но не очень понимаю, как
По сути мне надо при создании текущего пункта меню видимо искать weight от предыдуего пункта(как?), либо вести какой-то счетчик(опять же как его передавать? А если удалится пункт меню, как это отлавливать счетчиком. Долгий и муторный вариант с кучей кода). Либо(вроде где то видел похожее). Через patchauto добавлять к ссылке материала (к которому ведет пункт меню, в моём случае добавляющийся автоматически с созданием статьи) на статью дату. И вот дальше опять же как это отлавливать?
Вообщем не очень ясен план реализации..
либо вообще все послать и взять наконец vievs - возможно же там в две колонки вывести: слева список статей опр. категории, с другой - текущую статью?
еще как вариант - есть готовый модуль, умеющий автоматом добавлять ссылку в меню при добавлении страницы. Осталось его только выставлять weight - есть какие примеры, где реализован такой функционал?
вообщем реализовал через костыли, переписав http://drupal.org/node/1138946
Сразу поясню свежеприбывшим: заказчик хочет что бы у него было некое подобие блога, но с крайне урезанными возможностями. Его(заказчика) предупреждали о возможном переполнении страницы пунктами меню, он настаивал. Хозяин барин.
В итоге что реализовано:
Заказчик добавляет статью - она добавляется и рядом в меню появляется новая ссылка на эту статью(что очень важно - появляется всегда сверху). Т.е. заголовки всех статей в меню и текущая выбранная статья.
Конечно вопрос - как это можно реализовать по-человечески, актуален. Пытался через view - но не очень понял как. Не удалось мне заставить отображать в отдельном блоке выбранную статью. может кто подскажет?
Пока что сделал через Ж. Работает но, в недалеком будущем.. Вообщем какой вопрос - по-хорошему надо узнать:
1) weight от предыдущего пункта меню
2) Как всем пунктам в текущем меню установить свой weight 50. Иначе(см код ниже). когда счетчик достигнет -50 - счетчик снова сбросится до 50. И соответственно все перемешается.
Конкретно мой говнокод начинается с
$params['weight'] =(int)file_get_contents("./sites/all/modules/automenu/weight_old.txt");
Quote:
<?php
/**
* Created by dreizwo.de.
* User: jakobs
* Date: 17.06.2011
* Time: 20:28:44
* To change this template use File | Settings | File Templates.
*/
/**
* Implementation of hook_node_insert().
*/
function automenu_node_insert($node) {
autocreatemenu($node);
}
function automenu_node_update($node) {
autocreatemenu($node);
}
/**
* Implementation of hook_form_alter().
*/
function automenu_form_alter(&$form, $form_state, $form_id) {
function autocreatemenu($node) {
/*$hook = 'automenu_create';
// here you can add addtional - node implemented as default in this module
foreach(module_implements($hook) as $module){
$params = module_invoke($module, $hook, $node);
automenu_add_menu_link($params);
}*/
// Get a list of enabled languages.
$languages = language_list('enabled');
$languages = $languages[1];
// Shouldn't this be language specific?!
$options = array_merge(array("0" => "None"), menu_parent_options(menu_get_menus(), 0));
$setting['automenu_parentmenu'] = array(
'#type' => 'select',
'#title' => t('Default parent menu'),
'#default_value' => variable_get('automenu_parentmenu_' . $type, 0),
'#options' => $options, // TODO filter on menu items that are language neutral?
'#description' => t('Select the default menu for nodes without a language (i.e. language neutral.)'),
);
// add a selection for "no language" selection... maybe we can find a
// better way (I think this is what happens in language neutral situations?)
foreach($languages as $language){
$setting['automenu_parentmenu_' . $language->language] = array(
'#type' => 'select',
'#title' => t('Parent menu for !lang nodes', array('!lang' => $language->name)),
'#default_value' => variable_get(
'automenu_parentmenu_' . $language->language . '_' . $type, 0),
'#options' => $options, // TODO filter on menu items of current language.
'#description' => t('Select the default menu for nodes written in !lang.',
array('!lang' => $language->name)),
);
}
$setting['automenu_hide'] = array(
'#type' => 'checkbox',
'#title' => t('Hide automenu entry'),
'#default_value' => variable_get('automenu_hide_' . $type, 0),
'#description' => t('Set all auto generated menu items of this content type to hidden'),
);
Комментарии
hook
а можно поподробнее?
Я думал реализовывать такое через hook_menu (но мало ли есть какой плагин)
Но не очень понимаю, как
По сути мне надо при создании текущего пункта меню видимо искать weight от предыдуего пункта(как?), либо вести какой-то счетчик(опять же как его передавать? А если удалится пункт меню, как это отлавливать счетчиком. Долгий и муторный вариант с кучей кода). Либо(вроде где то видел похожее). Через patchauto добавлять к ссылке материала (к которому ведет пункт меню, в моём случае добавляющийся автоматически с созданием статьи) на статью дату. И вот дальше опять же как это отлавливать?
Вообщем не очень ясен план реализации..
либо вообще все послать и взять наконец vievs - возможно же там в две колонки вывести: слева список статей опр. категории, с другой - текущую статью?
еще как вариант - есть готовый модуль, умеющий автоматом добавлять ссылку в меню при добавлении страницы. Осталось его только выставлять weight - есть какие примеры, где реализован такой функционал?
вообщем реализовал через костыли, переписав
http://drupal.org/node/1138946
Сразу поясню свежеприбывшим: заказчик хочет что бы у него было некое подобие блога, но с крайне урезанными возможностями. Его(заказчика) предупреждали о возможном переполнении страницы пунктами меню, он настаивал. Хозяин барин.
В итоге что реализовано:
Заказчик добавляет статью - она добавляется и рядом в меню появляется новая ссылка на эту статью(что очень важно - появляется всегда сверху). Т.е. заголовки всех статей в меню и текущая выбранная статья.
Конечно вопрос - как это можно реализовать по-человечески, актуален. Пытался через view - но не очень понял как. Не удалось мне заставить отображать в отдельном блоке выбранную статью. может кто подскажет?
Пока что сделал через Ж. Работает но, в недалеком будущем.. Вообщем какой вопрос - по-хорошему надо узнать:
1) weight от предыдущего пункта меню
2) Как всем пунктам в текущем меню установить свой weight 50. Иначе(см код ниже). когда счетчик достигнет -50 - счетчик снова сбросится до 50. И соответственно все перемешается.
Конкретно мой говнокод начинается с
$params['weight'] =(int)file_get_contents("./sites/all/modules/automenu/weight_old.txt");
апну