Друпальское.
Задача:
1 материал - Драма
2 материал - Сэйю
Надо в материале Драма сделать множественное поле-таблицу со "столбцами" = роль и сэйю.
При этом на странице Драмы должны показываться пары роль-сэйю (желательно с превьюшками-картинками), а на странице Сэйю - пары драма-роль.
Ломала-ломала голову...
читать дальше
Варианты.
1. Сделать через Node reference + автоматически через rules делать обратную связь (заполняем драмы - заполняются поля у сэйю).
Пока не получается: не удается мне сделать rules на неограниченный цикл, а кол-во сэйю в одной драме может быть разным.
2. Искать модули типа back references - ? сегодня прочитала о нем впервые, не пробовала
3. Пробовать модуль relations - читала о нем упоминания, но в руках не держала. Он не так давно вышел для 7-й версии, меньше у него пользователей и больше ошибок. Думаю.
4. Вообще не делать Node reference, а связать материалы через теги и вьюсы, вывод организовывать через EVA. То есть драма ссылается на тег, и страница сэйю имеет тег-сэйю. Черезь вьюс выводить соответствующие поля из материала типа "сэйю" с соответствующим тегом; тег передавать через EVA прямо из материала. И так же на странице "сэйю" - через теги - выводить данные материалов драм.
Читала о таком способе, но еще не пробовала. Плюсы в том, что теги все равно нужны, а так не придется их дублировать. Минусы в том, что это все - теория ))) Надо пробовать. Ни хрена не понятно, как теги и вьюсы будут уживаться с field collection
5. Сделать отдельный тип материала "В ролях". С полями "ссылка на драму", "ссылка на сэйю", "ссылка на персонаж", а у сэйю и драмы сделать чисто технические поля "ссылка на промежуточную таблицу" с множественным значением, которая будет заполняться автоматически при заполнении полей "В ролях". Выводить вьюсами, соответственно.
Минусы - интуитивно непонятно, потому что надо будет поля "В ролях" заполнять вообще в другом месте. И править их если что - тоже в другом месте, выискивая связанные поля. Минус отчасти снимается тем, что количество канонических материалов все-таки ограничено.
Плюсы - решаются исключительно известными уже средствами. Правда, я пока не понимаю, позволит ли Вьюс вывести материал через двойную связь (то есть, чтобы вывести картинку из материала сэйю в материал драма надо выцепить ее по связи драма - промежуточная таблица - сэйю).
... А ржака вся в том, что все сделалось в итоге иначе... хы.
Просто-напросто все сложности с этой задачей были актуальны для старых версий (друпала? вьюс?), и уже решены в "ядре" вьюса и все теперь делает легко и просто и без наворотов ))) Ну блииин... сколько дней, сколько ночей... Откуда же знать, что все уже изменилось? )))
читать дальше
Суть: Модуль Views дефолтно позволяет теперь отображать "реверс" к связям.
Как делаем:
1. представление = содержимое
2. контекстные фильтры = nid
3. связи:
а) поле связи - реверс
б) (для коллекции полей) элемент коллекции полей: Сущность с...
4. поля:
- для коллекции полей - элемент коллекции полей: название нужного поля. Связь по полю-ссылке
- для полей из материала - соотв.поле. Связь по названию коллекции полей.Но пока копалась, все-таки, кажется, отчасти я поборола множественные поля )))
читать дальшеАвтозаполнение полей из данных field collection и ссылку на другой материал
Правило:
1. Триггер - После обновления существующего материала
2. Условия:
- чек на логическое поле обновить теги (чекать изменения в множественных полях пока не научилась)
- Сущность имеет поле: имя field collection
- Сущность имеет поле: имя поля, которое будем изменять
Прописала еще цикл с ANY на сущность имеет поле - ссылка на другой материал, но не думаю, что это надо.
3. Действия:
- цикл по полю field collection
--- условие: сущность имеет поле = ссылка на другой материал и поле нужное в нем
------ добавить в список: изменяемое поле - поле другого материала (по ссылке)
- установить значение: снять чек с поля обновить теги
Работает, да Надо бы еще потестировать правило из серии: обновил filed collection - поставил флажок. Но что-то первая попытка работать через событие "Создание нового элемента коллекции" привела к ошибке в базе