Tôi đã có các loại nội dung được gọi là 'Thảo luận trực tuyến', từ đó được gọi là OD và một loại nội dung gọi là 'Trả lời thảo luận trực tuyến', từ đó được gọi là ODR. Có các tài liệu tham khảo thực thể (drupal.org/project/entityreference) cho nhau.
Khi một ODR được tạo (thông qua biểu mẫu tùy chỉnh giao diện người dùng), nó tham chiếu đến "cha mẹ" của nó (OD có trang được tạo) và thông qua Tham chiếu thực thể tương ứng (drupal.org/project/cer) điều tương tự xảy ra theo cách khác.
Trong trang của OD, thông qua chủ đề, một số lượng ODR được tham chiếu cụ thể được hiển thị, 10 số mới nhất. Chúng được trình bày dưới dạng các thực thể được kết xuất mà không có sự tham gia của View hoặc Panel vào lúc này nhưng tôi sẵn sàng thay đổi điều đó nếu cần thiết.
Mỗi ODR có phiên bản riêng của biểu mẫu trả lời, được tăng cường chức năng trích dẫn.
Ngoài ra, ODR cũng có thể chấp nhận nhận xét từ các vai trò cụ thể, thông qua biểu mẫu mặt trước tùy chỉnh.
Các yêu cầu:
1) Tôi cần một số cách để tải các câu trả lời trước đó (tất cả hoặc theo đợt) với AJAX. Hiện tại tôi đang thực hiện một cuộc gọi lại jQuery ajax đến một trang xem để tìm nạp các ODR trước đó và tôi đưa HTML của chúng vào DOM. Điều đó hoạt động, nhưng trong một kịch bản trường hợp thử nghiệm với hơn 200 nút được tham chiếu, điều đó dường như mất một thời gian
2) Tôi cần một cách mà sau một khoảng thời gian cố định để tìm kiếm ODR mới và nối thêm chúng để OD hoạt động 'giống như thật'. Hiện tại tôi làm điều này theo cách tương tự, và nó có vẻ hoạt động khá ok.
3) Tôi cần một số cách hiệu quả để áp dụng Hành vi Drupal cho các yếu tố mới đến trang web để chúng có chức năng liên kết theo ngữ cảnh, v.v. Tôi đã thực hiện bằng cách sử dụng Drupal.attachBehaviors (ngữ cảnh); nhưng có vấn đề
Các vấn đề cho đến nay:
I. Nhiều trường hợp của cùng một hình thức trên cùng một trang.
Mặc dù Drupal xử lý drupal_html_id () trên tải trang OD ban đầu, cách tôi sử dụng AJAX phá vỡ tính duy nhất của ID. Ví dụ: nếu tôi có 10 biểu mẫu trong lần tải đầu tiên của mình và tôi mang thêm 2 biểu mẫu thông qua AJAX, ID cho 2 lần đầu tiên sẽ được lặp lại kể từ khi tôi lấy toàn bộ giao diện HTML được tạo.
II. Các vấn đề về hiệu suất trong trường hợp 'Tải tất cả các ODR trước đó'. Khá tự giải thích. Kéo hơn 200 thực thể và tiêm HTML của họ là một công việc khá nặng nề.
III. Drupal.attachBehaviors - khi sử dụng AJAX như cách tôi mô tả, HTML cho liên kết theo ngữ cảnh được sản xuất tốt. Vấn đề xảy ra với javascript liên quan đến nó. Vì vậy, sau vài giờ nghiên cứu, vì có rất ít tài liệu về vấn đề này, tôi tình cờ phát hiện ra các hành vi của Drupal đã giải quyết được vấn đề đó, nhưng đã cho tôi một loạt vấn đề mới để giải quyết:
- các sự kiện onLoad, bây giờ trong một hành vi, chạy mỗi khi một sự kiện AJAX được kích hoạt gây ra nhiều ràng buộc sự kiện (hủy liên kết trước khi giải pháp liên kết tại thời điểm này)
- một số sự kiện onLoad, như sự sụp đổ của textareas mà nhiều hình thức sử dụng, gây ra các vấn đề về khả năng sử dụng. Ví dụ: bạn đang gõ một câu trả lời hoặc nhận xét, một ODR mới đi vào trang web thông qua cuộc gọi ajax định kỳ và thu gọn văn bản của bạn.
- khá lộn xộn và ngày càng khó quản lý mã để đảm bảo tôi xử lý tất cả các khả năng thông qua jQuery
Vì vậy, cuối cùng, câu hỏi:
Các thực tiễn tốt nhất trong bối cảnh Drupal để đạt được kết quả được mô tả mong muốn là gì?