web-dev-qa-db-ja.com

$ base_urlとpath_to_theme()を連結します

私は。tpl.phpファイルにこの種のコードを記述して、画像を表示するために使用しています(たとえば)。

<?php echo $base_url .'/'. path_to_theme();?>

$ base_urlpath_to_theme()を単一のコマンド/変数に連結することは可能でしょうか?

3
vanz

hook_preprocess($vars)で$ varsに_path_to_theme_という名前の新しい変数を作成します。以下を含めます(_$hook_はページ、ノード、ブロックなど)。

_function mymodule_preprocess(&$vars, $hook) {
  $vars['path_to_theme'] = base_path().path_to_theme();
}
_

これで、ほぼすべてのテーマのテンプレートで変数_$path_to_theme_を使用でき、base_path().path_to_theme()の内容になります

これをカスタムモジュールに入れるか、mymoduleをテーマの名前に置き換えて、テーマの_template.php_に配置できることに注意してください。

この変数をサイトの特定のコンテンツにのみ追加する場合は、 ノード 、ページ、およびその他の「フック」固有の前処理関数を使用できます。

ノード、ページなどを前処理するための多くのオプションがあります: テンプレートで使用する変数の設定(前処理および処理関数)

また、次のような デフォルトのベースライン変数 も必ずお読みください。

$ directoryベースインストールに関連するテーマのパス。例:「sites/all/themes/myTheme」

4
electblake

テーマのtemplate.phpファイルのtheme_preprocess_node()またはtheme_preprocess_page()を使用して、そこに連結パスを作成し、テンプレートファイルからアクセスできるようにすることができます。

function yourthemename_preprocess_node(&$vars) {
  $vars['theme_path'] = base_path() . path_to_theme();
}

function yourthemename_preprocess_page(&$vars) {
  $vars['theme_path'] = base_path() . path_to_theme();
}

次に、テンプレートファイルで$ theme_pathを常に使用できます。

0
Jepedo