Trong D7, làm cách nào để lập trình thêm / sửa đổi các trường thành các thuật ngữ phân loại? Chúng rõ ràng có thể thực hiện được và trong UI tôi có thể thêm và chỉnh sửa các trường trong chúng giống như tôi làm trong các nút nhưng nó được chứng minh là không có nhiệm vụ dễ dàng trong mã. Nói rằng tôi có một từ vựng tên là Fruit với các thuật ngữ như Táo và Chuối. Tôi đã thêm một trường vào tên được đặt tên main_article_id
, vì vậy tất cả các thuật ngữ đều có Tên, Mô tả và Id Điều chính. Khi tôi tạo một nút có tên Táo có tham chiếu đến từ vựng Fruit ( field_fruit
) và thuật ngữ Táo được chọn, mã sẽ cập nhật thuật ngữ Táo và đặt main_article_id
trường của nó thành $node->nid
. Đây là mã của tôi:
//hook_node_insert fires after new node has been inserted into db
function MYMODULE_node_insert($node)
{
$taxonomy_term_id = $node->field_FRUIT[LANGUAGE_NONE][0]['value'];
$taxonomy_term = taxonomy_term_load($value['tid']);
if($taxonomy_term != FALSE)
{
//doesn't work
$taxonomy_term->field_main_article_id[LANGUAGE_NONE][0]['value'] = $node->nid;
taxonomy_term_save($taxonomy_term);
}
}
$value['tid']
, xin lỗi vì lỗi trong mã. Nhưng tôi không sử dụng bất kỳ mô-đun nào để tạo trường của mình. Tôi chỉ cần thêm nó thủ công trên trang Chỉnh sửa từ vựng. Tôi đã cố gắng nhìn vào taxonomy_term khi chỉnh sửa nó trong UI. Bên trong hook_taxonomy_term_presave ($ term) $ term nó trông như thế này trongprint_r()
: stdClass Object ([tid] => 20 [vid] => 6 [name] => Fruit ... [field_main_article_id] => Array ([und] => Mảng ([0] => Mảng ([giá trị] => 14)) )