Как получить путь к текущей теме drupal?

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

7 ответов


использовать 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 () может вести себя не так, как вы ожидаете, в зависимости от того, как вы его используете. Если вы используете его вне каких-либо функций предварительного процесса темы, то он, вероятно, даст вам то, что вы хотите, но если он вызывается в контексте функции Theming/preprocess модуля... он будет указывать на путь модуля, который объявил тему.

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

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


в 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";
}

страница.формат html.веточка:

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