web-dev-qa-db-ja.com

テーマの変数を上書きするにはどうすればよいですか?

function rate_preprocess_test(&$variables) {
  extract($variables);
  $buttons = array();
  foreach ($links as $link) {
    $button = theme('rate', $link['text'], $link['href']);
    $button .= $link['votes'];
    $buttons[] = $button;
  }
  $variables['buttons'] = $buttons;
}

$link['votes']変数を上書きして、<span>の周りに$link['votes']タグを追加したいと思います。

これはtemplate.phpに追加したコードですが、追加した<span>タグが含まれていません。

function mytheme_preprocess_test(&$variables){
    $link['votes']='<span>'.$link['votes'].'</span>';
}

$link['votes']の周りにspanタグを追加したいと思います。

1
enjoylife

_<span>_タグがrate_preprocess_test()から出力されるボタンに表示されない理由がわからない場合は、mytheme_preprocess_test()rate_preprocess_test()の後に呼び出されるためと考えられます。 。
私はrate_preprocess_test()がモジュール内で定義されていると思います。その場合、モジュール内で定義された前処理関数は、テーマに含まれる前処理関数の実装の前に呼び出されます。これは、 theme() のドキュメントで報告されているように、前処理関数が次の順序でリストされています。 :

  • template_preprocess(&$ variables)
  • template_preprocess_HOOK(&$ variables)
  • MODULE_preprocess(&$ variables)
  • ENGINE_engine_preprocess(&$ variables)
  • ENGINE_engine_preprocess_HOOK(&$ variables)
  • ENGINE_preprocess(&$ variables)
  • ENGINE_preprocess_HOOK(&$ variables)
  • THEME_preprocess(&$ variables)
  • THEME_preprocess_HOOK(&$ variables)
0
kiamlaluno