我正在尝试构建一个基于$mlid
. 我找到了一个似乎可以完成这项工作的功能,但我似乎无法弄清楚如何获取$mlid
刚刚单击的菜单项。
我在 SO ( http://drupal.org/node/249257 )上类似帖子的链接中找到了该功能,但我只能找到手动设置 $mlid 的示例。有什么建议么?
我正在尝试构建一个基于$mlid
. 我找到了一个似乎可以完成这项工作的功能,但我似乎无法弄清楚如何获取$mlid
刚刚单击的菜单项。
我在 SO ( http://drupal.org/node/249257 )上类似帖子的链接中找到了该功能,但我只能找到手动设置 $mlid 的示例。有什么建议么?
您可以使用该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。
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。
这是基于 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();
您不是真的在寻找菜单块模块吗?