У меня есть несколько изображений в drupal/sites/default/files/images/.
Как я могу получить абсолютный путь для изображения, такого как abc.jpg, помещенного в этот каталог?
У меня есть несколько изображений в drupal/sites/default/files/images/.
Как я могу получить абсолютный путь для изображения, такого как abc.jpg, помещенного в этот каталог?
Если 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";
Итак, если файлы находятся в:
$image = "sites/default/files/images/abc.jpg"
.$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>
Для Друпал 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;
Просто используйте
$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, наслаждайтесь им, любите его
file_directory_path был удален в drupal 7. Если вы используете его, вы получите сообщение об ошибке «вызов неопределенной функции». Попробуйте использовать drupal_real_path или . Вы можете найти информацию об устаревшей функции здесь. http://api.drupal.org/api/drupal/includes!file.inc/function/file_directory_path/6
public://
даст вам абсолютный путь к общей папке
Пример: получить доступ
drupal/sites/default/files/images/
просто поставь
public://images/
Я попробовал решение Марка и обнаружил, что мой каталог — «/sites/default/files/images/a.jpg».
Но когда я записываю это в свои узлы как img src, связанные изображения не отображаются. Кроме того, когда я написал «../sites/default/files/images/a.jpg», это сработало :)
Потому что в первом случае Drupal пытался найти файл в "content/sites/default/files/images/a.jpg"