URL файлов и изображений в Drupal

19 февраля 2014 - 09:55

Продолжая серию статей о полезных функциях Drupal API, предлагаю рассмотреть еще две - для формирования URL файлов и путей к картинкам в определенном стиле.

Формируем путь к файлу в Drupal

При загрузке файлов в поля типа "Файл" любых сущностей Drupal (ноды, пользователи, термины таксономии) файлы помещаются в папку sites/default/files или во вложенные в эту директорию каталоги. При этом в базе данных сайта в таблице file_managed создается запись, включающая унифицированный идентификатор (URI) файла, например "public://04_0.jpg". Это означает, что в папке, предназначенной для загрузки общедоступных файлов (см. раздел admin/config/media/file-system), имеется файл 04_0.jpg. Наша задача - сформировать URL этого файла, чтобы затем использовать его, например, для вывода изображения или ссылки на скачивание.

Для решения этой задачи в Drupal API служит функция file_create_url(), аргументом которой является URI, а возвращаемым значением – путь к файлу на сервере. Пример:

  <?php
    print file_create_url('public://04_0.jpg'); /* Получим '<a href="http://mysite.com/sites/default/files/04_0.jpg'">http://mysite.com/sites/default/files/04_0.jpg'</a> */
  ?>

Формируем путь к файлу изображения в определенном стиле

В Drupal имеется удобный функционал по генерации изображений в различных стилях, который значительно расширяется модулем ImageCache Actions, позволяющим применять к картинкам сложные эффекты (наложение «водяных знаков», обесцвечивание, поворот и т.д.). Созданные в определенном стиле картинки хранятся в папке, название которой совпадает с машинным именем стиля. Так, миниатюры изображений в стиле thumbnail будут находиться в каталоге sites/default/files/styles/thumbnail/public (public – для общедоступных файлов). Соответственно может возникнуть задача – получить не просто URL файла исходного изображения, а адрес картинки в определенном стиле.

Для получения адреса изображения в заданном стиле в Друпале имеется функция image_style_url(). Ее первым аргументом является машинное имя стиля изображения, а вторым – URI файла картинки. Пример:

  <?php
    print image_style_url('thumbnail', 'public://04_0.jpg'); /* Выведет '<a href="http://mysite.com/sites/default/files/styles/thumbnail/public/04_0.jpg?itok=kj2a-7zs"">http://mysite.com/sites/default/files/styles/thumbnail/public/04_0.jpg?i...</a> */
  ?>

Итак, уважаемые читатели, теперь мы знаем, как в Drupal получить url файлов, в том числе изображений в заданном стиле. Надеюсь, что, как и материалы из предыдущей статьи о функциях Drupal для работы с URL страниц, эта информация также будет вам полезна.