Je ne recommanderais pas de changer ce terme comme vous l'avez décrit dans votre question. Au lieu de cela, j'utiliserais une approche alternative pour obtenir un résultat similaire (dans l'ordre spécifié), qui est détaillé ci-dessous.
Étape 1 - Commencez à utiliser le nouveau terme dans les futures mises à jour des nœuds
Créez un nouveau champ de terme de taxonomie, de sorte que "désormais" toutes les futures mises à jour de nœuds (ou nouveaux nœuds en cours de création) utiliseront ce nouveau champ. Je suppose que ces termes sont utilisés pour les nœuds (si vous l'utilisez pour un autre type d'entité, comme les utilisateurs, etc.), la même approche peut également être utilisée pour ces entités.
Utilisez le module Règles pour créer une règle comme ceci:
- Règles de l' événement:
before saving content
.
- Conditions des règles:
entity has field
, avec champ = l'ancien champ.
- ET NON (
entity has field
, avec champ = le nouveau champ).
- Action des règles:
set Drupal message
qui contient des instructions indiquant que l'ancien champ doit être supprimé et que le nouveau champ doit contenir la ou les valeurs appropriées.
Étape 2 - Utilisez des règles pour accélérer le processus
De toute évidence, l'approche de l'étape 1 prendra "un certain" temps si cela doit être fait manuellement, 1 nœud à la fois. Mais en utilisant Views (pour créer une liste de nœuds similaires à mettre à jour) et VBO (pour mettre à jour en masse ces listes), vous pourriez (devriez!) Accélérer un peu ce processus.
Surtout si vous souhaitez utiliser des règles pour créer une opération en bloc personnalisée pour une telle vue VBO, comme expliqué dans la réponse à " Comment utiliser des règles pour créer une opération en bloc personnalisée pour une vue VBO? ". Voici un prototype d'un composant de règles qui devrait aider à implémenter une telle opération en bloc personnalisée (au format d'exportation de règles):
{ "rules_replace_a_term_field_by_another_term_field" : {
"LABEL" : "Replace a term field by another term field",
"PLUGIN" : "rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : { "node" : { "label" : "Node", "type" : "node" } },
"IF" : [
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_sample_tags" } },
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_demo_tags" } },
{ "data_is" : { "data" : [ "node:field-demo-tags" ], "value" : "1" } }
],
"DO" : [
{ "data_set" : { "data" : [ "node:field-sample-tags" ], "value" : "31" } },
{ "drupal_message" : { "message" : "Term updated in node with id = [node:nid]" } }
]
}
}
Quelques détails supplémentaires pour expliquer le prototype ci-dessus:
Si vous le souhaitez, adaptez les noms de machine des noms de champ dans le prototype ci-dessus et les ID de terme utilisés. Ensuite, importez-le dans votre propre site (à l'aide de l'interface utilisateur des règles) et testez-le en utilisant le lien "exécuter" à droite du composant de règles importé (et entrez un identifiant de nœud pour le tester, après avoir basculé sur "entrée directe" mode "pour pouvoir spécifier un identifiant de nœud). Si pendant votre test, vous n'obtenez pas un tel Term updated in node ...
message, cela doit être dû au fait que le nœud que vous avez sélectionné n'a pas utilisé la valeur de terme spécifiée dans vos règles Condition.
Étape 3 - Utilisez VBO comme touche finale
Une fois que vous avez terminé de tester le contrôle qualité de ce composant de règles à partir de l'étape 2, créez une vue VBO des nœuds à traiter, dans laquelle vous vous référez au prototype de règles ci-dessus (ou une variante de celui-ci pour répondre à vos besoins).
Bénéfice de cette approche
En utilisant cette approche, vous minimisez le risque d'introduire des incohérences de données (par rapport à la mise à jour directe de la base de données), sans aucun code personnalisé impliqué (vous n'utiliseriez que l'interface utilisateur des vues et l'interface utilisateur des règles).