Вопрос

Я создаю небольшую систему бронирования. Вы можете создавать узлы типа, которые можно забронировать, как проектор. У меня есть вид календаря с обычными дисплеями. Я добавляет аргумент для ссылки узла, но у меня есть проблемы, определяющие обратный вызов страницы. Кто-нибудь может мне помочь?

Теперь я хочу создать пункты меню для разных узлов

function your_module_menu() {
$nodeid //semantic, node is loaded right
    $items['reservate/nodeid/$year-w$week'] = array( // semantic, url is built right
        'title' => t('Your Module Name'),
        'description' => t('Menu's description.'),
        'page callback' => 'page_callback_funtion',
        'page arguments' => array('page callback arguments'),
        'access callback' => 'your_module_access',           // the function that validates access based on the user's role(s).
        'access arguments' => array(array(role1', 'role2')), // list of roles authorized - note nested array.
        'type' => MENU_NORMAL_ITEM,
    );
    return $items;
}

@редактировать

Хорошо, может быть, я не очень хорошо объяснил :). У меня есть тип контента: блок, который можно зарезервировать. Для каждого устройства я создаю, я хочу создать пункт меню (я могу сделать меню восстановить на сохранении или обновлении узла). Меню должно быть связано с видом с идентификатором узла (единица) в качестве аргумента в URL.

Это было полезно?

Решение 3

Я нашел очень простой способ сделать это, я только что создал блок просмотра, который создает ссылки с некоторыми фильтрами.

просто и именно то, что мне нужно, не могу понять, почему я не думал о том, что раньше

Другие советы

Я не уверен, что именно вы пытаетесь сделать, но если ваша цель - создать пункт меню, а не новую страницу, которую вы определяете в своем пользовательском модуле, вы должны использовать систему меню в Drupal. Вы можете создать пункты меню, указывающие на любой URL, который существует на вашем сайте.
Для узлов это особенно легко, так как вы можете сделать это непосредственно в форме редактирования / создания узла.

Drupal кэширует менансы, поэтому вы не можете создавать элементы меню с динамическими частями в них, например, идентификатор пользователей и т. Д. Если вы хотите сделать что-то подобное, вы должны создать общий обратный вызов, который либо перенаправляет пользователь на динамический URL или Отображать контент на основе пользователя.

Обновлять

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

  • Создать его, вы можете использовать menu_link_save
  • Чтобы удалить его, вы можете использовать menu_link_delete

Если я правильно понимаю, вы пытаетесь автоматически создавать пункт меню каждый раз, когда добавляется новый узел контента типа «Устройство». Если это правильно, я бы предложил использовать правила модуля и крошечный фрагмент PHP, чтобы иметь пользовательский элемент меню, созданный на различных системных событиях, таких как создание контента. Вы можете найти учебник, который я писал об этой теме полезной:

http://jan.tomka.name/blog/programmace-creating-menu-items-drupal.

Идея проста: настроить правило в модуле правил для действия, которое будет выпущено в создании или удалении узла, и использовать вызовы Drupal API, которые Coogletorp упомянул, чтобы фактически управлять пунктами меню.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top