我有一个节点,我想它的菜单。据我所知,node_load不包括它。显然,编写一个查询来查找基于路径node/nid
的查询是微不足道的,但有没有Drupal的方法来做到这一点?有没有一种方法(sql除外)来获取didpal中给定nid的mlid?
5
A
回答
3
Menu Node module公开了一个API来执行此操作。 您可以阅读代码中的文档(Doxygen)。我认为你需要的功能是由menu_node_get_links($nid, $router = FALSE)
方法提供:
/**
* Get the relevant menu links for a node.
* @param $nid
* The node id.
* @param $router
* Boolean flag indicating whether to attach the menu router item to the $item object.
* If set to TRUE, the router will be set as $item->menu_router.
* @return
* An array of complete menu_link objects or an empy array on failure.
*/
的mlid => menu object
关联数组返回。你可能只需要第一个,所以可能看起来是这样的:
$arr = menu_node_get_links(123);
list($mlid) = array_keys($arr);
否则,你可以尝试在thread in the Drupal Forums建议:
使用node/[nid]
作为$ path参数:
function _get_mlid($path) {
$mlid = null;
$tree = menu_tree_all_data('primary-links');
foreach($tree as $item) {
if ($item['link']['link_path'] == $path) {
$mlid = $item['link']['mlid'];
break;
}
}
return $mlid;
}
6
如果菜单树有多个级别的sql似乎是一个更好的选择。 一个为Drupal 7样品给出波纹管,其中路径是一样的东西“节点/ X”
function _get_mlid($path, $menu_name) {
$mlid = db_select('menu_links' , 'ml')
->condition('ml.link_path' , $path)
->condition('ml.menu_name',$menu_name)
->fields('ml' , array('mlid'))
->execute()
->fetchField();
return $mlid;
}
+1
辉煌,谢谢。 – 2013-12-05 07:49:25
相关问题
- 1. 有没有另外一种方法来做重定向页面?
- 2. 有没有一种方法来确定是否删除用户?
- 3. 有没有一种方法来获取@Embedded领域懒惰?
- 4. 有没有一种方法来确定语法中的歧义?
- 5. 有没有一种有效的方法来避免SQL中的固定值UNION?
- 6. TStringGrid - 有没有一种简单的方法来获取“当前/选定”行?
- 7. 有没有一种方法来读取在java中的Internet Explorer
- 8. 有没有一种标准的方法来从给定的URL获取Ruby on Rails中的ActiveRecord项目?
- 9. 有没有一种有效的方法来确定距离?
- 10. 有没有一种简单的方法来获取URL中的URL
- 11. 有没有一种简单的方法来获取Symfony中的ServerName?
- 12. 有没有一种专门的方法来获取python`Enum`中的项目数?
- 13. 有没有一种简单的方法来获得android APK的外部属性?
- 14. 有没有另外一种方法来启动远程jvm?
- 15. 有没有一种更有效的方法来获得注释的方法?
- 16. 有没有一种方法返回给定URL的System.Web.UI.Page类?
- 17. 有没有一种方法来获得整个'ScrollView'的高度?
- 18. 有没有一种方法来优化这个SQL Server查询?
- 19. 有没有一种方法来定位前一个元素?
- 20. 有没有一种方法来确定在Java方法中使用的变量?
- 21. 有没有一种方法来定制Html.EditorFor生成的HTML?
- 22. Apiary:有没有一种方法来定义参数的选项?
- 23. gSOAP - 有没有一种方法来指定soap_wsse_add_UsernameTokenDigest的时间?
- 24. 有没有一种方法来定位的div容器
- 25. 有没有一种方法来定义键值的大小?
- 26. 有没有一种很好的方法来获取当前的属性名称?
- 27. 有没有一种方法可以获得给定$$ hashKey的DOM对象?
- 28. 有没有一种方法来读取使用数据流
- 29. 有没有一种方法来获取用户的位置不是IP
- 30. 有没有一种方法可以使用Smoke来获取类的注释?
看起来像会做到这一点,但我认为SQL是更容易...谢谢,虽然。 – sprugman 2010-05-18 19:03:00
没问题。确实,SQL可能更容易。 :) – sirhc 2010-05-18 19:08:48