【问题标题】:How to get the absolute path to the sites/all folder in drupal?如何在drupal中获取站点/所有文件夹的绝对路径?
【发布时间】:2023-03-31 20:20:01
【问题描述】:

我想在我的 drupal 网站上显示两个不同的徽标:一个用于首页,一个用于内页。

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/page 作为 URL 的页面;但是,它不适用于 URL 类似于 websiteurl/custompath/page 的页面。

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

你有什么想法吗?

【问题讨论】:

    标签: drupal drupal-7 relative-path drupal-theming absolute-path


    【解决方案1】:

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

    the Drupal Documentation to this topic

    也可以使用base_path()获取路径。

    【讨论】:

    • 是的,我使用过 base_path().drupal_get_path('theme', 'hanna') 。 '/images/logo.png';
    【解决方案2】:

    需要注意的是:

    • 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"
    

    注意:path_to_theme 类似于 $base_url,没有尾部斜杠。

    【讨论】:

    • NOTA BENE:我今天发现path_to_theme 将返回定义模板的路径。例如,如果主题函数来自模块,那么它将返回模块路径而不是主题路径...
    猜你喜欢
    • 2013-08-28
    • 2015-09-09
    • 2011-08-30
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多