Bagaimana akhirnya menonaktifkan komentar pada tipe konten?

12

Saya mencoba menonaktifkan komentar di formulir web. Saya mencoba semua pengaturan yang dapat saya temukan, tetapi:

  • Tautan ke formulir komentar masih muncul
  • Bidang nama dan tombol kirim masih muncul di formulir komentar

Bisakah seseorang memberi saya saran?

Natrium
sumber

Jawaban:

11

Seperti juampy menulis, node_revision juga harus diperbarui. Anda perlu menjalankan 2 pertanyaan:

Langkah 1:

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

Langkah 2:

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

Langkah 3: Bersihkan cache

Dawid Tomaszewski
sumber
1
Dan jika Anda baru saja menginstal sesuatu seperti Disqus maka Anda bisa menjalankannya UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Bekerja untuk saya :-).
Nux
Jika Anda perlu menghapus komentar dari semua jenis simpul cukup gunakan permintaan @Nux.
albertski
7

Terkadang lebih mudah menggunakan SQL. Ini, saya pikir, adalah salah satu dari kasus-kasus itu.

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

0 = dinonaktifkan

1 = hanya baca

2 = baca / tulis.

skomorokh
sumber
2
0 = dinonaktifkan, 1 = hanya baca, 2 = baca / tulis. Saya pikir ini adalah jawaban terbaik :)
AyeshK
@ AyeshK, bagus saya sudah mengedit jawabannya.
niksmac
di satu sisi, jika Anda tahu cara menulis / mengeksekusi kueri seperti ini, Anda mungkin tidak berjuang untuk mencari cara mematikan komentar, di sisi lain, dalam hal kecepatan / efisiensi, solusi berbasis permintaan db adalah JAUH lebih baik daripada milikku :)
David Meister
7

Mengubah pengaturan komentar default untuk jenis konten, seperti yang disarankan oleh uwe999 hanya mengubah pengaturan default untuk jenis konten. Itu berarti tidak akan mengubah pengaturan untuk konten yang ada secara surut (karena itu dapat menghapus komentar yang ada).

Anda harus mengunjungi tampilan edit simpul untuk setiap node yang ada yang Anda coba nonaktifkan komentarnya dan perbarui pengaturan di sana. Jika Anda memasang modul seperti modul kolom Node form , yang menyembunyikan / menghapus elemen dari node tambah / edit halaman, maka Anda harus memperbarui konfigurasinya kotak pengaturan komentar muncul untuk node.

David Meister
sumber
3

Tidak ada solusi di atas yang berfungsi untuk saya. Formulir komentar masih ditampilkan di node yang sudah ada kecuali Anda memperbarui node_revision juga.

Inilah implementasi hook_update_N () yang berfungsi untuk saya:

/**
 * 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();
}
Juampy NR
sumber
2

Anda menonaktifkan komentar di "struktur / tipe konten / [nama tipe] / pengaturan edit / komentar. Setel" Pengaturan komentar default untuk konten baru "untuk disembunyikan.

Jika Anda memiliki komentar yang ada, Anda dapat menghapusnya di "konten / komentar" atau hanya tidak mempublikasikannya.

kamu
sumber
Saya melakukannya, tetapi tautan ke formulir masih, kemungkinan hanya opsi yang mengubah template atau hanya permainan css murni: tidak ada, aneh
Codium
template apa yang kamu gunakan?
uwe
1

Saya tidak yakin tentang masalah Anda, tetapi satu trik kotor adalah membuat templat khusus untuk jenis konten Anda dan menghapus bagian komentar.

tostinni
sumber
1

Nonaktifkan komentar di sini dulu:

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

Untuk memperbarui node, sayangnya, Anda harus menyimpan kembali setiap node. Gunakan hook_update di bawah ini:

/**
 * 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'];
  }
}

Jangan lupa ganti 'node_type' ke tipe simpul Anda.

mrded
sumber
1

Cara paling sederhana untuk menonaktifkan komentar di formulir web adalah dengan hanya pergi ke formulir web EDIT dan di bagian bawah opsi EDIT ada opsi Pengaturan Komentar .

Secara default selalu BUKA jadi tutuplah dan bagian komentar dari formulir web akan hilang ...

Nitesh Sethia
sumber
1

Anda dapat menggunakan CSS untuk menyembunyikan bagian komentar sehingga komentar retrospektif tidak muncul.

Tambahkan kode CSS ke Admin> Appearance> Advanced> Custom CSS tab. Anda harus melihat nama kelas div untuk jenis halaman situs spesifik Anda. Berikut ini contoh dari situs pengujian saya yang menggunakan jenis halaman item Berita (nama mesin "artikel"):

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

Gunakan Operasi Massal Tampilan, dengan operasi default: "Ubah / Ubah Nilai Entitas". Di sini Anda dapat mengatur komentar menjadi ditutup ke node yang ada.

giorgio79
sumber
0

Cukup lurus ke depan, ikuti langkah-langkah di bawah ini:

  1. Buka Struktur> Jenis Konten> Formulir Web
  2. Kemudian Edit formulir web dan Klik Pengaturan Komentar di pengaturan sisi kiri.
  3. Ubah nilai "Pengaturan komentar default untuk konten baru" menjadi 'Tutup' dan simpan pengaturan.

Terima kasih

Sandesh Manghale
sumber
0

Saya memiliki ini terjadi pada sekitar 50.000 catatan yang saya impor ke 4 jenis konten yang berbeda. Saya tidak ingin menghapus dan mengimpor kembali atau mengacaukan dengan query SQL di database. Jika Anda ingin menghapus fungsi komentar dari semua node, cukup nonaktifkan modul komentar.

MascotDB
sumber