代码之家  ›  专栏  ›  技术社区  ›  Nealv

Drupal:为视图创建菜单项

  •  0
  • Nealv  · 技术社区  · 14 年前

    我正在创建一个小的预订系统。您可以创建可以保留的类型的节点,如投影仪。 我有一个正常显示的日历视图。我为节点引用添加了一个参数,但在定义页面回调时遇到了问题。 有人能帮我吗?

    现在我想为不同的节点创建菜单项

    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中节点ID(Unit)作为参数。

    3 回复  |  直到 6 年前
        1
  •  1
  •   googletorp    14 年前

    我不确定你到底想做什么,但是如果你的目标是创建一个菜单项,而不是你在自定义模块中定义的新页面,你应该使用Drupal中的菜单系统。您可以创建指向网站上任何URL的菜单项。
    对于节点,这特别容易,因为您可以直接在节点编辑/创建窗体中执行此操作。

    Drupal缓存菜单,因此不能创建包含动态部分的菜单项,如用户ID等。如果要执行类似操作,应创建一个公共回调,将用户重定向到动态URL或基于用户显示内容。

    更新

    不必每次创建或删除节点时都重新构建菜单系统,因为这不具有很强的可伸缩性,您可以创建新的菜单项,使用 hook_nodeapi ,并在删除后将其删除。

        2
  •  1
  •   Jan Tomka    13 年前

    如果我理解正确,那么每次添加“Unit”类型的新内容节点时,您都会尝试自动创建一个菜单项。如果这是正确的,我建议使用模块规则和一小段PHP在各种系统事件(如内容创建)上创建一个自定义菜单项。你可能会发现我写的关于这个主题的教程很有用:

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

    这个想法很简单:在Rules模块中为在创建或删除节点时触发的操作设置一个规则,并使用Google Torp提到的Drupal API调用来实际操作菜单项。

        3
  •  0
  •   Nealv    14 年前

    我找到了一个非常简单的方法,我刚刚创建了一个视图块,它用一些过滤器创建了链接。

    我所需要的简单而准确,似乎无法理解为什么我没有早点想到这一点。