Điểm:0

Lưu số lượng từ trong vùng văn bản theo chương trình

lá cờ cn

Tôi đang cố gắng kiểm đếm số từ trên một tập hợp các trường văn bản dài. Theo như tôi có thể thấy, có một số tùy chọn:

  1. Tạo chế độ xem và thêm php vào mẫu tùy chỉnh để tạo số lượng từ. Hầu hết các giải pháp tôi tìm thấy dường như quá tham khảo lại vấn đề năm 2005 này, đã lỗi thời đáng kể.

Đây sẽ là một giải pháp khả thi, ngoại trừ không có tùy chọn mã nào được liệt kê hoạt động và tôi không đủ hiểu biết về php hoặc jquery của mình để tự cập nhật chúng lên D7. Tôi đã thử điều này:

<?php $wordcount = " | ".count(explode(" ", strip_tags(trim($content))))." words" ; ?>

Nhưng tôi gặp lỗi biến không hợp lệ.

  1. Ở cuối vấn đề tương tự, có một giải pháp D6 giúp lưu số lượng từ bất cứ khi nào nút được lưu:
function od_tweaks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == "insert") { // Lưu số từ
    $body = $node->body;
    $word_count = count(explode(" ", strip_tags(trim($body))));
    $nid = $node->nid;
    db_query("CHÈN VÀO {od_tweaks} (nid, wordcount) GIÁ TRỊ ($nid, $word_count)");
  } khác nếu ($op == "cập nhật") {
    $body = $node->body;
    $word_count = count(explode(" ", strip_tags(trim($body))));
    $nid = $node->nid;
    db_query("CẬP NHẬT {od_tweaks} SET wordcount = $word_count WHERE nid = $nid");
  }
}
  1. Sử dụng một mô-đun mà tôi muốn tránh. Ngoài ra, hầu hết các mô-đun đếm từ D7 hiện đã lỗi thời. Số từ dường như không làm được gì nhiều và không có tài liệu. Xác thực trường yêu cầu nhiều mô-đun và một chút phiền phức. Nó có vẻ như là một giải pháp nặng nề cho vấn đề về mã nhẹ. Hầu hết các giải pháp khác mà tôi đã tìm thấy sẽ tạo ra số lượng từ đang chạy cho trường đang hoạt động, nhưng sẽ không lưu hoặc kết hợp.

Các trường được đề cập có thể được cập nhật cùng với nút hoàn chỉnh hoặc được cập nhật thông qua các trường có thể chỉnh sửa, vì vậy tôi nghĩ cách tốt nhất là hook hoặc jquery thuật lại các từ mỗi khi trường được cập nhật và sau đó lưu giá trị đó vào một lĩnh vực mới. Với trường hợp sử dụng của tôi, điều này sẽ giúp tôi linh hoạt thêm và kết hợp các giá trị đếm từ theo nhiều cách khác nhau.

Vì vậy, có vẻ như tùy chọn 2 là đúng hướng, nhưng mã đã lỗi thời. Có cách nào tốt hơn để làm điều này trong D7 không?

lá cờ cn
"Tập hợp các trường văn bản dài"-- tất cả các trường này có trên cùng một thực thể không? Hay chúng trải rộng trên nhiều thực thể được liên kết bởi một tham chiếu thực thể hoặc tương tự? Ngoài ra, số lượng từ cần phải chính xác đến mức nào?
lá cờ cn
Cùng loại thực thể và cùng tên trường, nhưng được lấy từ tập hợp các nội dung gửi của người dùng. Ví dụ: nếu người dùng đã gửi một loạt bài đăng trên blog, tôi cần có khả năng kiểm đếm và hiển thị số lượng từ cho từng bài cũng như cho toàn bộ. Có một cấu trúc trả tiền cho mỗi từ gắn liền với điều này, vì vậy nó phải chính xác.
lá cờ in
Bạn có thể muốn xem https://www.drupal.org/project/computed_field. Mô-đun này cho phép thêm một trường ẩn, giá trị đã lưu của nó được lập trình tính toán theo mã mà bạn xác định cho nó. Từ đó, trường có thể được sử dụng ở nơi khác giống như trường bình thường. Ngoài ra, Drupal có các cách tích hợp sẵn để tạo các trường được tính toán, mặc dù bạn sẽ cần tìm hiểu thêm một chút. Xem https://www.drupal.org/docs/drupal-apis/entity-api/dynamicvirtual-field-values-using-computed-field-property-classes
lá cờ cn
Cảm ơn. Tôi nghĩ rằng tôi đã đi theo hướng đó. Tôi gần như đã đến đó bằng cách sử dụng https://www.drupal.org/project/read_time/ nhưng chúng chỉ hỗ trợ các nút nội dung và tôi cần chọn văn bản từ các biểu mẫu thực thể.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.