如何获取单击的菜单项';Drupal中的s$mlid?

如何获取单击的菜单项';Drupal中的s$mlid?,drupal,menu,submenu,Drupal,Menu,Submenu,我正在尝试基于$mlid构建一个子菜单。我找到了一个似乎可以完成这项工作的函数,但我似乎不知道如何获取刚刚单击的菜单项的$mlid 我在SO()上类似文章的链接中找到了该函数,但我只能找到手动设置$mlid的示例。有什么建议吗?您可以使用菜单获取项目()功能以菜单项的形式获取当前页面的信息,然后查询数据库以获取mlid $item = menu_get_item(); //Gets menu_router information for current page $mlid = db_resul

我正在尝试基于
$mlid
构建一个子菜单。我找到了一个似乎可以完成这项工作的函数,但我似乎不知道如何获取刚刚单击的菜单项的
$mlid


我在SO()上类似文章的链接中找到了该函数,但我只能找到手动设置$mlid的示例。有什么建议吗?

您可以使用
菜单获取项目()
功能以菜单项的形式获取当前页面的信息,然后查询数据库以获取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

您可以使用
菜单获取项目()
函数以菜单项的形式获取当前页面的信息,然后查询数据库以获取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建议的那样使代码段更通用,我更新了代码,以便它使用
$\u GET['q']
尝试获取当前页面的MLID。

emmychan解决方案背后的想法很好,但包含错误。所以我为Drupal 7的数据库api重写了它:

$mlid = db_select('menu_links' , 'ml')
  ->condition('ml.link_path' , $_GET['q'])
  ->fields('ml' , array('mlid'))
  ->execute()
  ->fetchField();

编辑:为了使代码段更通用,如Ambidex建议的那样,我更新了代码,以便它使用
$\u 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();

这是基于Drupal7的Imeurs代码。如果您不知道$nid,或者将在面板页面中使用此选项,则可以使用以下代码获取当前项目:

$item =  menu_get_item();    
$mlid = db_select('menu_links' , 'ml')
  ->condition('ml.link_path' , $item['href'])
  ->fields('ml' , array('mlid'))
  ->execute()
  ->fetchField();
我建议您使用:

您将获得当前的
$mlid

这是为Drupal 7准备的。

我建议您使用:

您将获得当前的
$mlid


这是针对Drupal 7的。

该代码在%s周围缺少单引号,并且在关闭db_结果函数时也缺少一个结束括号该代码在%s周围缺少单引号,并且在关闭db_结果函数时也缺少一个结束括号该方法将始终假定当前活动页是一个节点,在很多页面中,这将不起作用。(例如,
/user
)这种方法将始终假定当前活动页面是一个节点,在许多页面中,这将不起作用。(例如,
/user