Skip to main content
Темплейты для Drupal

Мультизагрузка изображений в Drupal

Мультизагрузка изображений в поле типа Image в Drupal - давно была больным местом дру-созидателей. У меня этот вопрос был частично решен химическим соединением модуля Mupload из песочницы с пропатченным модулем Plupload. Патченные модули - не есть гуд, это уж мы с вами знаем.  И только я собралась описать это сомнительное, но все же решение задачи, нашла целых 3 альтернативных варианта.

1. Модуль Plup

При включение модуля в списке возможных типов виджетов (widget type) для поля типа Image, кроме стандартного Image, появляется Pluploader. Кроме непосредственной мультизагрузки, есть сортировка методом перетаскивания. Выглядит примерно так:

По-моему, то что надо!

2. Модуль Multiupload Imagefield Widget (зависит от Multiupload Filefield Widget)

Тут вообще все просто до неприличия: в классическое поле для загрузки изображения (оно и внешне ничем не отличается) можно грузить сразу несколько изображений. Кликаем выбрать изображения, выбираем пачку файлов и грузим. Ничего лишнего, дешево и сердито.

3. Из песочницы

Mupload работает корректно только в сочетании с патченным моудлем Plupload. Как я уже отмечала в начале поста - так себе решение. Остальные варианты не тестировала. Но они есть, и вполне возможно дорастут до полноценных релизов.

P.S. Не забывайте искать модули на drupal.org! Почти на каждую задачу есть готовые работающие модули. Исключение - совсем уж специфический функционал. Кроме того, постоянно появляются новые модули, а на страницах проектов часть есть полезная информация: ссылки на альтернативные модули, посты с решениями распространенных проблем, ссылки на мануалы и видео-уроки и многое другое.

34

Comments

Павел's picture
Павел

Вы прекрасно даете материал=)не могли бы помочь разобраться архивом документов,(точнее загрузчик)с установленным фильтром....делаю через модуль views ,вроде и получается но совсем не то что я хочу=(
заранее спасибо...

Мария Шерскова's picture
Мария Шерскова

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

Павел's picture
Павел

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

Мария Шерскова's picture
Мария Шерскова

Делаете тип материала с полем "файл". Делаете вьюху котороая выводит название файла со ссылкой. Добавляете фильтр по названию файла и делаете его открытым. Т.е. exposed filter. Для пущей важности поставьте модуль Better Exposed filter.

Faraday's picture
Faraday

Спасибо, в будущем пригодится. Собираюсь делать галерею руками (views+colorbox+хз, что ещё понадобиться).
Хотел искать модули сам, а тут вы :)

Мария Шерскова's picture
Мария Шерскова

http://sherskova.ru/node/240 - подойдет для полного счастья? :)

Евгений's picture
Евгений

Следующий патч решает проблемы возникающие при загрузке файлов (картинок) имена которых состоят из кириллических символов. Файлы просто не отображаются так как имена приобретают след вид %jhjk$F45d5f4fDD$FF#$$@%#%^125DD.jpg
Plup не взаимодействует с модулем Transliteration поэтому возникает такая проблема

===================================================================
Index: modules/plup/plup.module
version = "7.x-1.0-alpha1"
core = "7.x"
===================================================================
Устанавливаем модуль Transliteration
Ищем строку $fileName = isset($item['rename']) ? $item['rename'] : $file->filename;
Вставляем после нее следующее строки

if (module_exists('transliteration')) {
$fileName = transliteration_clean_filename($fileName);
}
else {
$fileName = preg_replace('/[^\w\._]+/', '', $fileName);
}

Всё работает!

Женя's picture
Женя

Установил модуль Plup, для массовой загрузки изображений. При загрузке изображений не зарегистрированным пользователем выдаёт ошибку Error: HTTP Error. Права доступа для модуля включены. У админа и зарегистрированного пользователя всё работает. В чем может быть проблема?

Мария Шерскова's picture
Мария Шерскова

Женя, проверьте права для анонимных пользователей на загрузку (Upload), возможно дело в этом.

Роман's picture
Роман

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

Артем Андреевич's picture
Артем Андреевич

а для друпал 6 есть аналог???

Мария Шерскова's picture
Мария Шерскова

Есть, но только в дев-версии - модуль Plupload http://drupal.org/project/plupload

Работоспособность не проверяла, ибо сайтов на шестерке нету.

AmiGator's picture
AmiGator

Пора обновить материал. Из SandBox повылезли кучи проектов. Сам пока не пробовал, не было времени

Владимир's picture
Владимир

