Le module Règles conditionnelles permet d'inclure des conditions de règles dans les actions de règles (en utilisant son If/Else
constructs), ce que vous ne pouvez pas faire en utilisant uniquement le module Rules . Voici quelques-unes (parmi de nombreuses) questions typiques qui peuvent être résolues en utilisant règles conditionnelles :
Cependant, il existe certains problèmes avec le module Règles conditionnelles , tels que:
Existe-t-il une autre solution pour construire une logique Rules équivalente, et qui ne nécessite pas l'utilisation du module Rules Conditional ?
Pour toute règle personnalisée où vous êtes tenté d'utiliser le module Règles conditionnelles , vous pouvez toujours créer des Composants de règles correspondants, avec des Actions de règles similaires à effectuer, mais aussi avec des Conditions de règles supplémentaires équivalentes à toutes les Conditions de règles que vous voudrais inclure en utilisant le module Règles conditionnelles. Ensuite, effectuez ce composant de règles dans vos actions de règles de votre règle d'origine.
Considérez cet exemple de prototype (supposez simplement qu'il s'agit d'une version simplifiée d'une règle plus compliquée avec des actions de règles précédentes comme "Récupérer l'entité par ID", "Définir une variable", etc.):
{ "rules_show_a_message_using_conditional_rules" : {
"LABEL" : "Show a message using Conditional Rules",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules_conditional", "rules" ],
"ON" : { "node_delete--page" : { "bundle" : "page" } },
"DO" : [
{ "CONDITIONAL" : [
{
"IF" : { "NOT data_is" : { "data" : [ "node:promote" ], "value" : "1" } },
"DO" : [
{ "drupal_message" : { "message" : "Bingo ... using \u0022Conditional Rules\u0022 ..." } }
]
}
]
}
]
}
}
Voici son équivalent en utilisant des composants de règles:
{ "rules_show_a_message_using_a_rules_component" : {
"LABEL" : "Show a message using a Rules Component",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "node_delete--page" : { "bundle" : "page" } },
"DO" : [ { "component_rules_say_bingo" : { "current_node" : [ "node" ] } } ]
}
}
Et le composant de règles associé ressemble à ceci:
{ "rules_say_bingo" : {
"LABEL" : "Say bingo",
"PLUGIN" : "rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : { "current_node" : { "label" : "Current node", "type" : "node" } },
"IF" : [
{ "NOT data_is" : { "data" : [ "current-node:promote" ], "value" : "1" } }
],
"DO" : [
{ "drupal_message" : { "message" : "Bingo ... using a Rules Component instead of \u0022Conditional Rules\u0022 ..." } }
]
}
}
Quelques détails sur l'alternative à l'aide d'un composant de règles:
Remarque : ce qui précède n'est qu'un "concept", pour illustrer l'élément clé de la solution. Parce que ce prototype ne nécessitait aucune "Récupérer l'entité par ID" (ou "Définir une variable", ou "charger les points utilisateurs actuels") comme action précédente.