Создание пункта меню, который ссылается на его родителя - PullRequest
1 голос
/ 01 марта 2011

Я искал низкий максимум, чтобы сделать это.Я хочу создать обычный пункт меню программно, который ссылается на его родителя.Подобно концепции задачи меню по умолчанию, но просто обычный пункт меню.Кто-нибудь когда-нибудь делал это?

Я хочу кое-что, что я могу сделать с одним из крючков друпала.

Ответы [ 3 ]

0 голосов
/ 02 марта 2011
$items['parent'] = array(
    'title' => 'I am parent',
    'page callback' => 'drupal_get_form',
    'page arguments' => 'get_parent',
    'access arguments' => array('access parent'),
    'type'      => MENU_NORMAL_ITEM,
);

$items['parent/child'] = array(
    'title' => 'I am child link of parent',
    'page callback' => 'drupal_get_form',
    'page arguments' => 'get_children_for_thisparent',
    'access arguments' => array('access children of parent'),
    'type'      => MENU_NORMAL_ITEM,
);

Это должно сработать:)

0 голосов
/ 28 декабря 2012

Предположим, вы хотите поместить его в Главное меню,

    $item['form_example'] = array(
        'title' => 'Example menu',
        'description' => 'This is an example menu item',
        'type' => MENU_NORMAL_ITEM,
        'page callback' => 'custom_function',
        'menu_name' => 'main-menu',
    );

    return $item;

Затем вы получите пункт меню в Главном меню (очистка кэша).Хитрость заключается в добавлении ключа 'menu_name'.

Чтобы получить имя_меню меню, откройте страницу администрирования меню и нажмите «Редактировать меню» в любом корневом меню.URL будет выглядеть как «SITE_URL / admin / structure / menu / manage / main-menu / edit».Посмотрите на сегмент URL непосредственно перед последним (здесь главное меню).

Во втором случае вам может потребоваться поместить его в раздел Главное меню.Код:.

$item['form_example'] = array(
    'title' => 'Example menu',
    'description' => 'This is an example menu item',
    'type' => MENU_NORMAL_ITEM,
    'page callback' => 'custom_function',
    'menu_name' => 'main-menu',
    'plid' => 218,
);

return $item;

Здесь я добавил ключевой plid в ассоциативный массив, это mlid пункта меню ('Home' здесь), для которого он будет дочерним.В этом случае это будет дочерний элемент главного меню.

Чтобы получить mlid, вы должны сделать то же, что описано выше, перейти на страницу администрирования меню и щелкнуть ссылки списка, а затем нажать кнопку редактирования в пункте меню, например SITE_URL./ admin / structure / menu / item / 218 / edit, таким образом, вы можете получить mlid и, таким образом, все готово.

Примечание.Если вы изменяете эту иерархию меню или другие настройки из серверной части, у вас всегда будет возможность сброса, чтобы сбросить ее, и после сброса она будет вести себя так, как описано в коде.

0 голосов
/ 02 марта 2011

Вам просто нужно создать новый пункт меню, который имеет тот же путь , что и его родитель.

...