web-dev-qa-db-ja.com

D7-メニュー項目のパスからmlid値を取得する方法

簡単な質問。メニュー項目のパスからmlid値を取得する方法。 menu_link_load()という関数がありますが、mlid値が必要ですが、pathを使用してまったく同じ関数が必要です。

5
David

このための組み込み関数はありません。 menu_tree_all_data()を使用できますが、すべてのメニューが返されます。その後、ループ内でパスと戻り先パスを比較できます。しかし、より良い簡単な答えがあります。ここにあります:

$mlid = array();
$q = 'your-path';
$menu_info = db_select('menu_links' , 'ml')
  ->condition('ml.link_path' , $q)
  ->fields('ml', array('mlid', 'plid'))
  ->execute()
  ->fetchAll();

foreach($menu_info as $key => $value) {
  $mlid[] = $menu_info[$key]->mlid;
}
6
David