Доброго времени суток,
Возникла задача создания страницы на которой можно создавать несколько нод одновременно.
Если подробнее то - есть три типа нод:
1. музыкальный альбом (титл, картинка для обложки, описание, набор ссылок на ноды - композиции(node ref), набор ссылок на ноды - авторы (node ref));
2. композиция (название, файл с треком ссылка на альбом (node ref))
3. автор (название, описание, набор ссылок на альбомы (node ref))
обратные ссылки проставляются автоматически с помощью внешнего модуля (если кому интересно, поищу среди кучи установленных модулей название этого).
Собственно необходимо сделать страницу добавления альбома вместе с композициями (сейчас создается альбом, а потом по отдельности композиции). У самого в голове два варианта решения проблемы:
1. написание модуля, который бы создал страничку с нужной формой, а при сабмите обрабатывал правильно пришедшие данные и создавал бы все ноды и зависимости между ними (начал такой писать, сделал форму, только вот не знаю как правильно вставить в нее виджеты загрузки файлов, загрузки картинок и атодополняющего текстбокса для указания автора. Ну и плюс разруливать потом пришедшие файлы ручками тоже не хочется...)
2. найти модуль который объединяет формы добавления в одну (или опять же написать, только тут вообще не знаю как подступиться)
Кто-нибудь решал похожие задачи? Что посоветуете? Может есть еще альтернативы?
Спасибо
Комментарии
Чтобы правильно все хуки друпала отрабатывали надо полученные данные разбивать на объекты ноды и сохранять каждую отдельно через node_save(), предварительно проделав вручную всю валидацию. Эти операции довольно длительны и при достаточно большом количестве композиций в альбоме исполнение скрипта за один раз не успеет выполниться. Для таких случаев придумано batch_api, которое позволяет выполнять задачу поэтапно, сохраняя промежуточные значения для продолжения процесса. Посмотреть как такое реализуется можно в модуле node_gallery, там все работает именно так, но в вашем случае ноды имеют дополнительные поля, кроме того еще нода автор добавляется, вобщем возиться придется много. Кстати, в node_gallery также реализован интерфейс для редактирования альбома, упорядочивания фоток в нем, назначения обложки(одной из фоток), у вас опять же несколько иначе требуется, но подобное реализовывать придется.
у меня лимит в 20 композиций на альбом, но думаю это не принципиально - все равно много данных нужно будет обработать.
В голову пришло еще одно решение - что то типа стадий добавления: с начала нужно добавить альбом, потом композиции к нему. Мне главное после завершения создания вызвать какую-нибудь функцию для постобратки (закрыть доступ к этим узлам или отправить на модерацию или еще что-нибудь в этом роде. Грубо говоря сказать, что на этом этапе создание альбома завершено)
На счет node_gallery - спасибо - посмотрю исходники.
Зайдите на d.org в профиль пользователя boombatower у него есть модуль который вам нужен

http://drupal.org/node/679462
Нет не про этот.
Ну, удачи )
Oleksa@drupal.org по-видимому подразумевал(а) модуль
node_widget
Не знал о его существовании, выглядит похоже на то, что вам требовалось.
Спасибо, посмотрю его и отпишусь о результатах
Если у кого-нибудь есть еще идеи - буду рад выслушать
В друпале идеи ограничеваются только вашей фантазией.
Например такая идея: можно добавлять песни в альбом через http://drupal.org/project/nodereference_url
а к альбому цеплять views_attach или через views_embed_view
Попробуйте включить вашу фантазию )
значит фантазия у меня уже включена
композиции сейчас как раз и добавляются через nodereference_url
и views_attach я пробовал, только пока остановился просто на выводе связанных композиций с альбомом в виде тизеров - в настройках типа контента есть что то типа в каком виде выводить поле (тоже самое для авторов и альбомов), хотя походу придется все таки views_attach использовать - более гибкое решение.
в общем фантазия-то есть, хромает опыт и реализация
P.S. вчера что бы расширить кругозор просмотрел 1200+ модулей для друпала(брал чуть ли не все подряд) - нашел много интересных и полезных. Правда глазки после этого чуть на лоб не вылезли
только вот мне нужно сейчас все на одной странице организовать... главная проблема с виджетами CCK... их можно как нибудь использовать для своих целей?
Правильно, изучайте. Лишним не будет.
Вот вам бонус статья: http://baxwrds.com/node_reference_view
в общем попробовал я этот node_widget - хороший модуль, но поддержка file_field есть только в dev версии и она не работает
надеяться на то что в ближайшее время выйдет новая версия не приходится тоже. Полазил по исходникам - мало толку. Так что как то так
Итого, продолжаю искать альтернативные решения и прошу помощи знающих и умеющих...
реализовал то что нужно с помощью pageroute, хотя тоже есть проблемы, но уже не с ним, а с hierarchical_select
А если такая схема:
Пользователь создает материал типа Акция, в котором нужно подгружать товары, сразу редактируя для них цены/скидки.
Если у пользователя не созданы товары, то тыкая на кнопку "Создать акцию" ему, с помощью Rules, предлагается создать сначала товары. Вот тут то и пригодится Pageroute.
А если товары уже созданы, то, думаю, node_widget - самое то.
Хотя если Rules, то зачем Pageroute