Làm thế nào để cuối cùng vô hiệu hóa bình luận về loại nội dung?


12

Tôi đang cố gắng vô hiệu hóa bình luận trên webform. Tôi đã thử tất cả các cài đặt tôi có thể tìm thấy, nhưng:

  • Liên kết đến hình thức bình luận vẫn xuất hiện
  • Trường tên và nút gửi vẫn xuất hiện trên mẫu bình luận

Ai đó có thể cho tôi lời khuyên?

Câu trả lời:


11

Như juampy đã viết, nút numvvision cũng nên được cập nhật. Bạn cần thực hiện 2 truy vấn:

Bước 1:

UPDATE node SET comment = 0 WHERE type = 'your_content_type'

Bước 2:

UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0

Bước 3: Xóa bộ nhớ cache


1
Và nếu bạn vừa cài đặt một cái gì đó như Disqus thì bạn có thể chạy UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Đã làm cho tôi :-).
Nux

Nếu bạn cần xóa nhận xét khỏi tất cả các loại nút, chỉ cần sử dụng truy vấn @Nux.
albertski 8/07/2015

7

Đôi khi, thật dễ dàng để sử dụng SQL. Điều này, tôi nghĩ, là một trong những trường hợp đó.

UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';

0 = bị vô hiệu hóa

1 = chỉ đọc

2 = đọc / ghi.


2
0 = bị vô hiệu hóa, 1 = chỉ đọc, 2 = đọc / ghi. Tôi nghĩ rằng đây là câu trả lời tốt nhất :)
AyeshK

@AyeshK, tốt đẹp tôi đã chỉnh sửa câu trả lời.
niksmac

một mặt, nếu bạn biết cách viết / thực hiện một truy vấn như thế này, có lẽ bạn không phải vật lộn để tìm cách tắt bình luận, mặt khác, về tốc độ / hiệu quả tuyệt đối, một giải pháp dựa trên truy vấn db là CÁCH tốt hơn của tôi :)
David Meister

7

Thay đổi cài đặt nhận xét mặc định cho loại nội dung, như được đề xuất bởi uwe999 chỉ thay đổi cài đặt mặc định cho loại nội dung. Điều đó có nghĩa là nó sẽ không thay đổi hồi tố cài đặt cho nội dung hiện có (vì điều đó có thể xóa các bình luận hiện có).

Bạn sẽ phải truy cập vào chế độ xem chỉnh sửa nút cho từng nút hiện có mà bạn đang cố gắng tắt nhận xét và cập nhật cài đặt tại đó. Nếu bạn đã cài đặt một mô-đun như mô-đun cột biểu mẫu nút , ẩn / xóa các thành phần khỏi các trang thêm / chỉnh sửa nút, thì bạn sẽ phải cập nhật cấu hình của nó, hộp cài đặt nhận xét xuất hiện cho các nút.


3

Không có giải pháp nào ở trên làm việc cho tôi. Biểu mẫu nhận xét vẫn được hiển thị trong các nút hiện có trừ khi bạn cũng cập nhật nút numvision.

Đây là cách triển khai hook_update_N () hoạt động với tôi:

/**
 * Implements hook_update_N().
 *
 * Disables comments in existing event nodes.
 */
function hook_update_7000(&$sandbox) {
  $content_type = 'event';

  // Update node table.
  db_update('node')
    ->fields(array('comment' => 1))
    ->condition('type', $content_type)
   ->execute();

  // Update node_revision table.
  $nids = db_select('node', 'n')
    ->fields('n', array('nid'))
    ->condition('type', $content_type)
    ->execute()
    ->fetchCol();
  db_update('node_revision')
    ->fields(array('comment' => 1))
    ->condition('nid', $nids)
    ->execute();
}

2

bạn tắt nhận xét trong "cấu trúc / loại nội dung / [tên loại] / chỉnh sửa / cài đặt nhận xét. Đặt" Cài đặt nhận xét mặc định cho nội dung mới "thành ẩn.

Nếu bạn có các bình luận hiện có, bạn có thể xóa chúng trong "nội dung / bình luận" hoặc chỉ không công bố chúng.


