Описание задачи:
Есть нода типа "Соревнование", категорированная словарем "Дисциплина" с одним вариантом выбора термина.
На "Соревнование" ссылаются (поле "Ссылка на материал") ноды типа "Этап" (создаем несколько этапов со страницы соревнования, по ходу спасибо модулю Node Reference URL Widget за автодобавление связи)
Вопрос:
Как сделать так, чтобы при создании экземпляр нодетипа "Этап" автоматически наследовал в своё поле "Дисциплина" (тип "Ссылка на термин") значение из такого же поля "Дисциплина" ноды "Соревнование"?
(т.е. аналогично тому, как это происходит с ссылками на ноды в Node Reference URL Widget)
Решение:
Делаем поле "Ссылка на термин" НЕ ОБЯЗАТЕЛЬНЫМ. В моем случае еще и единичное значение, как будет со множественными - не знаю.
Если используется Display Suite, то поле "Дисциплина" прячем от редактирования (ибо его мы должны наследовать).
Включаем модуль Rules и добавляем новое правило.
Event:
+ Before saving content
Условия:
+ Content is of type
Parameter: Содержимое: [node], Типы материалов: "Этап"
(Указываем тот нодетип, ноду которого будем добавлять и который будет ссылаться на нодетип парента)
и еще одно условие
+ Entity has field
Parameter: Entity: [node:field-ref-competition], Поле: field_disciplines
(здесь добавляем поле создаваемой ноды, которое ссылается на парент ноду, и указываем то поле парента, которое нам надо использовать)
Действия:
+ Set a data value
Parameter: Данные: [node:field-disciplines], Значение: [node:field-ref-competition:field-disciplines]
(Здесь собственно и делаем само присваивание)
Готово.
Комментарии
rules пробуйте
Активный поиск по сайту drupal.org готовых решений не дал, попробую покопаться в Rules
Пока не нашел, как в подстановочных шаблонах взять значение поля термина из ноды, на которую будет ссылаться новая нода...
С Действиями не понятно как...
Его надо добавить предварительно в область видимости через entity_has_field
Область видимости - это где добавляется?
Пардон, не силен я в Rules, но разберусь...
Ага, немного раскопал, только не понятно -какое поле добавить - поле ссылки на парент ноду?
В "Elements" надо выбирать "Set a data value" ?
"LABEL" : "Auto tags",
"PLUGIN" : "reaction rule",
"REQUIRES" : [ "rules" ],
"ON" : [ "node_insert" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } },
{ "entity_has_field" : { "entity" : [ "node:field-rrr" ], "field" : "field_tags" } }
],
"DO" : [
{ "data_set" : {
"data" : [ "node:field-tags" ],
"value" : [ "node:field-rrr:field-tags" ]
}
}
]
}
}
Название типов и полей свои подставьте.
Спасибо за помощь, разобрался и отписал рецепт в топискстарте.
Разница лишь в моем случае:
"ON" : [ "node_presave" ]