我正在创建一个小型预订系统。您可以创建可以保留的类型的节点,如投影仪。 我有一个带有正常显示的日历视图。我为节点引用添加了一个参数,但是我在定义页面回调时遇到了问题。 有人可以帮助我吗?
现在我想为不同的节点创建菜单项
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;
}
@edit
好吧,也许我没解释好:)。我有一个内容类型:unit,可以保留。对于我创建的每个单元,我想生成一个菜单项(我可以在节点保存或更新时进行菜单重建)。菜单应链接到视图,节点id(unit)作为url中的参数。答案 0 :(得分:1)
我不确定您到底要做什么,但如果您的目标是创建一个菜单项,而不是您在自定义模块中定义的新页面,则应该使用Drupal中的菜单系统。您可以创建指向您网站上存在的任何网址的菜单项 对于节点,这非常简单,因为您可以直接在节点编辑/创建表单中执行此操作。
Drupal缓存菜单,因此您无法创建包含动态部分的菜单项,例如用户ID等。如果您想要执行类似的操作,则应创建一个公共回调,将用户重定向到动态网址或根据用户显示内容。
<强>更新强>
每次创建或删除节点时都不必重新构建菜单系统,而不是可扩展性,您可以使用hook_nodeapi
创建新的菜单项,并在删除时将其删除。删除。
menu_link_save
menu_link_delete
答案 1 :(得分:1)
如果我理解正确,那么每次添加“unit”类型的新内容节点时,您都会尝试自动创建一个菜单项。如果这是正确的,我建议使用模块规则和一小段PHP来在各种系统事件(例如内容创建)上创建自定义菜单项。你可能会发现我写的关于这个主题的教程很有用:
http://jan.tomka.name/blog/programmatically-creating-menu-items-drupal
这个想法很简单:在Rules模块中设置一个规则,用于在节点创建或删除时触发的动作,并使用googletorp提到的Drupal API调用来实际操作菜单项。
答案 2 :(得分:0)
我发现了一种非常简单的方法,我只是创建了一个视图块,它创建了一些过滤器的链接。
简单而且正是我所需要的,似乎无法理解为什么我没有想到这一点