hook_menu() создать одинаковые пункты

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

Аватар пользователя shamahn shamahn 7 февраля 2011 в 21:16

Необходимо добавить один и тот же элемент для примари-линкс и для админ-меню. Не приложу ума как это сделать Smile

Комментарии

Аватар пользователя shamahn shamahn 7 февраля 2011 в 23:21

Да вот не хочется делать что-то руками. Делаю модуль для "О компании". Поставил галочки типа "Добавить в примари-линкс" и "Добавить в главное меню". А получается, что могу только в одно добавить Sad

Аватар пользователя shamahn shamahn 8 февраля 2011 в 15:43

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Что вы делаете?

модуль, который добавляет несколько полей в /admin/settings/site-information, и добавляет страничку на сайт, куда всю инфу из этих полей выливает. Ну и опционно, предлагаю галками отметить типа "добавить пункт меню в примари-линкс" и "добавить пункт меню в навигейшн" с сылкой на эту страничку. А получается, что через hook_menu() могу только в одно меню добавить

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 8 февраля 2011 в 15:54

В массив элемента меню полагаю нужно добавлять то, куда определён этот пункт, иначе он по умолчанию будет попадать в системное меню

Что то вроде:

<?php

'menu_name' => 'primary-links'

?>
Аватар пользователя shamahn shamahn 8 февраля 2011 в 16:09

Я так и сделал) а как еще и в Navig добавить? Smile для одного урла можно указать только одно меню, получается (

Аватар пользователя shamahn shamahn 8 февраля 2011 в 16:35
<?php
/*
 * hook_menu()
 */
function jkhkabout_menu() {
    
$items = array();
    
//Добавим страничку
    
$itemsvalues_get_jkhkabout('jkhkabout_page_url') ] = array(
        
'title' => values_get_jkhkabout('jkhkabout_page_title'),
        
'page callback' => 'jkhkabout_page',
        
'access callback' => 'user_access',
        
'access arguments' => array('access jkhkabout'),
        
'menu_name' => 'primary-links'
    
);
    
    return 
$items;
}
?>

Собственно, такой же пункт надо добавить и в Nav-меню Smile

Аватар пользователя shamahn shamahn 8 февраля 2011 в 16:43

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
перечислить названия

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

Аватар пользователя shamahn shamahn 8 февраля 2011 в 17:18

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Продублировать тот же элемент

Возвращается ассоциативный массив Smile ключ 'menu_name' просто перепишется во втором объявлении и будет добавлен в одно меню, все равно Smile

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 8 февраля 2011 в 18:41

Стоп-стоп-стоп.
Давайте начнем с самого начала: зачем вам это нужно?
Вы можете просто отредактировать одно из меню (скажем, создать свое меню и использовать его в качестве Primary links), и добавить туда свой элемент?
Все-таки hook_menu позволяет работать с системными меню. Для пользовательских лучше воспользоваться обычным web-интерфейсом.

Аватар пользователя shamahn shamahn 8 февраля 2011 в 19:34
<?php
function jkhkabout_menu() {
    
$items = array();
    
//Добавим страничку
    
$itemsvalues_get_jkhkabout('jkhkabout_page_url') ] = array(
        
'title' => values_get_jkhkabout('jkhkabout_page_title'),
        
'page callback' => 'jkhkabout_page',
        
'access callback' => 'user_access',
        
'access arguments' => array('access jkhkabout'),
        
'menu_name' => 'primary-links'
    
);

    

$itemsvalues_get_jkhkabout('jkhkabout_page_url') ] = array(
        
'title' => values_get_jkhkabout('jkhkabout_page_title'),
        
'page callback' => 'jkhkabout_page',
        
'access callback' => 'user_access',
        
'access arguments' => array('access jkhkabout'),
        
'menu_name' => 'navigation'
    
);
    
    return 
$items;
?>

и что не понятно? Smile

"G.A. Vinogradov" wrote:
оспользоваться обычным web-интерфейсом

видимо, так и придется делать

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 8 февраля 2011 в 20:06

<?php

function module_menu() {
$items = array();
$items['item_1'] = array(
'title' => 'Title 1',
'page callback' => 'jkhkabout_page',
'access callback' => 'user_access',
'access arguments' => array('access jkhkabout'),
'menu_name' => 'primary-links'
);

$items['item_2'] = array(
'title' => 'Same with Title 1',
'page callback' => 'jkhkabout_page',
'access callback' => 'user_access',
'access arguments' => array('access jkhkabout'),
'menu_name' => 'navigation'
);

return $items;

?>

2 ссылки на одну страницу в 2-х меню. Неужели не будет работать?

Аватар пользователя annya annya 8 февраля 2011 в 20:27

<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a> wrote:
2 ссылки на одну страницу в 2-х меню. Неужели не будет работать?

У вас 2 разных страницы с адресом item1 и item2. А топикастеру нужно чтобы был только 1 страница с адресом item1.
Используйте функцию http://api.drupal.org/api/drupal/includes--menu.inc/function/menu_link_s...

Аватар пользователя shamahn shamahn 8 февраля 2011 в 21:19

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
ведущих на одну страницу

угу, но страницы с разным урл это разные страницы. И очень плохо что у них содержимое одинаковое