2011-12-03 125 views
2

我想在我的drupal站点上显示两个不同的标志:一个用于首页,另一个用于内部页面。如何获取drupal中sites/all文件夹的绝对路径?

if (drupal_is_front_page()) { 
    $variables['logo']=drupal_get_path('theme', 'hanna') . '/images/logo.png'; 
    } 
    else { 
    $variables['logo']=drupal_get_path('theme', 'hanna') . '/images/logo-inner.png';  
    } 

这只是正常的头版,并具有websiteurl /页的URL的任何页面;但是,它不适用于网址类似于websiteurl/custompath/page的页面。

我认为问题在于具有自定义URL路径的页面的相对性。

你有什么想法吗?

回答

7

您可以使用drupal全球$base_url获取安装的绝对路径,并将图像的绝对路径附加到它。

参见the Drupal Documentation to this topic

您还可以使用base_path()来获取路径。

+0

是的,我已经使用了base_path()。drupal_get_path('theme','hanna')。 '/images/logo.png'; –

+0

你是对的:base_path()甚至是更好的解决方案:) – Nebel54

4

重要的是要注意这一点很重要:

  • base_path()返回到安装您的Drupal网站上的文件夹中的相对路径。
  • $base_url返回您的域路径而不会出现斜线。

所以要一定要有正确的绝对路径,你必须使用这两者:

//example to get an image absolute path 
global $base_url; 

$image_path = $base_url . base_path() . path_to_theme() . '/images/my-image.png'; 
//$image_path will output something like: "http://www.my-domain.com/sites/all/themes/your-theme-name/images/my-image.png" 

NB:path_to_theme就像$ BASE_URL,没有尾随斜线。

+0

NOTA BENE:我今天发现'path_to_theme'将返回定义模板的路径。例如,如果主题功能来自模块,那么它将返回模块路径而不是主题路径... – anou

相关问题