Domanda

im qui con una domanda cattiva.

Drupal gestire i commenti che danno all'utente la possibilità di visualizzare thems solo in 4 modi:. Flat list - collapsed, Flat list - expanded, Threaded list - collapsed, e Threaded list - expanded

Im utilizzando l'ultimo, il quale fornire un markup come:

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

ma mi piacerebbe avere il commento 'figli' all'interno dello stesso elemento DOM del commento 'genitore'. Così, per esempio, qualcosa come:

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

al fine di avere un markup che mi permetta di mostrare i commenti filettati come questo blog (utilizzando wordpress) fa.

E 'usare un markup come:

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

Quindi, qual è il drupalish modo per farlo (meglio se tutti i cambiamenti cui ho bisogno sono nei file template.php o di templating)?

È stato utile?

Soluzione

comment_render () sembra fare tutto internamente. Così si avrebbe bisogno di riscrivere questo. Purtroppo se si utilizza node_show () per rendere i nodi comment_render verranno eseguiti automaticamente (non tramite una funzione di tema override) quindi sarà necessario fare un sacco di lavoro per ottenere questo a fare quello che vuoi.

In primo luogo si dovrà utilizzare hook_nodeapi di convincere Drupal core che non ci sono commenti ( modulo parlare fa questo)

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;
  }
}

Poi sarà necessario scrivere una propria implementazione di comment_render (con nidificazione) e chiamare che, dopo il nodo è reso (probabilmente sulla tua pagina modello o in una funzione pre-elaborazione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top