現在のdrupalテーマのパスを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/303761

  •  08-07-2019
  •  | 
  •  

質問

Drupal APIには drupal_get_path($ type、$ name) は、特定のテーマまたはモジュールのパスを提供します。現在のテーマのパスが必要な場合はどうなりますか?

役に立ちましたか?

解決

path_to_theme 関数を使用します。

他のヒント

これは機能するはずです( doc ):

global $theme;
$path = drupal_get_path('theme', $theme);

// there's also a $theme_path global

global $theme_path;

D6では、path_to_theme()は、使用方法によっては期待どおりに動作しない場合があります。テーマの前処理関数の外部で使用している場合、おそらく必要なものが提供されますが、モジュールのテーマ/前処理フック関数のコンテキスト内で呼び出されている場合は、次のモジュールパスを指しますテーマを宣言しました。

例テーマがある場合" my_theme"と私のモジュール" my_module"これは、プリプロセスフックを使用してフォーラムテーマをオーバーライドし、私のモジュール内でpath_to_theme()を呼び出しています。 my_module_preprocess_forums()...は、「my_theme」ではなく「forums」を返します。予想どおり。

私に尋ねるととてもフルーティーです。

Drupal 7では、現在のテーマのパスを取得するために、次を使用できます。 path_to_theme()関数。

Drupal 8で

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';

Drupal 5では、単にpath_to_theme()

を使用できます。

これにより、Drupalのルートから特定のテーマディレクトリへの完全なパスが提供されます。末尾のスラッシュが含まれていないことに注意してください。

Drupal 6では、これは少し異なる動作をします。ページ内から呼び出すと、テーマやモジュールなど、現在テーマを実行しているものがすべて呼び出されます。APIドキュメントからの重要な引用は次のとおりです。

  

アクティブなテーマを指すか、   テーマを処理するモジュール   実装。たとえば、   テーマの範囲内で呼び出されます   呼び出す場所によって異なります   テーマ機能が処理されます。もし   モジュールから実装され、それは   モジュールを指します。実装されている場合   アクティブなテーマから、それは指す   アクティブなテーマに。呼ばれたとき   テーマ呼び出しの範囲外   常にアクティブを指します   テーマ。

出典: http://api.drupal.org/api/function/path_to_theme

D8の場合、テーマフォルダーはプリプロセス関数で使用できます。

function hook_preprocess_page(&$variables) {
  $variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}

page.html.twig:

<img src="{{ logo_src }}">
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top