我正在尝试基于$mlid
构建子菜单。我找到了一个似乎可以完成这项工作的功能,但我似乎无法弄清楚如何获得刚刚点击的菜单项的$mlid
。
我在SO(http://drupal.org/node/249257)上的类似帖子的链接中找到了该功能,但我只能找到手动设置$ mlid的示例。有什么建议吗?
答案 0 :(得分:4)
您可以使用menu_get_item()
函数获取有关当前页面的信息作为菜单项,然后查询数据库以获取mlid。
$item = menu_get_item(); //Gets menu_router information for current page
$mlid = db_result(db_query("SELECT mlid FROM {menu_links} WHERE link_path='%s'", $item['path']));
注意 - 这适用于Drupal 6.
答案 1 :(得分:4)
emmychan解决方案背后的想法很棒,但包含错误。所以我重写了Drupal 7的数据库api:
$mlid = db_select('menu_links' , 'ml')
->condition('ml.link_path' , $_GET['q'])
->fields('ml' , array('mlid'))
->execute()
->fetchField();
编辑:为了使代码片段更加通用,像Ambidex建议我更新代码,以便使用$_GET['q']
来尝试获取当前页面的MLID。
答案 2 :(得分:3)
答案 3 :(得分:2)
这是基于Drupal 7的Imeurs代码。如果您不知道$ nid,或者将其用于面板页面,您可以使用以下代码获取当前项目:
$item = menu_get_item();
$mlid = db_select('menu_links' , 'ml')
->condition('ml.link_path' , $item['href'])
->fields('ml' , array('mlid'))
->execute()
->fetchField();
答案 4 :(得分:1)
你真的不是在寻找Menu Block模块吗?