Автоматическое заполнение alt изображений поля ноды с помощью Rules

31 июля 2014 - 15:44

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

В типе материала сайта на Drupal создано поле типа «Изображение» с неограниченным количеством значений. Необходимо при добавлении или обновлении ноды этого типа заполнять атрибуты alt для картинок, загруженных в поле «Изображение», заголовком ноды, если значения alt не заданы.

Решение

Для решения задачи без создания собственного модуля я использовал Rules. Вначале создал компонент «Правило» с настройками, приведенными на скриншоте:

Создание компонента Rules

В компоненте нам нужны два типа данных – «Содержимое» (т.е. нода, из объекта которой мы будем использовать заголовок), а также обычная строка текста для атрибута alt.

Далее в нашем компоненте-правиле задаем условие (проверяем, заполнено значение alt или нет) и действие – заполнение атрибута alt заголовком ноды:

Задание условия и действия в компоненте Rules в Drupal

Теперь создаем само правило назначения атрибута alt изображениям, которое будет срабатывать при сохранении материала. Собственно, все настройки правила наглядно представлены на следующем скриншоте.

Задание alt картинки в Drupal с помощью Rules

Вкратце суть правила:

  1. Перед сохранением материала проверяем, содержит ли он поле с машинным именем field_photo.
  2. Если такое поле имеется, в цикле (loop) перебираем все его значения (для случая с одним значением поля цикл не нужен).
  3. На каждой итерации цикла запускаем компонент-правило, в котором вначале осуществляется проверка на наличие атрибута alt у изображения и в случае, если он не задан, ему присваивается значение заголовка ноды. При этом в настройках указываем соответствие данных между правилом и компонентом следующим образом:
    Задание данных для компонента правила Rules

Задача решена.