Путь меню с подстановочными знаками - PullRequest
1 голос
/ 03 ноября 2011

Вы не можете использовать подстановочные знаки в путях меню? Краткий обзор моей проблемы (которую я убедился, имеет смысл, чтобы вы не тратили свое время): у меня есть меню, которое я показываю на страницах узлов определенного типа контента. Мой путь к странице узла будет выглядеть как ...

События / instal2010

... где instal2010 будет именем события (событие является типом содержимого).

Я использую модули контекста и блока меню, чтобы разместить меню на боковой панели на этой странице ...

  • Событие (активный элемент по умолчанию)
  • Программа
  • Информация для посетителей
  • Заказ билетов

... где путь к Программе будет

События / instal2010 / программа

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

событие / * / * Программа 1030 *

Возможно, пришло время отказаться от меню и просто использовать блок с php, чтобы определить, на какой странице мы находимся по URL.

Любой совет от опытных рук был бы крут, спасибо.

1 Ответ

5 голосов
/ 04 ноября 2011

Вы не можете создавать пункты меню с подстановочными знаками из административного интерфейса Drupal, но вы можете создавать пункты меню с подстановочными знаками в модуле.Я бы порекомендовал создать пользовательский модуль, который использует hook_menu () для создания пунктов меню.Пример реализации будет выглядеть примерно так:

function YOURMODULE_menu() {
  $items = array();

  $items['events/%/programme'] = array(
    'title' => 'Programme',
    'description' => 'Loads a program page',
    'page callback' => 'YOUR CUSTOM FUNCTION NAME', // Custom function used to perform any actions, display the page, etc
    'page arguments' => array(1),  // Passes wildcard (%) to your page callback function
    'access callback' => TRUE, // Change if you want to control access
    'type' => MENU_NORMAL_ITEM, // Creates a link in the menu
    'menu_name' => 'primary-links' // Adds the link to your primary links menu, change if needed
  );

  return $items;
}

В $items['events/%/programme'] = array( % - это подстановочный знак, и он будет передан функции обратного вызова вашей страницы.Также может быть полезно прочитать больше о hook_menu () и Анатомия hook_menu также может помочь.

...