De hecho, quiero enumerar los comentarios para los nodos (por ejemplo, por Vistas), por lo que necesito ocultar la lista de comentarios estándar del módulo de comentarios principal. Puedo hacerlo así:
unset($node['comments']['comments']);
Pero no impedirá la consulta DB para comentarios.
Así que encontré algunas formas locas de engañar al módulo de comentarios. Por ejemplo, para establecer una $node->preview
propiedad falsa o para crear un nuevo modo de vista y sobrescribir la node/%node
devolución de llamada estándar .
¿Es realmente tan difícil ocultar comentarios debajo del nodo pero aún así permitir agregar nuevos comentarios, o me perdí algo?
Actualización sobre la opción "Oculto"
¿Qué pasa con el valor "oculto" para el tipo de contenido
? Necesito un comportamiento cercano / abierto para mis comentarios. Pero si configuro "Oculto" para mi tipo de contenido, mis nuevas piezas de contenido se configuran como "Comentarios cerrados" en lugar de ocultas ( aquí está el código ). Otro problema es que el usuario con permiso para "publicar comentarios" no puede agregar un comentario, si los comentarios están ocultos ( aquí está el código ).
Entonces no puedo entender la idea.
Responder
Solución encontrada con hook_module_implements_alter()
. ¡Muchas gracias!
Respuestas:
En modules / comment / comment.module podemos ver que hook_node_view () (comment_node_view ()) se está ejecutando en la línea 614. Aquí es donde las funciones se activan para cargar todos los comentarios y adjuntarlos al nodo. Los primeros 2 conjuntos de if () {...} parecen estar manejando el formulario para agregar comentarios y el enlace de acción. Luego, el último bloque de código finalmente agrega los comentarios, que creo que es lo que realmente te preocupa más ocultar, y supongo que quieres omitir esto por razones de rendimiento:
Creo que este código es tonto, porque el módulo de comentarios no debería depender de ningún modo de vista codificado en particular. Esperemos que esto cambie y se convierta en un escenario en la interfaz de usuario.
De todos modos, he encontrado una publicación similar que podría interesarle: ¿Hay alguna manera de evitar que comment_node_view se active?
Básicamente, desea utilizar hook_module_implements_alter () para evitar que el módulo de comentarios pueda activar hook_node_view (). Esto es lo que necesita agregar a su módulo personalizado:
fuente
hook_module_implements_alter
!Solo intenta usar hide () en tu archivo de plantilla, o hook_preprocess_node ():
fuente