Відповіді:
Як juampy писав, node_revision повинен бути оновлений. Вам потрібно виконати 2 запити:
Крок 1:
UPDATE node SET comment = 0 WHERE type = 'your_content_type'
Крок 2:
UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0
Крок 3: Очистити кеш
Іноді найпростіше просто використовувати SQL. Я думаю, це один із таких випадків.
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = відключено
1 = лише читати
2 = читати / писати.
Зміна параметрів коментарів за замовчуванням для типу вмісту, як це запропонувало uwe999, змінює лише налаштування за замовчуванням для типу вмісту. Це означає, що він не буде змінювати заднім числом налаштування для існуючого вмісту (оскільки це може видалити наявні коментарі).
Вам доведеться завітати у режим редагування вузла для кожного існуючого вузла, до якого ви намагаєтесь відключити коментарі та оновити там налаштування. Якщо ви встановили такий модуль, як модуль стовпців форми форми , який приховує / видаляє елементи з сторінок вузлів додавання / редагування, то вам доведеться оновити його конфігурацію, щоб з’явилося вікно налаштувань коментарів для вузлів.
Жодне з перерахованих вище рішень не працювало для мене. Форма коментарів все ще відображається в існуючих вузлах, якщо ви також не оновите node_revision.
Ось реалізація moll_update_N (), яка працювала для мене:
/**
* 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();
}
ви відключаєте коментарі у "структурі / типах вмісту / [назва типу] / редагуванні / налаштуваннях коментарів. Установіть" Налаштування коментарів за замовчуванням для нового вмісту "на прихований.
Якщо у вас є коментарі, ви можете видалити їх у розділі "Зміст / коментарі" або просто скасувати публікацію.
Спочатку вимкніть тут коментарі:
structure->content types->{node_type}->edit->comment settings
Щоб оновити вузли, на жаль, вам доведеться повторно зберегти кожен вузол. Використовуйте оновлення kuke_update нижче:
/**
* 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'];
}
}
Не забудьте замінити 'node_type' на свій тип вузла.
Найпростіший спосіб відключення коментарів у веб- формі - це просто перейти до веб-форми EDIT, а в нижній частині параметра EDIT є опція Параметри коментарів .
За замовчуванням його завжди ВІДКРИТИЙ так зробити його закрили і розділ коментар від веб - форми будуть зникати ...
Ви можете використовувати CSS, щоб приховати розділ коментарів, щоб ретроспективні коментарі не відображалися.
Додати CSS-код на Адміністратор> Зовнішній вигляд> Додатково> Спеціальна вкладка CSS. Вам доведеться подивитися назви класів divs для типів сторінок вашого конкретного сайту. Ось приклад з мого тестового сайту, який використовує тип сторінки Новини (назва машини "стаття"):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
Це досить прямо вперед, виконайте наступні кроки:
Дякую
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
. Для мене працювали :-).