Tôi đã làm điều đó, nhưng liên kết đến hình thức vẫn còn, tùy chọn duy nhất là thay đổi mẫu hoặc chỉ là bằng tốt nghiệp css thuần túy: không có gì lạ
Codium

bạn đang sử dụng mẫu nào?
uwe

1

Tôi không chắc chắn về vấn đề của bạn, nhưng một mẹo bẩn có thể là tạo một mẫu đặc biệt cho loại nội dung của bạn và xóa các phần nhận xét.


1

Tắt nhận xét ở đây trước:

structure->content types->{node_type}->edit->comment settings

Thật không may, để cập nhật các nút, bạn phải lưu lại từng nút. Sử dụng hook_update bên dưới:

/**
 * Disable comments on node_type
 */
function hook_update_N(&$sandbox) {
  $content_type = 'node_type';

  // Initialize batch.
  if (!isset($sandbox['total'])) {
    $query = db_select('node');
    $query->addExpression('COUNT(*)');
    $query->condition('type', $content_type);

    $sandbox['total'] = $query->execute()->fetchField();
    $sandbox['progress'] = 0;

    if (empty($sandbox['total'])) {
      $sandbox['#finished'] = 1;
      return t('No %type nodes exist in database.', array('%type' => $content_type));
    }
  }

  // Get and update nodes.
  $nids = db_select('node')
    ->fields('node', array('nid'))
    ->condition('type', $content_type)
    ->range(0, 10)
    ->execute()
    ->fetchCol();

  if (!empty($nids)) {
    $nodes = node_load_multiple($nids, NULL, TRUE);

    foreach ($nodes as $node) {
      $node->comment = 1; // I set comments as 1 where value of 2 enables the comments.
      node_save($node);   // Re-save the node.
    }
  }

  // Increment & check progress.
  $sandbox['progress'] += count($nids);
  if (empty($nids) || $sandbox['progress'] >= $sandbox['total']) {
    $sandbox['#finished'] = 1;
    return t('Updated @count nodes.', array('@count' => $sandbox['progress']));
  }
  else {
    $sandbox['#finished'] = $sandbox['progress'] / $sandbox['total'];
  }
}

Đừng quên thay thế 'node_type' thành loại nút của bạn.


1

Cách đơn giản nhất để vô hiệu hóa nhận xét trong biểu mẫu web là chỉ cần truy cập biểu mẫu web EDIT và ở dưới cùng của tùy chọn EDIT có một tùy chọn Cài đặt Nhận xét .

Theo mặc định, nó luôn luôn MỞ để làm cho nó đóng và phần bình luận từ biểu mẫu web sẽ biến mất ...


1

Bạn có thể sử dụng CSS để ẩn phần bình luận để các bình luận hồi cứu không hiển thị.

Thêm mã CSS vào Quản trị viên> Giao diện> Nâng cao> tab CSS tùy chỉnh. Bạn sẽ phải xem tên lớp của các div cho các loại trang của trang web cụ thể của bạn. Đây là một ví dụ từ trang thử nghiệm của tôi sử dụng loại trang mục Tin tức (tên máy "bài viết"):

.node-article .comment-wrapper{
 visibility: hidden;
 display: none;
 }

0

Sử dụng Chế độ xem Hàng loạt Hoạt động, với thao tác mặc định: "Sửa đổi / Thay đổi giá trị thực thể". Tại đây bạn có thể đặt bình luận thành đóng cho các nút hiện có.


0

Nó khá thẳng về phía trước, làm theo các bước dưới đây:

  1. Điều hướng đến Cấu trúc> Loại nội dung> Biểu mẫu web
  2. Sau đó Chỉnh sửa biểu mẫu web và Nhấp vào Cài đặt Nhận xét trong cài đặt bên trái.
  3. Thay đổi giá trị "Cài đặt nhận xét mặc định cho nội dung mới" thành 'Đóng' và lưu cài đặt.

Cảm ơn


0

Tôi đã có điều này xảy ra với khoảng 50.000 hồ sơ tôi đã nhập vào 4 loại nội dung khác nhau. Tôi không muốn xóa và nhập lại hoặc làm rối tung các truy vấn SQL trong cơ sở dữ liệu. Nếu bạn muốn xóa chức năng bình luận khỏi tất cả các nút, chỉ cần vô hiệu hóa mô-đun nhận xét.

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.