Создание связанных нод на одной странице

Главные вкладки

Аватар пользователя CALLIKA CALLIKA 15 апреля 2010 в 0:17

Доброго времени суток,

Возникла задача создания страницы на которой можно создавать несколько нод одновременно.
Если подробнее то - есть три типа нод:
1. музыкальный альбом (титл, картинка для обложки, описание, набор ссылок на ноды - композиции(node ref), набор ссылок на ноды - авторы (node ref));
2. композиция (название, файл с треком ссылка на альбом (node ref))
3. автор (название, описание, набор ссылок на альбомы (node ref))
обратные ссылки проставляются автоматически с помощью внешнего модуля (если кому интересно, поищу среди кучи установленных модулей название этого).

Собственно необходимо сделать страницу добавления альбома вместе с композициями (сейчас создается альбом, а потом по отдельности композиции). У самого в голове два варианта решения проблемы:
1. написание модуля, который бы создал страничку с нужной формой, а при сабмите обрабатывал правильно пришедшие данные и создавал бы все ноды и зависимости между ними (начал такой писать, сделал форму, только вот не знаю как правильно вставить в нее виджеты загрузки файлов, загрузки картинок и атодополняющего текстбокса для указания автора. Ну и плюс разруливать потом пришедшие файлы ручками тоже не хочется...)
2. найти модуль который объединяет формы добавления в одну (или опять же написать, только тут вообще не знаю как подступиться)

Кто-нибудь решал похожие задачи? Что посоветуете? Может есть еще альтернативы?

Спасибо

Комментарии

Аватар пользователя gorr gorr 15 апреля 2010 в 2:46

Чтобы правильно все хуки друпала отрабатывали надо полученные данные разбивать на объекты ноды и сохранять каждую отдельно через node_save(), предварительно проделав вручную всю валидацию. Эти операции довольно длительны и при достаточно большом количестве композиций в альбоме исполнение скрипта за один раз не успеет выполниться. Для таких случаев придумано batch_api, которое позволяет выполнять задачу поэтапно, сохраняя промежуточные значения для продолжения процесса. Посмотреть как такое реализуется можно в модуле node_gallery, там все работает именно так, но в вашем случае ноды имеют дополнительные поля, кроме того еще нода автор добавляется, вобщем возиться придется много. Кстати, в node_gallery также реализован интерфейс для редактирования альбома, упорядочивания фоток в нем, назначения обложки(одной из фоток), у вас опять же несколько иначе требуется, но подобное реализовывать придется.

Аватар пользователя CALLIKA CALLIKA 15 апреля 2010 в 12:41

у меня лимит в 20 композиций на альбом, но думаю это не принципиально - все равно много данных нужно будет обработать.
В голову пришло еще одно решение - что то типа стадий добавления: с начала нужно добавить альбом, потом композиции к нему. Мне главное после завершения создания вызвать какую-нибудь функцию для постобратки (закрыть доступ к этим узлам или отправить на модерацию или еще что-нибудь в этом роде. Грубо говоря сказать, что на этом этапе создание альбома завершено)

На счет node_gallery - спасибо - посмотрю исходники.

Аватар пользователя CALLIKA CALLIKA 15 апреля 2010 в 12:56

<a href="mailto:Oleksa@drupal.org">Oleksa@drupal.org</a> wrote:
Зайдите на d.org в профиль пользователя boombatower у него есть модуль который вам нужен
http://drupal.org/node/679462[/quote]
если Вы про nodereference_field - то я его в принципе пробовал, но решил сделать по-другому, по крайней мере попробовать сделать Smile там были "проблемы" с обратными связями по-моему, хотя уже точно не помню.

Пока попробую порыть в других направлениях

Аватар пользователя Oleksa@drupal.org Oleksa@drupal.org 15 апреля 2010 в 14:26

В друпале идеи ограничеваются только вашей фантазией.
Например такая идея: можно добавлять песни в альбом через http://drupal.org/project/nodereference_url
а к альбому цеплять views_attach или через views_embed_view

Попробуйте включить вашу фантазию )

Аватар пользователя CALLIKA CALLIKA 15 апреля 2010 в 16:03

"<a href="mailto:Oleksa@drupal.org">Oleksa@drupal.org</a>" wrote:
В друпале идеи ограничеваются только вашей фантазией.
Например такая идея: можно добавлять песни в альбом через http://drupal.org/project/nodereference_url
а к альбому цеплять views_attach или через views_embed_view

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

в общем фантазия-то есть, хромает опыт и реализация Sad

P.S. вчера что бы расширить кругозор просмотрел 1200+ модулей для друпала(брал чуть ли не все подряд) - нашел много интересных и полезных. Правда глазки после этого чуть на лоб не вылезли Smile

Аватар пользователя CALLIKA CALLIKA 15 апреля 2010 в 16:12

"CALLIKA" wrote:
композиции сейчас как раз и добавляются через nodereference_url

только вот мне нужно сейчас все на одной странице организовать... главная проблема с виджетами CCK... их можно как нибудь использовать для своих целей?

Аватар пользователя CALLIKA CALLIKA 17 апреля 2010 в 18:35

в общем попробовал я этот node_widget - хороший модуль, но поддержка file_field есть только в dev версии и она не работает Sad надеяться на то что в ближайшее время выйдет новая версия не приходится тоже. Полазил по исходникам - мало толку. Так что как то так Sad

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

Аватар пользователя Antoniy Antoniy 25 мая 2012 в 19:49

А если такая схема:

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

Если у пользователя не созданы товары, то тыкая на кнопку "Создать акцию" ему, с помощью Rules, предлагается создать сначала товары. Вот тут то и пригодится Pageroute.

А если товары уже созданы, то, думаю, node_widget - самое то.