Jawaban:
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
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.
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.
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();
}
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.
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.
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 ...
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;
}
Cukup lurus ke depan, ikuti langkah-langkah di bawah ini:
Terima kasih
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.
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
. Bekerja untuk saya :-).