Pregunta

im aquí con una pregunta desagradable.

Drupal tramitación de observaciones dando al usuario la opción de mostrar thems acaba de 4 formas:. Flat list - collapsed, Flat list - expanded, Threaded list - collapsed y Threaded list - expanded

Im utilizando la última, los cuales proporcionan un margen de beneficio como:

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

Sin embargo, me gustaría tener el comentario 'niños' en el interior del mismo elemento dom del comentario 'padre'. Así, por ejemplo, algo como:

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

con el fin de tener un marcado que me permitirá mostrar los comentarios de rosca como este el blog (usando wordpress) hace.

Se utiliza un margen de beneficio como:

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

Así que, ¿cuál es la forma drupalish para hacer eso (mejor si todos los cambios que necesito están en los archivos de plantillas o template.php)?

¿Fue útil?

Solución

comment_render () parece hacer todo internamente. Por lo que tendría que volver a escribir esto. Desafortunadamente si está utilizando node_show () para hacer sus nodos comment_render se ejecutarán de forma automática (no a través de una función de tema reemplazable) por lo que tendrá que hacer un montón de trabajo para conseguir esto para hacer lo que desea.

En primer lugar, tendrá que usar hook_nodeapi convencer núcleo de Drupal que no existen comentarios (la href="http://drupal.org/project/talk" rel="nofollow noreferrer"> módulo de charla hace esto)

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

A continuación, tendrá que escribir su propia implementación de comment_render (con anidamiento) y llamar a que después del nodo se representa (probablemente en su página de plantilla o en una función de preproceso).

scroll top