1

我正在尝试构建一个基于$mlid. 我找到了一个似乎可以完成这项工作的功能,但我似乎无法弄清楚如何获取$mlid刚刚单击的菜单项。

我在 SO ( http://drupal.org/node/249257 )上类似帖子的链接中找到了该功能,但我只能找到手动设置 $mlid 的示例。有什么建议么?

4

5 回答 5

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。

于 2010-02-02T10:56:22.670 回答
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。

于 2011-05-16T13:35:14.200 回答
3

我建议你使用:menu_get_active_trail()

你会得到当前的$mlid.

它适用于 Drupal 7。

于 2012-10-24T20:07:05.600 回答
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();
于 2011-06-21T22:14:58.420 回答
1

您不是真的在寻找菜单块模块吗?

于 2010-02-02T14:55:55.050 回答