Saya tidak akan merekomendasikan untuk mengubah istilah itu seperti yang Anda gambarkan dalam pertanyaan Anda. Alih-alih saya akan menggunakan pendekatan alternatif untuk mencapai hasil yang serupa (dalam urutan yang ditentukan), yang dirinci lebih lanjut di bawah ini.
Langkah 1 - Mulai gunakan istilah baru dalam pembaruan simpul di masa mendatang
Buat bidang istilah taksonomi baru, sehingga "mulai sekarang" setiap pembaruan node masa depan (atau node baru sedang dibuat) akan menggunakan bidang baru itu. Saya berasumsi istilah ini digunakan untuk node (jika Anda menggunakannya untuk beberapa jenis entitas lain, seperti pengguna, dll), pendekatan yang sama dapat digunakan untuk entitas tersebut juga.
Gunakan modul Aturan untuk membuat aturan seperti:
- Aturan acara:
before saving content
.
- Ketentuan aturan:
entity has field
, dengan bidang = bidang lama.
- DAN BUKAN (
entity has field
, dengan bidang = bidang baru).
- Aturan Tindakan:,
set Drupal message
yang berisi beberapa instruksi bahwa bidang lama harus dihapus, dan bidang baru harus berisi nilai yang sesuai.
Langkah 2 - Gunakan Aturan untuk mempercepat proses
Jelas, pendekatan pada Langkah 1 akan memakan waktu "beberapa" jika ini harus dilakukan secara manual, 1 simpul pada satu waktu. Tetapi dengan menggunakan Views (untuk membuat daftar node yang serupa untuk diperbarui) dan VBO (untuk memperbarui daftar semacam itu secara massal) Anda mungkin (harus!) Dapat mempercepat proses ini sedikit.
Terutama jika Anda akan menggunakan Aturan untuk membuat operasi massal kustom untuk tampilan VBO tersebut, seperti yang dijelaskan dalam jawaban untuk " Bagaimana cara menggunakan Aturan untuk membuat operasi massal kustom untuk tampilan VBO? ". Berikut adalah prototipe Komponen Aturan yang seharusnya membantu mengimplementasikan operasi massal kustom tersebut (dalam format Aturan Ekspor):
{ "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]" } }
]
}
}
Beberapa detail untuk menjelaskan prototipe di atas:
Jika Anda mau, sesuaikan nama mesin dari nama bidang dalam prototipe di atas, dan ID istilah yang digunakan. Kemudian impor di situs Anda sendiri (menggunakan UI Aturan), dan QA-uji dengan menggunakan tautan "eksekusi" di sebelah kanan Komponen Aturan yang diimpor (dan masukkan beberapa id node untuk mengujinya, setelah Anda beralih ke "input langsung mode "untuk dapat menentukan id simpul). Jika selama pengujian Anda Anda tidak mendapatkan Term updated in node ...
pesan seperti itu, itu pasti karena simpul yang Anda pilih tidak menggunakan nilai istilah yang ditentukan dalam Ketentuan aturan Anda.
Langkah 3 - Gunakan VBO sebagai sentuhan akhir
Setelah Anda selesai QA, menguji Komponen Aturan ini dari Langkah 2, buat tampilan VBO dari node yang akan diproses, di mana Anda merujuk pada prototipe Aturan di atas (atau variasi darinya agar sesuai dengan kebutuhan Anda).
Manfaat dari pendekatan ini
Dengan menggunakan pendekatan ini, Anda meminimalkan risiko untuk memperkenalkan inkonsistensi data (dibandingkan dengan memperbarui database secara langsung), dengan tidak melibatkan kode khusus (Anda hanya akan menggunakan UI Tampilan dan UI Aturan).