編集/改訂/ワークフローを含まないDrupal $ tabs
質問
私はDrupal5サイトを継承し、いくつかの変更を行うことを任されましたが、どこから探し始めればよいのかわかりません。
多くのページには、管理者が特定のアクションを実行できるメニューがあります:
概要 スペシャリスト リソースとツール 現場で ニュース イベント コース マルチメディア 編集 トラック ワークフロー 設定
ただし、一部のセクションには異なるオプションがあります。 プレビュー レイアウト 設定 レイアウト設定 高度な コンテキスト コンテンツ エクスポート
2番目のメニューに(編集、追跡、ワークフロー、設定)を追加する必要がありますが、その方法がわかりません。
page.tpl.phpには$ tabsの領域がありますが、これがどのように構築されるのかわかりません。
私が言えることから、このテーマはZen STARTERKITテーマに基づいています。
解決
通常、$ tabs変数には、 MENU_LOCAL_TASK
タイプのメニューエントリが入力されます。
メニューシステム、特に hook_menu()
を使用して、基本的な考え方を理解してください。コールバック関数からパスへのマッピングに要約されます。 URLが hook_menu
で定義されたパスと一致する場合(プレースホルダーを含めることができます!)、そのパスに対して登録されたコールバック関数が呼び出され、そのURLのコンテンツが生成されます。
hook_menu
項目の「タイプ」は、システムでのパス/コールバックの組み合わせの表示方法を定義します。 MENU_CALLBACK
にすることができます。これは、登録されたパス/コールバックの組み合わせのみを意味しますが、対応する「実際の」メニューエントリはありません。 MENU_NORMAL_ITEM
も同じですが、「標準」のメニューエントリがあります。ナビゲーションメニューで。 MENU_LOCAL_TASK
は同じですが、対応するメニューエントリは通常、メニューではなく$ tabsに表示されます。
同じベースパスを共有するすべての MENU_LOCAL_TASK
は、タブのグループになります。したがって、次のようなパスがある場合:
- some / path / tab1
- some / path / tab2
- some / path / tab3
およびこれらのすべてが MENU_LOCAL_TASK
として定義されている場合、それらが表す各ページにそれぞれのタブが表示されます。
したがって、変更/拡張する必要がある場所を見つけるには、それらのタブが表示されるパスを定義するすべての hook_menu()
実装をコードベースで検索する必要があります。それらはすべて同じ場所で定義する必要はありませんが、異なるモジュールの異なる hook_menu
実装から来る可能性があることに注意してください。追加するタブのメニュー定義を追加する必要があるよりも、関連するパスをコールバック関数にマッピングします。コールバック関数は、ユーザーがタブをクリックしたときに表示されるページのコンテンツを返します。
他のヒント
ノードを表示している場合は、通常、$ tabsに既に編集リンクがあります。これは、他の何か(何らかのレイアウトモジュール)である可能性があるためです。どのようなコンテンツを編集/追跡するには、編集/追跡オプションを追加する必要がありますか?特定のノードまたは何?