En fait, je veux lister les commentaires pour les nœuds moi-même (par Views, par exemple), donc je dois masquer la liste des commentaires standard du module de commentaires principal. Je peux le faire comme ça:
unset($node['comments']['comments']);
Mais cela n'empêchera pas la requête DB pour les commentaires.
J'ai donc trouvé des façons folles de tromper le module de commentaires. Par exemple, pour définir une fausse $node->preview
propriété ou pour créer un nouveau mode d'affichage et remplacer le node/%node
rappel standard .
Est-il vraiment si difficile de masquer les commentaires sous le nœud mais de permettre d'ajouter de nouveaux commentaires, ou j'ai raté quelque chose?
Mise à jour sur l'option «Hidden»
Qu'en est-il de la valeur «cachée» pour le type de contenu:
j'ai besoin d'un comportement de fermeture / ouverture pour mes commentaires. Mais si je mets «Masqué» pour mon type de contenu, mes nouveaux éléments de contenu sont mis à «Commentaires fermés» au lieu de masqués ( voici le code ). Un autre problème est que l'utilisateur autorisé à «poster des commentaires» ne peut pas ajouter de commentaire, si les commentaires sont masqués ( voici le code ).
Je ne comprends donc pas l'idée.
Réponse
Solution trouvée avec hook_module_implements_alter()
. Merci beaucoup!
Réponses:
Dans les modules / comment / comment.module, nous pouvons voir que hook_node_view () (comment_node_view ()) fonctionne sur la ligne 614. C'est là que les fonctions se déclenchent pour charger tous les commentaires et les attacher au nœud. Les 2 premiers ensembles de if () {...} semblent gérer le formulaire d'ajout de commentaire et le lien d'action. Ensuite, le dernier bloc de code ajoute enfin les commentaires, ce qui, selon moi, est ce qui vous préoccupe le plus, et je suppose que vous voulez que cela soit ignoré pour des raisons de performances:
Je pense que ce code est idiot, car le module de commentaire ne devrait pas dépendre d'un mode d'affichage codé en dur particulier. Espérons que cela va changer et devenir un paramètre dans l'interface utilisateur.
Quoi qu'il en soit, j'ai trouvé un article similaire qui pourrait vous intéresser: existe-t-il un moyen d'empêcher comment_node_view de tirer?
Fondamentalement, vous souhaitez utiliser hook_module_implements_alter () pour empêcher le module de commentaire de déclencher hook_node_view (). Voici ce que vous devez ajouter à votre module personnalisé:
la source
hook_module_implements_alter
!Essayez simplement d'utiliser hide () dans votre fichier modèle, ou hook_preprocess_node ():
la source