Drupal:ビュー用のメニュー項目を作成します
-
04-10-2019 - |
質問
私は小さな予約システムを作成しています。プロジェクターのように、予約できるタイプのノードを作成できます。通常のディスプレイを備えたカレンダービューがあります。ノードリファレンスの引数を追加しますが、ページコールバックの定義に問題があります。誰かが私を助けることができますか?
次に、さまざまなノードのメニュー項目を作成したい
function your_module_menu() {
$nodeid //semantic, node is loaded right
$items['reservate/nodeid/$year-w$week'] = array( // semantic, url is built right
'title' => t('Your Module Name'),
'description' => t('Menu's description.'),
'page callback' => 'page_callback_funtion',
'page arguments' => array('page callback arguments'),
'access callback' => 'your_module_access', // the function that validates access based on the user's role(s).
'access arguments' => array(array(role1', 'role2')), // list of roles authorized - note nested array.
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
@編集
わかりました、多分私はよく説明しなかった:)。コンテンツタイプ:ユニットを持っています。作成する各ユニットについて、メニュー項目を生成したい(ノード保存または更新でメニュー再構築を実行できます)。メニューはビューにリンクされ、ノードID(ユニット)がURLの引数としてリンクする必要があります。
解決 3
私はそれを行うための非常に簡単な方法を見つけました、私はいくつかのフィルターでリンクを作成するビューブロックを作成しました。
シンプルで、まさに私が必要としているものは、なぜ私がそれを早く考えなかったのか理解できないようです
他のヒント
正確に何をしようとしているのかはわかりませんが、カスタムモジュールで定義する新しいページではなく、メニュー項目を作成することが目標である場合は、Drupalのメニューシステムを使用する必要があります。サイトに存在する任意のURLを指すメニュー項目を作成できます。
ノードの場合、ノードの編集/作成フォームでこれを直接実行できるため、これは特に簡単です。
Drupalはメンーをキャッシュするので、ユーザーIDなどのように動的なパーツを含むメニュー項目を作成することはできません。そのようなことをしたい場合は、ユーザーを動的URLにリダイレクトする共通のコールバックを作成するか、またはユーザーに基づいてコンテンツを表示します。
アップデート
ノードが作成または削除されるたびにメニューシステムを再構築する代わりに、これはあまりスケーラブルではないので、代わりに新しいメニュー項目を作成できます。 hook_nodeapi
, 、削除されたときに削除します。
- それを作成するには、使用できます
menu_link_save
- 削除するには、使用できます
menu_link_delete
正しく理解していれば、タイプ「ユニット」の新しいコンテンツノードが追加されるたびに、メニュー項目を自動的に作成しようとしています。それが正しい場合は、モジュールルールとPHPの小さなスニペットを使用して、コンテンツ作成などのさまざまなシステムイベントで作成されたカスタムメニュー項目を作成することをお勧めします。このトピックについて私が書いたチュートリアルが役立つかもしれません。
http://jan.tomka.name/blog/programtally-creating-menu-items-drupal
アイデアは単純です。ノードの作成または削除でアクションを発行し、Googletorpが実際にメニュー項目を操作するために言及したDrupal APIコールを使用するためのルールモジュールにルールを設定します。