web-dev-qa-db-ja.com

hook_menu()アイテムのタイトルをページのタイトルと異なるようにできますか?

私はhook_menu()でメニューを構築しています。

この配列を作成するときに、タイトルを指定します。これは、呼び出すページに渡され、ページタイトルになります。メニュー項目の表示名でもあります。

_$items['somewhere/something'] = array(
 'title' => 'Something',
 'description' => 'something else',
);
_

これにより、「Something」というメニューリンクが生成され、ページタイトルは同じになります。メニュー項目の名前を1つにする方法はありますが、ページに別のタイトルを渡しますか?

実際のdrupal_set_title()関数でhook_page()を使用できることはわかっていますが、この場合、追加のデータベースプルを実行してこれを実行する必要があるため、実行しません。それ。

6
oranges13

hook_menu() でそれを行う方法はありません。

最も簡単な方法は drupal_set_title() を使用して提案したものであり、最も効率的な方法は上記で提案されたdobeermanです:使用- phptemplate_preprocess_page() そして$ varsを適宜変更します。

正直なところ、あなたが言及した追加のdb呼び出しがある場合でも、私はdrupal_set_title()を使用します(未確認)。これはごくわずかな最適化であり、パフォーマンスが重要な場合は、キャッシングメカニズム(ワニス、ブーストなど)を用意しておく必要があります。この追加の呼び出しによって違いが生じることはありません。

5
Alex Weber

ページに別のタイトル(_<title>_タグで使用されるタイトル)を設定するには、2つの方法があります。

  • モジュールにMODULE_preprocess_page()を実装し、それを使用して_$variables['head_title']_の値を変更します。 template_preprocess_page() のドキュメントページでは、_$variables_配列で使用できる値を報告しています。
  • Page Title モジュールをインストールします。これにより、ページのタイトルセットを変更できます。 PHPスニペットを実行してページのタイトルを設定することができます トークン も使用します。

drupal_set_title() を使用すると、ページタイトルやタイトルバーに表示されるタイトルだけを設定するわけではありません。ドキュメントで報告されているように、両方を設定します。

現在のページのタイトルを設定して、ページとタイトルバーに表示します。

パラメーター

$ title
ページタイトルに割り当てるオプションの文字列値。またはNULL(デフォルト)に設定されている場合、現在のタイトルは変更されません。

戻り値

現在のページの更新されたタイトル。

1
kiamlaluno