Como finalmente desativar os comentários sobre o tipo de conteúdo?

12

Estou tentando desativar os comentários no formulário da web. Eu tentei todas as configurações que pude encontrar, mas:

  • O link para o formulário de comentários ainda aparece
  • O campo Nome e o botão Enviar ainda aparecem no formulário de comentários

Alguém poderia me dar algum conselho?

Códio
fonte

Respostas:

11

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

Dawid Tomaszewski
fonte
1
E se você acabou de instalar algo como o Disqus, pode simplesmente executar UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Trabalhou para mim :-).
Nux 22/11/13
Se você precisar remover comentários de todos os tipos de nós, use as consultas do @Nux.
Albertski
7

À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.

skomorokh
fonte
2
0 = desativado, 1 = somente leitura, 2 = leitura / gravação. Eu acho que essa é a melhor resposta :)
AyeshK
@ AyyK, bom eu editei a resposta.
Niksmac
por um lado, se você sabe escrever / executar uma consulta como essa, provavelmente não está tendo dificuldades para descobrir como desativar os comentários, por outro lado, em termos de velocidade / eficiência, uma solução baseada em consulta db é muito melhor do que a minha :)
David Meister
7

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.

David Meister
fonte
3

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();
}
Juampy NR
fonte
2

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.

uwe
fonte
Eu fiz isso, mas link para o formulário ainda é, propably única opção está mudando modelo ou apenas pura diplay css: nenhum, estranho
Codium
qual modelo você está usando?
Uwe
1

Não tenho certeza do seu problema, mas um truque sujo pode ser criar um modelo especial para o seu tipo de conteúdo e remover as partes do comentário.

tostinni
fonte
1

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ó.

mrded
fonte
1

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á ...

Nitesh Sethia
fonte
1

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;
 }
Emma
fonte
0

Use Views Bulk Operations, com a operação padrão: "Modify / Change Entity Values". Aqui você pode definir o comentário como fechado para os nós existentes.

giorgio79
fonte
0

É bem simples, siga as etapas abaixo:

  1. Navegue para Estrutura> Tipos de conteúdo> Formulário da Web
  2. Em seguida, edite o formulário da web e clique em Configurações de comentários nas configurações do lado esquerdo.
  3. Altere o valor "Configuração padrão de comentários para novo conteúdo" para 'Fechar' e salve a configuração.

obrigado

Sandesh Manghale
fonte
0

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.

MascotDB
fonte