Làm thế nào để ẩn bình luận bên dưới nút, nhưng không đóng chúng?


8

Tôi muốn tự mình liệt kê các bình luận cho các nút (theo Chế độ xem), vì vậy tôi cần ẩn danh sách bình luận tiêu chuẩn khỏi mô-đun nhận xét cốt lõi. Tôi có thể làm như thế:

  unset($node['comments']['comments']);

Nhưng nó sẽ không ngăn chặn truy vấn DB cho ý kiến.
Vì vậy, tôi tìm thấy một số cách điên rồ để lừa các mô-đun bình luận. Ví dụ: để đặt thuộc tính giả $node->previewhoặc để tạo chế độ xem mới và ghi đè node/%nodelại cuộc gọi lại tiêu chuẩn .

Có thực sự rất khó để ẩn bình luận bên dưới nút nhưng vẫn cho phép thêm bình luận mới, hoặc tôi đã bỏ lỡ điều gì?

Cập nhật về tùy chọn ẩn Hidden

Điều gì về giá trị của Hidden Hidden đối với loại nội dung:
Tôi cần hành vi đóng / mở cho các bình luận của mình. Nhưng nếu tôi đặt loại Ẩn Ẩn cho loại nội dung của mình, các phần nội dung mới của tôi sẽ được đặt thành Bình luận đóng kín thay vì ẩn ( đây là mã ). Một vấn đề khác là người dùng có quyền đối với các bình luận bài đăng của Google, không thể thêm một bình luận, nếu các bình luận bị ẩn ( đây là mã ).
Vì vậy, tôi không thể có được ý tưởng.

Câu trả lời

Giải pháp tìm thấy với hook_module_implements_alter(). Cảm ơn rất nhiều!


thật dễ dàng ... chỉnh sửa loại nội dung, trong phần cài đặt bình luận, chọn "Ẩn". điều này sẽ ẩn ý kiến ​​của bạn
subhojit777

@ subhojit777 OP muốn ngăn chặn truy vấn DB tôi nghĩ.
niksmac

Câu trả lời:


9

Trong các mô-đun / bình luận / bình luận.module, chúng ta có thể thấy hook_node_view () (comment_node_view ()) đang chạy trên dòng 614. Đây là nơi các hàm đang bắn để tải tất cả các bình luận và gắn chúng vào nút. 2 bộ đầu tiên của if () {...} dường như đang xử lý biểu mẫu thêm liên kết và liên kết hành động. Sau đó, khối mã cuối cùng cuối cùng là thêm các bình luận, mà tôi tin là điều bạn thực sự quan tâm nhất về việc ẩn và tôi cho rằng bạn muốn bỏ qua điều này vì lý do hiệu suất:

// Only append comments when we are building a node on its own node detail
// page. We compare $node and $page_node to ensure that comments are not
// appended to other nodes shown on the page, for example a node_reference
// displayed in 'full' view mode within another node.
if ($node->comment && $view_mode == 'full' && node_is_page($node) && empty($node->in_preview)) {
  $node->content['comments'] = comment_node_page_additions($node);
}

Tôi nghĩ mã này là ngớ ngẩn, bởi vì mô-đun bình luận không nên phụ thuộc vào bất kỳ chế độ xem mã hóa cụ thể nào. Hy vọng điều này sẽ thay đổi và trở thành một thiết lập trong UI.

Bất kể, tôi đã tìm thấy một bài đăng tương tự có thể khiến bạn quan tâm: Có cách nào để ngăn bình luận_node_view bắn không?

Về cơ bản, bạn muốn sử dụng hook_module_implements_alter () để ngăn mô-đun nhận xét không thể kích hoạt hook_node_view (). Đây là những gì bạn cần để thêm vào mô-đun tùy chỉnh của bạn:

function hook_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'node_view') {
    unset($implementations['comment']);
  }
}

1
Cảm ơn rât nhiều! Đặc biệt là cho hook_module_implements_alter!
kalabro

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.