Значит есть тип материала с числовым полем (для решения задачи нужно видимо др тип поля - вычисляемое).
Есть тип второй тип материала с числовым полем. и с полем стутус (в обработке, проверено)
Типы связаны по entity reference.
Пользователь создает второй тип материала который автоматически привязывается к первому, вводит значение числового поля и сохраняет. Нода автоматически получает статус в обработке. И выводится во вьюсе, который выводится в ноде первого типа материала.
Модератор проверяет созданную ноду второго типа материала и если все ок ствит статус - проверено, сохраняет ноду и после этого должно происходить автоматически следующее...
в поле первого типа материал должно занестись сумму значений всех полей нод второго типа со статус - проверено.
пи.эс. сейчас все тупо считается в уме/калькяторе и заносится в числовое поле. Хочется автоматизировать процесссс...
Комментарии
скорее всего это можно сделать с помощью Rules и Rules Views
возможно можно заюзать модуль http://drupal.org/project/views_calc и во вьюхе где будет считаться сумма нужных полей, результата который и будет заносится каким то макаром в нужное поле нод типа материала
Аггрегацией во views можно
Да агрегация само-то - включаешь в Расширении, и в настройках агрегации для нужного поля выставляешь Сумма, должно суммировать.
так ну и потом как эту сумму в поле закинуть?
Всех полей всех нод или всех полей созданной ноды?
Сам спросил, сам ответил. Rules + Rules Views. Несколько последовательных actions отрабатывают при изменении статуса на "проверено"
views aggregation не помогут, так как надо менять именно значение в ноде, а не отображаемое число, как я понял.
Добавь в тему Решено
так пока нет кода правил какое тут решение
1. Создаем вьюху с вторым типом материала, нужна чтобы использовать ее в Rules
2. Создаем правило, которое запускается после обновления ноды.
3. В условии проверяем тип ноды (равен второму типу материалов), статус и существование поля entity reference.
4. В actions сначала загружаем ноды из вьюхи, потом суммируем значения полей нод из вьюхи. Этого action в готовом виде я не нашел, может нете нужно поискать (тут вроде что то есть http://drupal.org/node/1600272), либо самому написать. Последний action должен предоставить переменную для Rules.
5. Из entity reference загружаем ноду, устанавливаем в ней новое значение.
есть такая вьюха, так как она используется в нодах первого типа
а при сохранение ноды тоже подойдет?
добавлено все кроме существования поля - скорее всего не так добавляю.
скриншот прилагается.
а вот дальше ступор полный
как загрузить ноды из вьюхи для конкретной ноды
конечно, там тоже есть такое событие
Entity has field - это то, что надо.
для этого нужно создать по вью отдельный дисплей, неважно какой. Для него задать контекстный фильтр - поле Entity reference. В Rules в качестве аргумента вью передаете id ноды.
Я, наверно уже запутался в связях, которые у вас есть. Но в любом случае контекстный фильтр по Entity reference должен помочь.
Также, чтобы просуммировать значение полей может стоит в Rule создать loop
я пробовал
я там выбрал поле (без ... в конце)
и выбрал в области значение - это же поле (название).
так у меня и так во вью есть этот контекстный фильтр. он бы бы тогда этот диспей бы не выводился бы в ноде (первый тип материала).
я читал что для выборок из рулесов нужно отедлный дисплей создавать рулес_дисплей.
Пока что сделано это
<?php
{ "rules_sumvalue" : {
"LABEL" : "\u0421\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",
"PLUGIN" : "reaction rule",
"REQUIRES" : [ "rules" ],
"ON" : [ "node_update" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "funding" : "funding" } } } },
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_payment_status" } },
{ "entity_has_field" : {
"entity" : [ "node:field-entity-ref-funding-link" ],
"field" : "field_entity_ref_funding_link"
}
}
],
"DO" : [
{ "VIEW LOOP" : {
"VIEW" : "test",
"DISPLAY" : "views_rules_1",
"USING" : { "nid" : [ "node:field-entity-ref-funding-link:nid" ] },
"ROW VARIABLES" : [],
"DO" : []
}
}
]
}
}?>
или может так правильнее
<?php{ "rules_sumvalue" : {
"LABEL" : "\u0421\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"REQUIRES" : [ "rules" ],
"ON" : [ "node_update" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "funding" : "funding" } } } },
{ "data_is" : { "data" : [ "node:field-payment-status" ], "value" : "received" } },
{ "entity_has_field" : {
"entity" : [ "node:field-entity-ref-funding-link" ],
"field" : "field_entity_ref_funding_link"
}
}
],
"DO" : [
{ "VIEW LOOP" : {
"VIEW" : "test",
"DISPLAY" : "views_rules_1",
"USING" : { "nid" : [ "node:field-entity-ref-funding-link:field-entity-ref-funding-link:nid" ] },
"ROW VARIABLES" : [],
"DO" : []
}
}
]
}
}?>
Или может так???
3 условия, второй тип нод, имеет поле такое-то:nid
и поле имеет статус значения получено
в экшенах луп по виевс добавил и выбрал там вьюху созданную-дисплей её (рулес виевс)
<?php{ "rules_sumvalue" : {
"LABEL" : "\u0421\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"REQUIRES" : [ "rules" ],
"ON" : [ "node_update" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "funding" : "funding" } } } },
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_entity_ref_funding_link" } },
{ "data_is" : { "data" : [ "node:field-payment-status" ], "value" : "received" } }
],
"DO" : [
{ "VIEW LOOP" : {
"VIEW" : "test",
"DISPLAY" : "views_rules_1",
"USING" : { "nid" : [ "node:field-entity-ref-funding-link:nid" ] },
"ROW VARIABLES" : [],
"DO" : []
}
}
]
}
}?>
Дальше наверно перед loop нужно добавить переменную равную 0, затем в loop прибавлять к переменной поле очередной ноды.