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

Март 20, 2016 г.

Наверняка вы слыхали о подходе MVC (model-view-controller) в веб-программировании. В Drupal для реализации данного подхода есть все необходимые инструменты. При этом уровень контроллера по большей части уже реализован, т.к. движок предлагает вам реализовать ...

Читать

Удаление элементов из массива в PHP

Ноябрь 11, 2015 г.

Массивы в PHP - один из мощнейших инструментов программиста. Когда я начинал изучать PHP, у меня был определенный багаж знаний работы с массивами в других языках программирования, таких как C++, Delphi и Fortrain. Везде требовалось объявить массив, указать ...

Читать

 

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

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



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