Câu trả lời:
Chạy mã này một lần trong hook_init hoặc khối php tùy chỉnh hoặc sử dụng drush
<?php
$vid = 1; // Replace 1 by vocabulary id for which you want to remove duplicates.
$terms = taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities = FALSE);
// Loop through all terms in vocabulary
foreach ($terms as $term) {
// Get all matching terms by term name
$matching_terms = taxonomy_get_term_by_name($term->name);
foreach ($matching_terms as $matching_term) {
/* Check matching term belongs to vocabulary we are searching and matching term should not be exact term that first found so that duplicate can be removed */
if ($matching_term->vid == $vid && $matching_term->tid != $term->tid) {
// Do Term Delete
taxonomy_term_delete($matching_term->tid);
}
}
}
?>
Lưu ý quan trọng: Hãy sao lưu cơ sở dữ liệu trước khi chạy mã ở trên, để bạn có thể khôi phục nếu có sự cố!
Các Merge hạn mô-đun có thể giúp bạn.
Khi sử dụng phân loại cho các mục đích gắn thẻ miễn phí, thật dễ dàng để kết thúc với một số thuật ngữ có cùng ý nghĩa. Điều này có thể là do lỗi chính tả hoặc người dùng khác chỉ đơn giản là tạo ra các thuật ngữ đồng nghĩa khi họ đi.
Sau đó, bạn, với tư cách là quản trị viên, có thể muốn sửa các lỗi đó hoặc thống nhất các thuật ngữ đồng nghĩa, từ đó cắt xén phân loại thành một tập hợp dễ quản lý hơn. Mô-đun này cho phép bạn hợp nhất nhiều thuật ngữ thành một, đồng thời cập nhật tất cả các trường đề cập đến các thuật ngữ đó để đề cập đến thuật ngữ thay thế.
Bạn có thể làm điều này bằng cách sử dụng Quy tắc, Để làm điều này:
**Event**
After updating existing content
Tôi đã chọn sau khi cập nhật một nội dung để bạn có thể chọn tất cả các nút và chọn cập nhật, có thể không được công bố / xuất bản - cập nhật bí danh url, bất kỳ sẽ hoạt động.
**Conditions**
Content is of type
và nhập loại nội dung của bạn
**Actions**
Add loop
Đảm bảo các vòng lặp thông qua các thẻ của bạn, tên máy của tôi là "thẻ cơ bản trường" để bạn chọn một cái gì đó như "nút: trường-thẻ-cơ sở" trong bộ chọn Dữ liệu vòng lặp.
sau đó bạn sẽ thêm một hành động vào vòng lặp đó,
Add an item to a list
Chọn "danh sách mục: cha mẹ" từ bộ chọn dữ liệu
Và đánh dấu vào hộp duy nhất và có thể bạn cũng có thể thêm,
Show a message on the site
để đảm bảo mã của bạn hoạt động.
đây là một xuất khẩu của quy tắc.
{ "rules_enforce_uniqness_tag" : {
"LABEL" : "Enforce Uniqness Tag",
"PLUGIN" : "reaction rule",
"REQUIRES" : [ "rules" ],
"ON" : [ "node_update" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "page" : "page" } } } }
],
"DO" : [
{ "LOOP" : {
"USING" : { "list" : [ "node:field-basic-tags" ] },
"ITEM" : { "list_item" : "Current list item" },
"DO" : [
{ "list_add" : {
"list" : [ "list-item:parent" ],
"item" : [ "list-item" ],
"unique" : 1
}
}
]
}
},
{ "drupal_message" : { "message" : "Done" } }
]
}
}