Sự lựa chọn tốt nhất để tạo một nút thông qua mã là gì?


7

Kịch bản diễn ra theo cách này, tôi có một loại nút có rất nhiều trường thuật ngữ Phân loại trong đó. Nó cũng có các lĩnh vực khác như văn bản, ngày tháng, nhưng 90% trong số đó là một lĩnh vực phân loại. Tôi biết rằng một nút có thể được tạo lập trình theo hai cách,

  • node_save () - Tạo một đối tượng nút và lưu nó

    $node =  new stdClass();
    
    $node->type = 'article';
    
    $node->field_term[LANGUAGE_NONE][0]['tid'] = 3128 // term id of the term
    
    node_save($node);
  • Gửi biểu mẫu - tạo một mảng biểu mẫu và gửi bằng cách sử dụng drupal_form_submit

    $node[field_first]['und'] => chennai;
    
    $node[field_second]['und'] => "iphone5";
    
    $node['type'] = 'article'; 
    
    $form_state['values'] = $node;
    
    $form_state['values']['op'] = t('Save');
    
    drupal_form_submit($node_type . '_node_form', $form_state, (object)$node);

    với nút $ có các giá trị POST.

Lợi thế của việc sử dụng phương thức gửi biểu mẫu là Drupal sẽ đảm nhiệm việc tạo ra các thuật ngữ mới trong từ vựng (tôi phải có thêm các thuật ngữ mới). Gửi biểu mẫu có thể theo xác nhận mẫu cần thiết để tạo một nút.

Có phương pháp nào để tạo các nút nhanh hơn trong hệ thống Drupal được cho là có nhiều thuật ngữ hơn trong đó không?

Nếu không có phương pháp nào khác ngoài các phương pháp nêu trên, phương pháp nào là tốt nhất?


Cách tiếp cận đầu tiên của bạn nhanh hơn một chút nhưng nếu cách tiếp cận thứ hai của bạn dễ dàng hơn để duy trì sử dụng cách thứ hai.
jantimon

Vấn đề phát sinh khi tôi có hơn 12 trường hạn và mỗi trường có hơn 10 giá trị làm thuật ngữ, Nó cực kỳ chậm và chiếm nhiều tài nguyên
Dinesh Kumar Sarangapani

Sau đó, bạn có thể viết 1 truy vấn trường thực thể để tìm ra thuật ngữ nào đã tồn tại, tạo tất cả các thuật ngữ còn thiếu và cuối cùng tạo các nút như bạn đã hiển thị trong cách tiếp cận đầu tiên.
jantimon

Vâng, như đã nói có một số phương pháp để tạo một nút, tất cả những gì tôi muốn là lý do tốt nhất với một lý do
Dinesh Kumar Sarangapani

4
@DineshKumar 'Tốt nhất' là một thuật ngữ quá chủ quan, bạn có thể muốn thu hẹp điều đó xuống với ý nghĩa thực sự của bạn (ví dụ như hầu hết người biểu diễn). Các câu hỏi yêu cầu 'tốt nhất' của một cái gì đó không làm tốt như vậy trên các trang web trao đổi ngăn xếp. Bên cạnh đó, câu trả lời thực sự duy nhất cho câu hỏi này đến từ việc đo điểm chuẩn các phương pháp khác nhau trong môi trường hiện tại của bạn, điều mà chỉ bạn mới có thể làm được.
Clive

Câu trả lời:


4

Phương pháp an toàn nhất là sử dụng drupal_form_submit (). Nếu bạn nhìn vào mô-đun dịch vụ, nó sẽ làm điều tương tự. Xác thực mẫu phải quan trọng nếu bạn đang tạo các nút theo chương trình. Bạn đang nhập hoặc tạo nhiều nút cùng một lúc? Nếu đây là trường hợp và bạn lo ngại về hiệu suất, bạn có thể sử dụng hàng loạt api hoặc hàng đợi của Drupal. Batch là tuyệt vời nếu bạn cần phản hồi của người dùng nhưng nếu bạn đang tạo các nút trên cron và không yêu cầu ui với phản hồi thì hàng đợi là cách để đi. Trong cả hai trường hợp, họ sẽ quản lý bộ nhớ cho bạn.

Tôi sẽ không quan tâm đến việc mất bao lâu để tạo một nút vì đó là mất bao lâu với ui. Trừ khi lý do bạn thực hiện thông qua mã là để tăng thời gian tạo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.