フラグが立てられるとノードを複製するルールがあります。この新しくクローンされたノードに特定のパラメータを設定できますが、すべてではありません。他の投稿で、条件付きルールを使用して、その複製されたノードのノードタイプを識別する必要があり、すべてのフィールドにアクセスできることを読みました。しかし、ここでも「すべて」のフィールドは対象外です。
複製されたノードのテキストフィールド「学生名」を、ユーザーのプロファイルのテキストフィールドである著者の名に設定します。フラグを立てているユーザーのプロファイルの多くのフィールドが使用できますが、すべてではありません。
あなたはあなた自身の質問のための「a」解決策をすでに見つけたようですが、あなた自身の解決策を本当に理解していないので、そしてIMOはより理解しやすい解決策があるので、以下の代替案を検討してください...
次のように、(「アクションセット」タイプの)ルールコンポーネントを作成します。
node_to_update
"および" node_author
"。そのようなルールコンポーネントのプロトタイプを次に示します(ルールエクスポート形式で、ルールUIを使用してサイトにインポートします)。
{ "rules_update_cloned_node" : {
"LABEL" : "Update cloned node",
"PLUGIN" : "action set",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : {
"node_to_update" : { "label" : "Node to be updated", "type" : "node" },
"node_author" : { "label" : "Node author", "type" : "user" }
},
"ACTION SET" : [
{ "drupal_message" : { "message" : "The field firstname in node with id [node-to-update:nid] needs updating with value \r\n[node-author:field-firstname]. To actually do so, replace this (informational) Rules Action with setting the appropriate value for the appropriate field ..." } }
]
}
}
実際のアクションは、Drupalメッセージを表示するだけです(渡された変数の値を表示するため)。そのアクションを、クローンノードの実際の更新に置き換えます。
ルールコンポーネント(手順1から)を実行して既存のルールアクションを更新しますが、次の2つを渡しますパラメータ:
node_to_update
。クローンされたノードのnid
の値(トークン)を介して渡すことができます。node_author
。クローンされたノードのuid
の値(トークン)を介して渡すことができます。問題は、条件内のプロパティ[cloned-node:author:field-firstname]でエンティティをフェッチし、データ値[cloned-node:field-student-name:0]を[firstname-fetched: 0:field-firstname] [firstname-fetched:]の後に[0:field-firstname]を指定する必要がある理由はまだわかりませんが、それでも機能します。スクリーンショットをご覧ください。これが他の誰かにも役立つことを願っています。
@ Pierre.Vriensが助けた後、私のコンポーネントコードは次のとおりです:
{ "rules_update_the_cloned_course_with_values_for_the_student" : {
"LABEL" : "Update the cloned Course with values for the Student",
"PLUGIN" : "action set",
"OWNER" : "rules",
"TAGS" : [ "cloned node", "component", "course", "update" ],
"REQUIRES" : [ "rules_conditional", "rules" ],
"USES VARIABLES" : {
"node_to_update" : { "label" : "Node to be updated", "type" : "node" },
"node_author" : { "label" : "Node author", "type" : "user" }
},
"ACTION SET" : [
{ "CONDITIONAL" : [
{
"IF" : { "entity_is_of_bundle" : {
"entity" : [ "node-to-update" ],
"type" : "node",
"bundle" : { "value" : { "course" : "course" } }
}
},
"DO" : [
{ "data_set" : {
"data" : [ "node-to-update:field-student-name:0" ],
"value" : [ "node-author:field-firstname" ]
}
},
{ "drupal_message" : { "message" : "Machine name of this Component was: \u0022rules_update_the_cloned_course_with_values_for_the_student\u0022" } },
{ "data_set" : { "data" : [ "node-to-update:field-status" ], "value" : "359" } }
]
},
{ "ELSE" : [
{ "drupal_message" : {
"message" : "The field \u0022Student name\u0022 could not be set with the value of the Student\u0027s first name.\u003Cbr \/\u003E\r\nMachine name of this Component was: \u0022rules_update_the_cloned_course_with_values_for_the_student\u0022",
"type" : "warning"
}
}
]
}
]
}
]
}
}