27

Drupal APIdrupal_get_path($type, $name)可以提供任何特定主题或模块的路径。如果我想要当前主题的路径怎么办?

4

8 回答 8

27

使用该path_to_theme功能。

于 2008-11-20T18:38:02.870 回答
20

这应该有效(文档):

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

// there's also a $theme_path global

global $theme_path;
于 2008-11-19T23:25:54.430 回答
10

在 D6 中 path_to_theme() 可能不会以您期望的方式运行,具体取决于您使用它的方式。如果你在任何主题预处理函数之外使用它,那么它可能会给你你想要的,但是如果它在模块的主题/预处理钩子函数的上下文中被调用......它将指向模块路径宣布了主题。

前任。如果我有一个主题“my_theme”和我的模块“my_module”,它使用预处理钩子覆盖论坛主题,在我的模块中调用 path_to_theme():例如 my_module_preprocess_forums()... 将返回“forums”,而不是“my_theme “正如人们所预料的那样。

如果你问我,非常有果味。

于 2010-03-03T20:40:59.760 回答
5

在 Drupal 7 中,为了获取当前主题的路径,我们可以使用: path_to_theme()函数。

于 2012-02-07T12:44:33.027 回答
4

在 Drupal 8 中

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
于 2018-01-29T09:30:29.717 回答
3

在 Drupal 8 中,如果您需要在激活管理主题时获取活动主题路径,您可以获取默认主题路径:

$themeHandler = \Drupal::service('theme_handler');
$themePath = $themeHandler->getTheme($themeHandler->getDefault())->getPath();
于 2019-11-11T12:17:23.523 回答
1

在 Drupal 5 中,您可以简单地使用: path_to_theme()

这将为您提供从 Drupal 根目录到特定主题目录的完整路径。请注意,它不包含尾部斜杠。

在 Drupal 6 中,它的行为略有不同。如果您从页面中调用它,它将调用当前正在执行主题的任何内容......无论是您的主题、模块等。这是来自 API 文档的关键引用:

它可以指向活动主题或处理主题实现的模块。例如,当在主题调用范围内调用时,它将取决于处理主题函数的位置。如果从一个模块实现,它将指向该模块。如果从活动主题实现,它将指向活动主题。当在主题调用范围之外调用时,它将始终指向活动主题。

来源:http ://api.drupal.org/api/function/path_to_theme

于 2008-12-12T17:46:46.483 回答
0

对于 D8,主题文件夹在预处理函数中可用:

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

page.html.twig:

<img src="{{ logo_src }}">
于 2017-12-20T16:48:44.090 回答