Грузим картинку в поле image в Drupal

Из кода программы на PHP мы попытаемся загрузить картинку в публикацию сайта на Drupal 7. Здесь описана логика и показан код всех операций.

Постановка задачи

Эта задача является частью задачи импорта статьи, извлеченной из HTML кода веб-страницы сайта, в хранилище публикаций сайта на движке drupal. Потому, мы можем извлечь полную информацию об изображении, которая есть в HTML документе, не ограничиваясь только файлом картинки. Например, это значения атрибутов тега IMG — alt и title.

Итак, входными данными у нас будет HTML код с тегом IMG. А результатом работы — создание публикации с полем типа image, куда будет загружено изображение.

План реализации

Для захвата планеты выполнения задачи набросаем планчик:

  • Загрузка изображения из внешнего источника;
  • поиск имеющегося или сопоставление нового объекта file;
  • создание поля типа image для публикации;
  • сохранение публикации.

Дальше все по плану.

Загрузка изображения из внешнего источника.

Входные данные, ожидается, что представляют из себе вот такой текст:

Для получения атрибутов я использую незамысловатую функцию собственного производства — myLib::tagParse($htmlTagCode). Она дербанит картинку, и мы получаем массив её свойств. Код tagParse, смотрите чуть ниже.

Дальше мы выясняем, что из себя представляет ссылка и выполняем загрузку файла изображения, используя ещё одну из 1000 функции из моей коллекции — myLib::local_copy($externalURL) :).

На этом этапе мы должны получить в переменной $fileUri относительный url (начинается с «/») на изображение уже загруженное на сайт под drupal.

А вот код tagParse.

Поиск имеющегося или сопоставление нового объекта file.

Функция local_copy, которой мы воспользовались на прошлом этапе не будет  скачивать картинку, если такая уже есть на сайте в папке для экспорта. Она просто вернет её относительный url. Изображение даже может уже содержаться в таблице file_managed. Попробуем найти его там.

Результатом этого этапа должен стать объект file, описывающий загруженный в drupal файл.

Создание поля типа image для публикации.

Пусть в нашем примере оно имеет имя field_image. Оно одно из многих полей публикации, которые нужно определить перед сохранением публикации в базу. Не будем перечислять все, нам важно только как выглядит структура картинки.

Осталось сохранить публикацию.

Статистику использования файла в таблице file_usage, drupal обновит сам.

Мало букафф? Читайте есчо !

Включить вывод php ошибок в drupal 7

Январь 24, 2020 г.

Drupal надстраивает собственные разрешения на вывод ошибок, потому если вам необходим вывод ошибок на этапе разработки, то важно знать как разрешить их ...

Читать

TMGMT переводит поле view_mode, объявленное плагином menu_link_extras

Июнь 17, 2024 г.

Поля, определенные модулями, не попадают в конфиг файлы сайта, и их не получается настроить привычным способом. В данном случае, требуется как то указать TMGMT модулю, что не нужно переводить поле view_mode. Чтобы предотвратить проблему, можно ...

Читать

Интеграция Usercentrics CMP в Drupal

Октябрь 21, 2021 г.

Интеграция не сложна в принципе, т.к. Usercentrics CMP ставит задачу упростить сбор разрешений пользователя и управление скриптами на основе данных разрешений. Первым шагом интеграции является подключение скриптов CMP в заголовок (head) страницы ...

Читать

Вывод меню с фиксированной глубиной в Drupal

Март 25, 2019 г.

Блок меню core модуля menu позволяет вывести всю иерархию меню полностью, но иногда требуется показать только 1-2 верхних уровня. Посмотрим как организовать такой вывод. Drupal в модуле menu использует функцию menu_tree('ИМЯ МЕНЮ'), чтобы рендерить ...

Читать
 

Комментарии к «Грузим картинку в поле image в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: