Drupal 7 решение ошибки "Используемый в поле файл не может быть использован."

Категория: Drupal
Дата публикации: 14 марта, 2016 - 14:40
Последнее изменение: 16 марта, 2016 - 14:01

Задача: ошибка "Используемый в поле файл не может быть использован." / "The file used in the field may not be referenced."
Сайт с такой ошибкой пришел ко мне на поддержку. Это сообщение отображалось каждый раз при попытке сохранения материала, к которому через поле была прикреплена картинка, причем если перезагрузить картинку в поле (удалить и заново добавить), то ошибка исчезала и нода сохранялась.
В таблице file_managed и колонке timestamp у ВСЕХ файлов значилось "2014". Как и кто загружал в тысячи нод файлы - не известно, но понятно, что делалось это каким-то странным способом, отчего теперь отображались такие ошибки.

Решение: переприкрепить к нодам в поля соответствующие картинки. Казалось бы, все просто, но на сайте несколько тысяч нод, а значит вручную это делать - не серьезно.
Отсюда план действий следующий:
- выгрузить в файл nid и соответствующее имя картинки, которая прикреплена
- загрузить файл заново на сайт, обновив только значения в поле картинки

Понадобятся следующие модули:

https://www.drupal.org/project/views
https://www.drupal.org/project/views_data_export
https://www.drupal.org/project/feeds
https://www.drupal.org/project/image_url_formatter

Шаг 1.
Создаем вьюс, в котором выводим поле NID и поле картинки. В настройках поля картинки выбираем следующие настройки
node-14032016.png

Шаг 2. Добавляем дисплей "Data Export", формат файла я выбирал CSV. Если на сайте много нод, то в настройках нужно включить "Batched export". Для удобства дисплей экспорта можно подключить к дисплею страницы. Тогда на ней внизу страницы появится оранжевая кнопка "CSV", по клику на которую начнется выгрузка.

Шаг 3. Добавляем новый импорт feeds. В настройках соответствия указываем nid (ставим "уникальность") и второе поле - картинка (по URI).
node-14032016_2.png

Базовые настройки feeds я пропустил, там проблем быть не должно.

После завершения импорта ноды станут сохраняться как положено, ошибок не будет.

Добавить комментарий