Answers:
有时,仅使用SQL最简单。我认为这就是其中一种情况。
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 =禁用
1 =只读
2 =读/写。
以上解决方案均不适用于我。除非您也更新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”替换为您的节点类型。
以最简单的方式禁用评论在网络表单是简单地去编辑网页表单和编辑选项的底部,有一个选项,评论设置。
通过默认情况下它总是打开,以便使其关闭和注释部分从网页表单将消失 ...
非常简单,请按照以下步骤操作:
谢谢
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
。为我工作:-)。