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 8では、管理テーマがアクティブなときにアクティブなテーマパスを取得する必要がある場合、デフォルトのテーマパスを取得できます。
$themeHandler = \Drupal::service('theme_handler');
$themePath = $themeHandler->getTheme($themeHandler->getDefault())->getPath();
Drupal 5では、次のように簡単に使用できます:path_to_theme()
これにより、Drupalのルートから特定のテーマディレクトリへの完全なパスが提供されます。末尾にスラッシュが含まれていないことに注意してください。
Drupal 6では、これは少し異なる動作をします。ページ内から呼び出すと、テーマを実行しているものすべてが呼び出されます...テーマかモジュールか、以下は、APIドキュメントの主な引用です。
アクティブなテーマまたはテーマ別の実装を処理するモジュールを指すことができます。たとえば、テーマ呼び出しのスコープ内で呼び出された場合、テーマ関数が処理される場所によって異なります。モジュールから実装されている場合は、モジュールを指します。アクティブなテーマから実装された場合、アクティブなテーマを指します。テーマ呼び出しの範囲外で呼び出されると、常にアクティブなテーマを指します。
D8の場合、前処理関数でテーマフォルダーを使用できます。
function hook_preprocess_page(&$variables) {
$variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}
page.html.twig:
<img src="{{ logo_src }}">