テーマフォルダーにあるファイルのURLを取得する方法


6

テーマフォルダーにある画像のURLを取得する方法はありますか?または、テーマフォルダーのURLを取得しますか?

回答:


18

を使用drupal_get_path()して、テーマフォルダーへのパスを取得できます。

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

そこから、次のように特定のファイルを指定できます。

$image_path = $path . '/images/image.jpg';

を使用することもできますがpath_to_theme()、このコンテキストからの戻り値は、呼び出されたコンテキストに応じて変化する可能性があるため、注意が必要です。

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


ご協力いただきありがとうございます。最後にURLにするために必要なのは、パスの先頭に「$ base_url」を追加することだけです。
Andrey Rudenko、2012

1
さらにとして、その機能を使用することもできるfile_create_url()ことが呼び出すことが可能です、絶対URLを取得するので、最後に、: $image_url = file_create_url($image_path);
アンドレイルデンコ

ニートのトリックは、この関数を次の目的で使用する「現在のテーマへのパス」を取得することでもあります。$ themepath = drupal_get_path( 'theme'、$ themename); $ themepathを返します。}
TommiForsström14年

6
$imgurl = file_create_url(path_to_theme().'/images/blah.png');

説明:このコード行は、path_to_theme()を使用してテーマへのパスを取得し、次にfile_create_url()を使用してファイルのURLを作成し、テーマフォルダーにある画像のURLを取得します。 op。

私はそれを説明しないことに対する反対票を得たので、あなたはそこにいます:-)

それはまた、受け入れられた回答と同じですが、より完全にするためにコメントが適用されています。現在のテーマのテーマフォルダーを参照するため、主にテーマテンプレート内で役立ちます。


このコード行が質問に対する回答を提供する場合、その説明を含めるとよいでしょう。
クリシュナモハン2015

あなたが多言語ページを持っているなら、これは行く方法です。drupal_get_pathは、パスの言語接頭辞を処理しません。そのため、ファイルパスは/en/sites/all/themes/mytheme/image.pngになる可能性があります。file_create_urlが適切に処理します。
mwallisch 2017

0

Drupal 8では

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.