2008-11-19 100 views

回答

19

这应该工作(doc):

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

// there's also a $theme_path global 

global $theme_path; 
+0

嗨欧文感谢info – 2010-03-22 12:34:09

+0

最好使用`path_to_theme()`,而不是使用`$ theme_path`。 – kiamlaluno 2010-09-29 20:53:59

0

在Drupal的5,你可以简单地使用:path_to_theme()

这会给你的Drupal的根目录的完整路径特定主题目录。请注意,它不包含尾部斜线。

在Drupal 6中,它的行为有点不同。如果您从网页中调用它,它会调用任何正在进行主题的任何操作......无论这是您的主题,模块等。以下是来自API文档的重要报价:

它可以指向以活动主题或 模块处理主题 实施。例如,当 调用范围内调用 时,它将取决于主题函数的处理位置。如果从模块实现 ,则将 指向该模块。如果从活动主题实施 ,则它将指向 到活动主题。当主叫号码 超出主叫范围 时,它将始终指向主动 主题。

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

9

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

Ex。如果我有一个主题“my_theme”和我的模块“my_module”,它使用预处理钩子重写论坛主题,请在我的模块中调用path_to_theme():例如my_module_preprocess_forums()...将返回“论坛”,而不是人们所期望的“my_theme”。

如果你问我很果味。

4

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

0

对于D8,主题文件夹可以在预处理功能:

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

page.html.twig:

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

在Drupal的为8个

global $base_url; 
$theme = \Drupal::theme()->getActiveTheme(); 
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg'; 
相关问题