我的内容类型包含重要的“已创建”日期字段。我有 菜单链接(在主链接中),链接到显示列表的页面 我的内容类型的所有节点。 (http://example.com/mycontenttype) 我希望每年都有菜单链接(在主要链接中可见) 显示我的内容类型的节点 (http://example.com/mycontenttype/2010)。我想添加这些菜单 来自mymodule_nodeapi函数的链接,当节点正在创建时 只有它有一个“创建”的新年日期。 我知道我可以在mymodule_menu函数中创建一个pathes,但它 不会创建可见的菜单项。 (也许我可以以某种方式设定 parent_link_id还是别的什么呢?)
答案 0 :(得分:0)
如果将“类型”设置为“MENU_NORMAL_ITEM”,则可以使用hook_menu()创建可见菜单项。此外,您可以通过定义包含父项路径的路径来嵌套这些菜单项。例如,'mycontenttype / 2010'将是'mycontenttype'的子菜单项(我相信您也可以使用Drupal的菜单管理表单手动设置父/子关系。您还可以设置菜单项应该添加到使用'menu-item'值自动将其添加到Primary Links而不是Navigation。
对于每年创建一个新年的节点创建一个新的菜单项,你将不得不稍微玩一下。我认为很容易确定该类型节点可用的唯一年份(使用视图或手动查询数据库)。要在添加新菜单项时更新菜单表,您可以致电menu_rebuild()。
我认为将它们连接在一起的方法是编写hook_menu函数来查询数据库以查找唯一的创建日期年份并为每年创建一个菜单项。在你的hook_nodeapi中,检查创建的年份是否是新的(必须有方法来优化它,这样每次创建节点时都不会调用它,但我会留给你)。如果是新的一年,那么清除菜单表(menu_rebuild)以重新创建菜单项并包含一个新年。