Ich würde nicht empfehlen, diesen Begriff so zu ändern, wie Sie ihn in Ihrer Frage beschrieben haben. Stattdessen würde ich einen alternativen Ansatz verwenden, um ein ähnliches Ergebnis (in der angegebenen Reihenfolge) zu erzielen, das weiter unten näher erläutert wird.
Schritt 1 - Verwenden Sie den neuen Begriff in zukünftigen Knotenaktualisierungen
Erstellen Sie ein neues Taxonomiebegriffsfeld, damit "von nun an" alle zukünftigen Knotenaktualisierungen (oder neue Knoten, die erstellt werden) dieses neue Feld verwenden. Ich gehe davon aus, dass diese Begriffe für Knoten verwendet werden (wenn Sie sie für einen anderen Entitätstyp wie Benutzer usw. verwenden), kann der gleiche Ansatz auch für diese Entitäten verwendet werden.
Verwenden Sie das Modul Regeln , um eine Regel wie folgt zu erstellen:
- Regelereignis :
before saving content
.
- Regelbedingungen:
entity has field
, mit Feld = das alte Feld.
- UND NICHT (
entity has field
mit Feld = das neue Feld).
- Regeln Aktion:
set Drupal message
Enthält einige Anweisungen, dass das alte Feld ausgeblendet werden muss und das neue Feld die entsprechenden Werte enthalten sollte.
Schritt 2 - Verwenden Sie Regeln, um den Prozess zu beschleunigen
Offensichtlich wird der Ansatz in Schritt 1 "einige" Zeit in Anspruch nehmen, wenn dies manuell durchgeführt werden muss, jeweils 1 Knoten. Aber mit Ansichten (eine Liste von ähnlichen Knoten bauen aktualisiert werden) und VBO (Massen Update solche Listen) Sie können (sollten!) Der Lage sein , ziemlich viel um diesen Prozess zu beschleunigen.
Insbesondere, wenn Sie Regeln verwenden würden , um eine benutzerdefinierte Massenoperation für eine solche VBO-Ansicht zu erstellen, wie in der Antwort auf " Wie werden Regeln zum Erstellen einer benutzerdefinierten Massenoperation für eine VBO-Ansicht verwendet? " Erläutert . Hier ist ein Prototyp einer Regelkomponente, die bei der Implementierung eines solchen benutzerdefinierten Massenvorgangs (im Regelexportformat) helfen soll:
{ "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]" } }
]
}
}
Einige weitere Details zur Erklärung des obigen Prototyps:
Wenn Sie möchten, passen Sie die Computernamen der Feldnamen im obigen Prototyp und die verwendeten Begriffs-IDs an. Importieren Sie es dann in Ihre eigene Site (mithilfe der Benutzeroberfläche für Regeln) und testen Sie die Qualitätssicherung mithilfe des Links "Ausführen" rechts neben der importierten Regelkomponente (und geben Sie eine Knoten-ID ein, um sie zu testen, nachdem Sie zu "Direkteingabe" gewechselt haben mode ", um eine Knoten-ID angeben zu können). Wenn Sie während des Testens keine solche Term updated in node ...
Nachricht erhalten, muss dies daran liegen, dass der von Ihnen ausgewählte Knoten nicht den in Ihrer Regelbedingung angegebenen Begriffswert verwendet hat.
Schritt 3 - Verwenden Sie VBO als letzten Schliff
Nachdem Sie die QS-Prüfung dieser Regelkomponente aus Schritt 2 abgeschlossen haben, erstellen Sie eine VBO-Ansicht der zu verarbeitenden Knoten, in der Sie auf den obigen Regelprototyp (oder eine Variation davon, die Ihren Anforderungen entspricht) verweisen.
Nutzen Sie diesen Ansatz
Mit diesem Ansatz minimieren Sie das Risiko, Dateninkonsistenzen einzuführen (im Vergleich zum direkten Aktualisieren der Datenbank), ohne dass benutzerdefinierter Code erforderlich ist (Sie würden nur die Benutzeroberfläche für Ansichten und Regeln verwenden).