Как получить абсолютный путь к папке sites / all в drupal? - PullRequest
2 голосов
/ 03 декабря 2011

Я хочу отобразить два разных логотипа на моем сайте 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';    
  }

Это прекрасно работает для первой страницы и любой страницы, на которой URL-адрес веб-сайта / страницы; однако он не работает для страниц, URL-адрес которых похож на websiteurl / custompath / page.

Я думаю, что проблема заключается в относительности страниц, которые имеют собственный URL-путь.

Есть идеи?

Ответы [ 2 ]

7 голосов
/ 03 декабря 2011

Вы можете использовать drupal global $base_url, чтобы получить абсолютный путь установки и добавить к нему абсолютный путь вашего образа.

См. Документация Drupal к этой теме .

Вы также можете использовать base_path () , чтобы получить путь.

4 голосов
/ 13 декабря 2013

Важно отметить, что:

  • 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, без косой черты.

...