Respostas:
Como escreveu juampy , o node_revision também deve ser atualizado. Você precisa executar 2 consultas:
Passo 1:
UPDATE node SET comment = 0 WHERE type = 'your_content_type'
Passo 2:
UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0
Etapa 3: limpar o cache
Às vezes, é mais fácil usar o SQL. Este, penso eu, é um desses casos.
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = desativado
1 = somente leitura
2 = leitura / gravação.
Alterar as configurações de comentário padrão para o tipo de conteúdo, conforme sugerido por uwe999, altera apenas as configurações padrão para o tipo de conteúdo. Isso significa que não alterará retroativamente as configurações do conteúdo existente (pois isso pode excluir os comentários existentes).
Você precisará visitar a visualização de edição de nós para cada nó existente para o qual está tentando desativar comentários e atualizar as configurações. Se você instalou um módulo como o módulo de colunas do formulário Nó , que oculta / remove elementos das páginas de adição / edição de nós, será necessário atualizar sua configuração, a caixa de configurações de comentários aparece para os nós.
Nenhuma das soluções acima funcionou para mim. O formulário de comentário ainda é exibido nos nós existentes, a menos que você atualize o node_revision também.
Aqui está a implementação hook_update_N () que funcionou para mim:
/**
* 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();
}
você desabilita os comentários em "estrutura / tipos de conteúdo / [nome do tipo] / configurações de edição / comentário. Defina" Configuração padrão de comentários para novo conteúdo "como oculta.
Se você possui comentários existentes, é possível excluí-los em "conteúdo / comentários" ou simplesmente cancelar sua publicação.
Desative os comentários aqui primeiro:
structure->content types->{node_type}->edit->comment settings
Para atualizar os nós, infelizmente, você deve salvar novamente cada nó. Use hook_update abaixo:
/**
* 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'];
}
}
Não esqueça de substituir 'node_type' pelo seu tipo de nó.
A maneira mais simples de desativar os comentários no formulário da web é simplesmente ir para o formulário da web EDIT e, na parte inferior da opção EDIT, existe uma opção de Configurações de comentários .
Por padrão, está sempre ABERTO, portanto, feche-o e a seção de comentários do formulário da Web desaparecerá ...
Você pode usar CSS para ocultar a seção de comentários, para que os comentários retrospectivos não sejam exibidos.
Adicione o código CSS à guia Admin> Aparência> Avançado> CSS personalizado. Você precisaria procurar os nomes de classe dos divs para os tipos de página do seu site específico. Aqui está um exemplo do meu site de teste que usa o tipo de página do item Notícias (nome da máquina "article"):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
É bem simples, siga as etapas abaixo:
obrigado
Isso aconteceu com cerca de 50.000 registros importados em 4 tipos de conteúdo diferentes. Eu não queria apagar e reimportar ou mexer com consultas SQL no banco de dados. Se você deseja remover a funcionalidade de comentários de todos os nós, basta desativar o módulo de comentários.
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
. Trabalhou para mim :-).