私はnode.tpl.phpでdrupal_set_titleを使用しようとしていますが、タイトルを設定しているテキストは$ head_title変数にのみ表示され、$ title変数には表示されません。 $ title変数はまだノードのタイトルに設定されています。
これはDrupal 7です。Drupal 6ではこれと同じようにdrupal_set_titleを複数回使用していますが、完全に機能しています。
私はnode.tpl.phpでdrupal_set_titleを使用しようとしていますが、タイトルを設定しているテキストは$ head_title変数にのみ表示され、$ title変数には表示されません。 $ title変数はまだノードのタイトルに設定されています。
これはDrupal 7です。Drupal 6ではこれと同じようにdrupal_set_titleを複数回使用していますが、完全に機能しています。
クライヴは私が正しい方向に指摘しましたが、私はpreprocess_nodeを動作させることができなかったので、代わりにpreprocess_pageを使用しなければなりませんでした。 // API:
function mycooltheme_preprocess_page(&$vars){
if (isset($vars['node']) && $vars['node']->type == 'news'){
drupal_set_title('News');
}
}
私はこれがうまくいかない理由は、どこから呼び出すのかという理由によるものだと思います。 Drupalのテンプレートシステムは、変数(そのうち$title
が1)を構築し、それらをテンプレートファイルに渡すことによって動作します。
node.tpl.php
になるまでには、そのファイルのスコープ内でのみ利用可能な$title
変数が既に設定されています。
drupal_set_title
を呼び出すと、後で
node.tpl.php
より呼び出される(
html.tpl.php
ため
$head_title
を変更するために動作しますが、それはあなたがからコードを呼び出しているテンプレートファイルの変数を変更することはできませんので、あなたの最善の策を置くことであろうテンプレートファイルの前にタイトルを設定し、あなたのテーマの
template.php
で前処理機能が処理されます。
function MYTHEME_preprocess_node(&$vars) {
drupal_set_title('A new title');
}
それはまだ$vars['title']
=「新しいタイトル」を設定明示的にしてみてください動作しない場合; `同じ前処理機能に。
最良のオプションは、非常に小さなカスタムモジュールを作成し、テンプレートファイルがプロセスに入る前に、道と呼ばれるhook_node_view()
を実装することであろうと、常に動作するはずです:
function MYMODULE_node_view($node, $view_mode, $lang_code) {
drupal_set_title('A new title');
}
'$のhead_title'は' node.tpl.php'、もしかして[ 'html.tpl.php'](HTTPの標準的な変数ではありません。ここで動作するコードです。 drupal.org/api/drupal/modules--system--html.tpl.php)? (利用可能な変数の一覧については、['node.tpl.php' docs](http://api.drupal.org/api/drupal/modules--node--node.tpl.php)を参照してください) – Clive
$ head_title is html.tpl.phpで使用されていて正しく設定されていますが、node.tpl.phpの$ titleが正しく設定されていません。 – deckerdev
Gotcha、aboutsは 'drupal_set_title'を使っていますか?それはテーマ/モジュールの中にありますか?もしそうなら、それは機能していますか? – Clive