Отображение графических файлов в нодах

Аватар пользователя roderixiv roderixiv 2 июля 2010 в 19:45

Уважаемые господа!
Сейчас разбираюсь с возможностями Друпала по вставке и отображению графических файлов. Освоил модули ImageField, FileField и наиболее известные вспомогательные модули для них. Все файлы, которые они вставляют в ноды, они ассоциируют с этими нодами. А как следствие - при удалении нод прикрепленные файлы стираются. К тому же, если в другой ноде должен быть прикреплен тот же самый файл, то он загружается на сервер еще раз, но с измененным именем. Конечно для многопользовательских сайтов и с точки зрения учета авторских прав - это благо, а для меня кошмар.
Я создаю интернет-магазин. Мне нужно, чтобы менеджеры (не профессионалы в Друпале и программировании) могли легко и просто создавать товары и прикреплять к ним файлы - картинки и pdf-описания. Эти самые файлы нужно закачивать на сервер централизовано, а не заливать индивидуально при создании товара. Менеджеры, прикрепляя файлы, должны их выбирать среди закаченных. Многие товары будут иметь одни и те же прикрепленные файлы, соответственно не нужно полной ассоциации ноды и файлов. Т.е. при удалении некоторых товаров прикрепленные файлы должны оставаться на сервере не тронутыми. В этом то и проблема с ImageField и FileField.
Я конечно понимаю, что поставленную задачу можно решить с помощью HTML, текстового поля, текстового редактора с файловым браузером (CCK+CKEditor+IMCE например). Но менеджеров - тетенек "бальзаковского возраста" и парней из ПТУ, увиденная запись вроде
<img height="40" align="left" style="border: 1px solid rgb(204, 204, 204); margin:0px 10px 10px 0px;" src="http://www.ssssssss.ru/files/rrrrr.png" alt="qqqqqqq" />
повергнет в шок и трепет. К тому же хотелось бы более гибкого функционала для картинок - галерею, например.
Иными словами, хотелось бы возможностей ImageField, FileField и их друзей, но без полной привязки прикрепляемых файлов к нодам. Вообще, возможно ли такое и как?

Комментарии

Аватар пользователя return return 3 июля 2010 в 0:18

Есть простой метод, заливаете на сервер в какую-то папку файлы изображений именованных по какому-то соглашению: например если у вас есть поле артикул, то имя файла может выглядеть как ART-52345-1.jpg, ART-52345-2.jpg и так далее...

После этого в CCK создаете поле Артикул для нужного типа материала,и прописываете туда артикулы товара.

Пишите маленький модуль с единственным хуком hook_nodeapi() в котором после load будет проверка на существование файлов с таким названием в указанном каталоге, если файл или файлы существуют, передаете их в *.tpl.php например, как $node->module_images
в котором уже и выводите эти картинки в темплейт.

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

Еще можно использовать для таких целей CKFinder + CCK поле и добавлять через него ссылку на файл, но ее потом все равно придется разбирать и выводить в темплейте.