Question

im ici avec une question méchante.

Drupal gérer des commentaires donnant à l'utilisateur le choix d'afficher thems juste de 4 façons:. Flat list - collapsed, Flat list - expanded, Threaded list - collapsed et Threaded list - expanded

Im en utilisant la dernière, qui fournit un balisage comme:

<div class="comment">
    <!-- comment's content -->
</div>
<div class="indented">
    <!-- next comment is an 'answer' to the previous comment! -->
    <div class="comment">
        <!-- comment's content -->
    </div>
</div>

Mais je voudrais avoir le commentaire « enfants » à l'intérieur du même élément dom du commentaire « parent ». Ainsi, par exemple, quelque chose comme:

<div class="comment">
    <!-- comment's content -->
    <div class="indented">
        <!-- next comment is an 'answer' to the previous comment! -->
        <div class="comment">
            <!-- comment's content -->
        </div>
    </div>
</div>

afin d'avoir une marge qui me permettent de montrer les commentaires filetés que ce blog (en utilisant wordpress) fait.

Il utilise un balisage comme:

<ul>
    <li>
        <div class="comment>
            <!-- comment's content -->
        </div>
        <ul class="children">
            <li>
                <div class="comment>
                    <!-- comment's content -->
                </div>
            </li>
        </ul>
    </li>
</ul>

Alors, quel est le drupalish façon de le faire (mieux si tous les changements que j'ai besoin sont dans les fichiers template.php ou matriçage)?

Était-ce utile?

La solution

comment_render () semble tout faire en interne. Donc, vous devez réécrire cela. Malheureusement, si vous utilisez node_show () pour rendre vos noeuds comment_render seront exécutés automatiquement (et non via une fonction de thème Overridable) de sorte que vous aurez besoin de faire beaucoup de travail pour obtenir ce pour faire ce que vous voulez.

Tout d'abord, vous devrez utiliser hook_nodeapi pour convaincre noyau qu'il n'y drupal pas commentaires (le module de conversation le fait)

function talk_nodeapi(&$node, $op) {
  switch ($op) {
    case 'load':
      if (talk_activated($node->type) && arg(0) == 'node' && !arg(2)) {
        // Overwrite setting of comment module and set comments for this node to disabled.
        // This prevents the comments of being displayed.
        $output['comment_original_value'] = $node->comment;
        $output['comment'] = 0;
        return $output;
      }
      break;
  }
}

Ensuite, vous aurez besoin d'écrire votre propre implémentation de comment_render (avec imbrication) et appeler après le noeud est rendu (probablement sur votre modèle de page ou dans une fonction de pré-traitement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top