Atualmente, eu quero listar comentários para nós (por Views, por exemplo), portanto, preciso ocultar a lista de comentários padrão do módulo de comentários principal. Eu posso fazer assim:
unset($node['comments']['comments']);
Mas isso não impedirá a consulta do banco de dados para comentários.
Então, eu encontrei algumas maneiras loucas de enganar o módulo de comentários. Por exemplo, para definir uma $node->preview
propriedade falsa ou para criar um novo modo de exibição e substituir o node/%node
retorno de chamada padrão .
É realmente tão difícil ocultar comentários abaixo do nó, mas ainda assim posso adicionar um novo comentário ou perdi alguma coisa?
Atualização sobre a opção "Oculto"
E o valor "Oculto" para o tipo de conteúdo:
preciso de um comportamento de fechamento / abertura para meus comentários. Mas se eu definir "Oculto" para o meu tipo de conteúdo, minhas novas partes de conteúdo serão definidas como "Comentários fechados" em vez de ocultos ( eis o código ). Outro problema é que o usuário com permissão para "postar comentários" não pode adicionar um comentário, se os comentários estiverem ocultos ( aqui está o código ).
Então, eu não consigo entender.
Responda
Solução encontrada com hook_module_implements_alter()
. Muito obrigado!
Respostas:
Nos módulos / comment / comment.module, podemos ver que hook_node_view () (comment_node_view ()) está sendo executado na linha 614. É aqui que as funções estão sendo disparadas para carregar todos os comentários e anexá-los ao nó. Os 2 primeiros conjuntos de if () {...} parecem estar lidando com o formulário para adicionar comentário e o link de ação. Então o bloco final de código está finalmente adicionando os comentários, que eu acredito que é o que você mais se preocupa em esconder, e suponho que você queira que isso seja ignorado por motivos de desempenho:
Eu acho que esse código é bobo, porque o módulo de comentários não deve depender de nenhum modo de exibição codificado em particular. Espero que isso mude e se torne uma configuração na interface do usuário.
Independentemente disso, encontrei uma publicação semelhante que lhe interessa: existe uma maneira de impedir que o comment_node_view seja acionado?
Basicamente, você deseja usar hook_module_implements_alter () para impedir que o módulo de comentários seja capaz de disparar hook_node_view (). Aqui está o que você precisa adicionar ao seu módulo personalizado:
fonte
hook_module_implements_alter
!Apenas tente usar hide () no seu arquivo de modelo ou hook_preprocess_node ():
fonte