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']));

注-これはDrupal6に適用されます。

于 2010-02-02T10:56:22.670 に答える
4

emmychanのソリューションの背後にある考え方は素晴らしいですが、エラーが含まれています。そこで、Drupal7のデータベース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

Drupal7用です。

于 2012-10-24T20:07:05.600 に答える
2

これは、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();
于 2011-06-21T22:14:58.420 に答える
1

メニューブロックモジュールを本当に探していませんか?

于 2010-02-02T14:55:55.050 に答える