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

Написать комментарий

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

Установим контекстные фильтры в drupal views программно

Август 30, 2021 г.

Пример кода как рендерить блок views с программной установкой contextual filters. Контекстные фильтры устанавливаются методом ViewExecutable::setArguments(array $ARGS). В примере я передаю пару аргументов в качестве значений контекстных фильтров. ...

Читать

Как в Drupal 6 удалять свои комментарии?

Июль 24, 2014 г.

Есть такая больная мозоль у drupal - это модуль комментариев. Ситуация как в анекдоте - прислали индусам из России танк. Как ни собирают - получается комбайн. Перечитывают инструкцию по сборке - "после сборки доработать напильником". С комментариями ...

Читать

 

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

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



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