Грузим картинку в поле 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 обновит сам.

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

Blazy Error - Not enabled: Use theme_blazy()

Март 27, 2024 г.

Встретил такую ошибку в консоли pantheon.io сайта на Drupal. Пантеон показывает копию статуса самого сайта, т.е. то, что вы видите на странице /admin/reports/status, но при этом не показывает подробностей. Из за этого сложно понять где и как решать ...

Читать

Сохранение файла, загруженного на сервер с помощью PHP

Январь 29, 2021 г.

Эта статья о некоторых задачах, возникающих при сохранении файла на сервере, при получении его от пользователя через форму (<input type="file" />). Определимся с требованиями. Технически, решение нужно в виде функции, которая принимает набор ...

Читать

Редирект после отправки формы в Drupal 8/9

Январь 22, 2022 г.

Для семерки можете посмотреть другую статью. Обычно правят поведение существующих форм через hook_form_alter, добавляя туда еще один обработчик submit. Специальный метод setRedirectUrl объекта FormStateInterface позволяет настроить адрес перенаправления. ...

Читать

Создание патча для модуля Drupal

Декабрь 4, 2017 г.

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

Читать
 

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

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



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