Ответы:
Как писал 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 , который скрывает / удаляет элементы со страниц добавления / редактирования узла, то вам придется обновить его конфигурацию, появится окно настроек комментария для узлов.
Ни одно из вышеперечисленных решений не помогло мне. Форма комментария по-прежнему отображается в существующих узлах, если вы также не обновите node_revision.
Вот реализация hook_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
К сожалению, чтобы обновить узлы, вам нужно заново сохранить каждый узел. Используйте hook_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» на тип вашего узла.
Самый простой способ отключить комментарии в веб- форме - просто зайти в веб-форму РЕДАКТИРОВАТЬ, а в нижней части опции РЕДАКТИРОВАНИЕ есть опция Настройки комментариев .
По умолчанию его всегда ОТКРЫТЫЙ так сделать его закрыли и раздел комментарий от веб - формы будут исчезать ...
Вы можете использовать CSS, чтобы скрыть раздел комментариев, чтобы ретроспективные комментарии не отображались.
Добавьте код CSS на вкладку «Администрирование»> «Внешний вид»> «Дополнительно»> «Пользовательский CSS». Вам нужно было бы посмотреть на имена классов div для типов страниц вашего конкретного сайта. Вот пример с моего тестового сайта, который использует тип страницы элемента новостей (имя машины «article»):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
Это довольно просто, выполните следующие шаги:
Благодарность
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
. Работал на меня :-).