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

Июль 13, 2016 г.

Что уж там говорить, Drupal грешит нестрогой машрутизацией. К примеру, вы создаёте маршрут /mypage, то Drupal направит к обработчику все запросы вида /mypage/subpage и /mypage/subpage/subpage2 и т.д. Вы можете обратиться, к примеру, к публикации ...

Читать

Показ анимации, что идет загрузка, для обновления контента views в режиме ajax

Май 22, 2021 г.

Подгрузка данных с сервера (например, при изменении параметров фильтра) происходит с небольшой задержкой, потому пользователь может не понять, среагировал как то сайт или нет на его действия. Задача состоит в том, чтобы показать, что идет загрузка ...

Читать

Добавляем свой фильтр в TWIG на Drupal

Июнь 1, 2023 г.

В TWIG уже много разных встроенных фильтров, Drupal их перечень только расширяет. Но наше счастье было бы не полным, если бы мы не могли добавить свои фильтры. В Drupal это делается через сервис twig.extension. Для начала надо сформировать описатель, ...

Читать

Как добавить css классы в attributes (twig, Drupal)

Май 16, 2024 г.

Порою требуется добавить свои классы в переменную attributes на уровне шаблона (в twig). Переменная attributes - это объект Drupal\Core\Template\Attribute. У него есть нужный нам метод - addClass(). Пример использования: [crayon-69a8346a33c8c861744047/]

Читать
 

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

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



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