Как мне узнать путь к текущей теме друпалов? - PullRequest
23 голосов
/ 20 ноября 2008

API Drupal имеет drupal_get_path($type, $name), который даст путь к любой конкретной теме или модулю. Что делать, если я хочу путь к текущей теме?

Ответы [ 7 ]

25 голосов
/ 20 ноября 2008

Используйте функцию path_to_theme.

20 голосов
/ 20 ноября 2008

это должно работать ( документ ):

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

// there's also a $theme_path global

global $theme_path;
10 голосов
/ 03 марта 2010

В D6 path_to_theme () может вести себя не так, как вы ожидаете, в зависимости от того, как вы его используете. Если вы используете его вне каких-либо функций препроцессора темы, то он, вероятно, даст вам то, что вы хотите, но если он вызывается в контексте функции подключения тем / препроцесса модуля ... он будет указывать на путь модуля объявил тему.

Ex. Если у меня есть тема «my_theme» и мой модуль «my_module», который переопределяет темы форума с помощью обработчиков препроцесса, вызывая path_to_theme () внутри моего модуля: например my_module_preprocess_forums () ... вернет "форумы", а не "my_theme", как можно было бы ожидать.

Очень фруктовый, если вы спросите меня.

5 голосов
/ 07 февраля 2012

В Drupal 7 для получения пути к текущей теме мы можем использовать: path_to_theme () функция.

3 голосов
/ 29 января 2018

In Drupal 8

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
1 голос
/ 12 декабря 2008

В Drupal 5 вы можете просто использовать: path_to_theme ()

Это даст вам полный путь от корня Drupal до конкретной директории темы. Имейте в виду, это не включает в себя косую черту.

В Drupal 6 это ведет себя немного по-другому. Если вы вызываете его из своих страниц, он будет вызывать то, что в данный момент выполняет тематику ... будь то ваша тема, модуль и т. Д. Вот ключевая цитата из документации API:

Может указывать на активную тему или модуль обработки тематических реализация. Например, когда вызывается в рамках темы назвать это будет зависеть от того, где Тематическая функция обрабатывается. Если реализовано из модуля, оно будет указать на модуль. Если реализовано из активной темы, он укажет на активную тему. Когда звонили выходит за рамки тематического звонка, это всегда будет указывать на активный тема.

Источник: http://api.drupal.org/api/function/path_to_theme

0 голосов
/ 20 декабря 2017

Для D8 папка темы доступна в функциях предварительной обработки:

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

page.html.twig:

<img src="{{ logo_src }}">
...