Здравствуйте, все сделал как написано но у меня не появилось такой панельки с зеленым плюсиком что бы добавлять картинки. даже видео смотрел где вы галерею создаете. но панели нет. Подскажите что сделать. http://s020.radikal.ru/i722/1302/29/f5c03ccff6a6.jpg

Мария Шерскова's picture
Мария Шерскова

Plup не интегрируется с Media Gallery. Используйте модуль Plupload.

Владимир's picture
Владимир

Я извеняюсь за свое нубство, но результат тот же.
вот модуль
http://s019.radikal.ru/i633/1302/80/f9e1a19ff6d0.jpg

Владимир's picture
Владимир

Может поле это не отображается?

Мария Шерскова's picture
Мария Шерскова

Тогда посмотрите настройки модуля Media Gallery. И Media заодно. Я, честно говоря, навскидку не помню - давно эту галерею не использую.

Владимир's picture
Владимир

sherskova, подскажите пожалуйста, вот такие ошибки выдает загрузчик
http://s017.radikal.ru/i436/1302/15/932b289c025d.jpg

а какую вы используете галерею сейчас?

Владимир's picture
Владимир

sherskova, все заработало, нужно было дополнительно к модулю установить библиотеки.

Владимир's picture
Владимир

возникла другая проблемка
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 10840 bytes) in /home/uicbs/priilimie.ru/docs/modules/system/image.gd.inc on line 237
то есть хотел загрузить картинку 5 мб и не вышло. Можно ли раздвинуть границы по объему загрузки.

Мария Шерскова's picture
Мария Шерскова

Может быть таки стоит оптимизировать картинку?

Владимир's picture
Владимир

Ага стоило бы, но их очень много около 300-от, какие то большие по разрешению какие то по качеству. И выбирать и оптимизировать каждую это не 5 минут. к сожалению нельзя отсортировать их по разрешению.

Владимир's picture
Владимир

ок, если не знаете как помочь буду в ручную пересохранять каждую фотку =(

Мария Шерскова's picture
Мария Шерскова

посмотрите какой лимит php memory на хостинге, попробуйте увеличить.
Если у вас есть доступ к файлу php.ini, ищите что-то вроде:
memory_limit = 32M ; Maximum amount of memory a script may consume (32MB)
Если доступа нет, тогда через .htaccess:
php_value memory_limit 128M
ибо через sites/default/settings.php:
ini_set('memory_limit', '128M');

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

Владимир's picture
Владимир

sherskova, спс попробую

yellow8888's picture
yellow8888

sherskova, подскажите, воспользовался вторым вариантом с модулем Multiupload Imagefield Widget, загружаю фото как обычно через визивиг, но все равно не могу выделить пачку фотографий, только по одной((( Что не так делаю? или надо как-то по-другому загружать фото?

AJS's picture
AJS

есть еще оочень важный момент - хочется, чтобы при создании ноды также была возможность автоматического создания папки для файлов с уникальным именем (синоним названия ноды допустим) или чтобы можно было вручную вписать. Иначе очень запарно потом разгребать кучу фоток в одной папке, когда их там тысяча. Есть решение такое?

Мария Шерскова's picture
Мария Шерскова

Это можно делать штатными средствами. Если используется image field - в настройках поля можно указать папку, куда будет загружаться. Хоть конкретную, хоть по токена в виде даты или еще чего.

Григорий's picture
Григорий

Мария, подскажите пожалуйста, как сделать пагинацию для изображений, загруженных через plupload. Т.е. есть поле image с виджетом plupload и всё замечательно, но при достаточно больших галереях получается очень неудобная для просмотра нода.

Мария Шерскова's picture
Мария Шерскова

Можно с помощью Views. Делаете вьюсу для типа материала, добавляете только поле с картинками, добавляете аргумент - node id - из урла. Ставите блок на странцу. Вьюсу можно сделать хоть с мини пейджером и аяксом, хоть каруселькой, хоть слайдером. Да как угодно, в принципе.

Если вариант со слайдером/каруселью подходит - многие поддерживают возможность сделать это в отображении поля в типе материала. Тогда и вьюса не нужна.
 

Григорий's picture
Григорий

Спасибо, осталось только понять как получить url конкретной ноды. Насколько я понял надо при создании вьювсы добавить фильтр Содержимое: Nid, а вот какое значение задать этому аргументу не понял.

Мария Шерскова's picture
Мария Шерскова

Значение по умолчанию, node id from url

Григорий's picture
Григорий

Мария, спасибо. Вопрос решился намного проще - с помощью модуля CCK Pager.