Делаем загрузку изображений в Drupal удобнее

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

В наше время кажется само собой разумеющимся загрузка нескольких файлов вместе, а не по очереди как в до-вконтактовские времена, помню еще лет 5 назад все заказчики хотели загрузку файлов как в контакте, прямо требовали, а тогда ничего рабочего и не было кроме как скрипта plupload, который работал на флеше, а с выходом в свет html5 браузеры наконец-то начали поддерживать мультизагрузку и появилось куча модулей для этого, даже для Drupal 😀

Из всего множества меня больше всего устраивает Multiupload Imagefield Widget который работает поверх Multiupload Filefield Widget. Работает он просто, ставишь модуль, создаешь поле с загрузкой изображений и в настройках виджета выбираешь multiupload:multiupload image select widgetТеперь поле будет поддерживать выбор нескольких изображений для загрузки. Но это только половина того что мне нужно, для полного счастья не хватает возможности выбора уже загруженных изображений. Для этого существует модуль Visual select file который работает поверх FileField Sources и добавляет еще один вариант загрузки файла из уже загруженных. Чтобы добавить такую функцию к полю нужно в настройках поля в разделе File sources выбрать Autocomplete reference textfield (with Visual Select File):visual file select widget settingsТак же этот вариант добавляет текстовое поле с ajax поиском по файлам, но настройка Hide reference textfield скрывает это поле и показывает только «Choose file» кнопку из модуля Visual select file.

Но самое обидное то, что из коробки модуль FileField Sources не работает вместе с Multiupload Image Widget, но эту проблему легко решить, нужно всего лишь написать пару hook’ов.

Если кратко, то к виджету mfw_managed_file нужно добавить пару process функций из других модулей, и все заработает как нужно. Код ниже можно просто скачать и сохранить в модуль под названием fix_image_uploader, только переименовать файлы .module.php и .info.ini, я их так назвал чтобы github правильно подсвечивал синтаксис.

В итоге поле с загрузкой файла будет выглядеть следующим образом:visual file select widget previewИ при нажатии на «Choose file» откроется окно с выбором файла. Вся прелесть в том что это окно выводится через views и соответственно можно использовать все преимущества вьюх. В первую очередь советую добавить фильтрацию по файлам загруженным текущим пользователем, чтобы он не мог выбрать не свои файлы, это в том случае если у вас сайт для нескольких пользователей. Также можно изменить размер миниатюр, показать дополнительные данные о файле, сменить плитку таблицей, в общем можно разгуляться. А вот так выглядит окно выбора файла:visual file select views

Делаем загрузку изображений в Drupal удобнее: 9 комментариев

  1. adubovskoy

    Подход интересный, вьюсы порадовали конечно.
    Не хотите сделать репост на dru.io? Думаю многие будут благодарны.

    1. zviryatko Автор записи

      Копипаста всегда плохо, как вариант можно вставить краткое описание, видео, линку на модуль и линку на оригинальный текст.

      1. adubovskoy

        да, как вариант, как вам удобно будет . Я бы сделал, но корректнее это будет сделать автору, дабы плюсовали его)

        1. zviryatko Автор записи

          Ну можешь сделать на сайте учетку с моим ником и авто-репост добавить (у wp работает rss), я не против 😉

    1. zviryatko Автор записи

      Да, но на сколько я помню он для этого используют флеш, а между пользователями ие8-9 с вечно уязвимым флешом я лучше откажусь от них, пусть загружают файлы по одному, еще и алерт им добавлю чтобы обновили наконец-то свои браузеры xD

        1. zviryatko Автор записи

          Ну только его реализация не совсем то что хотелось бы, я больше смотрю в сторону wysiwyg-fields, чтобы изображения хранились в полях а не в контенте, и drag-n-drop хочу чтобы при перетаскивании файла форма загрузки стиль меняла, приблизительно как в wp, если есть такой модуль я бы его интегрировал.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *