Как получить абсолютный путь для изображения в Drupal? - PullRequest
5 голосов
/ 19 августа 2010

У меня есть несколько изображений в drupal / sites / default / files / images /.

Как я могу получить абсолютный путь для изображения, такого как abc.jpg, расположенного в этом каталоге?

Ответы [ 6 ]

12 голосов
/ 19 августа 2010

Если Drupal находится в своем собственном домене (то есть http://example.com), абсолютный путь будет /sites/default/files/images/abc.jpg.

Если Drupal находится в подпапке (например, http://example.com/drupal), абсолютный путь будетбыть /drupal/sites/default/files/images/abc.jpg.


Как я объяснил в своем ответе на тот же вопрос, который вы удалили, если вы пытаетесь программно сгенерировать путь (то есть вы не знаете, где находится каталог файлов), вам нужно использовать file_directory_path():

$image = file_directory_path() . "/images/abc.jpg";

Поэтому, если файлы находятся в:

  • sites / default / files : $image = "sites/default/files/images/abc.jpg".
  • sites / example.com / files : $image = "sites/example.com/files/images/abc.jpg".

Если ваш предыдущий вопрос все еще является вариантом использования, вам следуетиспользуя l() и theme_image() для генерации ссылок и изображений соответственно внутри вашего модуля.Это обеспечит правильность сгенерированных путей в среде Drupal.

Используя ожидаемый вывод, который вы предоставили ранее, решение будет выглядеть следующим образом:

// Images are in drupalroot/sites/default/files/images
$path = file_directory_path() . '/images/';

$detail_file = 'detail_1.jpg';
$image_file  = '1.jpg';

$img = theme('image', $path . $image_file);

$options = array(
  'attributes' => array(
    'title' => t('Sample title for image 1 lorem ipsum'),
  ),
  'html' => TRUE,
);
$output = l($img, $path . $detail_file, $options);

Таким образом, если ваш сайт находится на http://example.com/, результат будет:

<a href="/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum">
  <img src="/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" />
</a>

Но если ваш сайт находится в подпапке (например, http://example.com/drupal), результат будет:

<a href="/drupal/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum">
  <img src="/drupal/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" />
</a>
11 голосов
/ 30 ноября 2012

Для Drupal 7

$relativePath = "blabla/abc.jpg";

$uri = file_build_uri($relativePath);

//show public://blabla/abc.jpg
echo $uri; 

$url = file_create_url($uri);

//show http://www.yoursite.com/sites/default/files/blabla/abc.jpg
echo $url; 
4 голосов
/ 03 февраля 2012

Просто используйте

$url_image = url('sites/default/files/'.file_uri_target($uri), array('absolute'=>true));

В этом случае у вас будет путь, например "http://www.mywebsite.com/sites/default/files/images/image.jpeg"

$ uri - это внутренний путь, например" public: //images/image.jpeg "

Это Drupal 7, наслаждайся, люби это

2 голосов
/ 08 апреля 2013

file_directory_path был удален в drupal 7. Если вы используете его, вы получите сообщение об ошибке «вызов неопределенной функции».Попробуйте использовать drupal_real_path или.Вы можете найти об устаревшей функции здесь.http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6

1 голос
/ 09 ноября 2012

public:// даст вам абсолютный путь к общей папке

Пример: для доступа

drupal/sites/default/files/images/

просто поставь

public://images/
0 голосов
/ 08 декабря 2011

Я попробовал решение Марка и обнаружил, что мой каталог «/sites/default/files/images/a.jpg"

Но когда я записываю это в мои узлы как img src, на нем не отображаются похожие изображения Кроме того, когда я написал "../Sites/default/files/images/a.jpg" Сработало:)

Потому что в первом случае Drupal пытался найти файл в "Содержание / сайты / по умолчанию / файлы / изображения / a.jpg"

...