COMO mostrar información adicional del autor de un nodo en Drupal

En un blog, sobre todo si en él escribe más de un autor pero no sólo en esos casos, es importante que se sepa quién escribe cada post. Esto lo hacemos mostrando selectivamente una breve información sobre el autor del post en concreto, no sólo su nombre, sino algo más (contexto del autor: trayectoria, biografía, a qué se dedica, …).

En Drupal es común que esto se aborde mediante la creación de un bloque usando Views, que luego incluye la info relativa al autor de cada post.

Esto tiene dos problemas.

  • Uno técnico. El bloque aparecerá vacío cuando en vistas que no sean de un único nodo. Por ejemplo, en la página principal. «Pues indicamos que no aparezca en <front> y santas pascuas», estará pensando alguno. Parece sencillo pero tenemos tantas vistas en las que no queremos ese bloque (archivos, páginas de usuario, cualquier View de tipo página que muestre contenido agregado o especial, … y podríamos seguir) que nunca estaremos seguros de haberlo filtrado bien.
  • Otro de usabilidad. Pero no importa, for the sake of the argument, vamos a considerar que la primera vía fuera una buena solución técnica. En ese caso tenemos tres posibilidades: colocar el bloque justo antes del post, antes incluso del título del mismo. Colocarlo debajo del contenido principal o colocarlo en la sidebar, preferiblemente arriba del todo, en una ubicación preferente. Las tres son malas opciones: sobre el post porque da la mayor importancia de la página no al contenido de la misma sino al autor (en la mayoría de ocasiones no será lo que deseemos), bajo el contenido porque para ver ese bloque habrá que pasar primero por todos los comentarios que haya al mismo. Pueden ser muchos comentarios, y el bloque se perderá sin ser visto. Sobre la barra lateral es una situación intermedia, pero aún mejorable, pues más allá del nombre del autor, quizá el lector no quiere saber más de él antes de terminar el post y saber si el autor del mismo propone ideas interesantes. En ese caso, mejor aprovechar la barra lateral con los tradicionales botones de suscripción, mucho más importantes.

Entonces, ¿cuál es la ubicación idónea de esta información adicional sobre el autor de un nodo y cómo lo mostramos?

La ubicación
Lo idóneo es bajo el contenido del post y antes de los comentarios. En ese momento el lector ya ha leído el artículo y está preparado para recibir información adicional sobre el autor que le servirá para saber si buscar más ideas de este autor o descartarlo, o para contextualizar alguna afirmación arriesgada que el mismo haya podido hacer durante el artículo. Sólo después, con todo el contexto, el lector pasa a ver aportes de otros usuarios en comentarios. Evitamos distraerlo antes de que finalice su lectura, que es lo hacíamos poniendo esta información más arriba en la página.

La solución: cómo mostramos esta info
En Drupal 7 tenemos la ventaja de toda la flexibilidad que nos da el módulo Field, que ahora es parte del core y nos permite añadir campos con información adicional a casi cualquier aspecto que se nos ocurra.

  1. En nuestro caso, añadiremos un campo adicional al perfil del usuario, con un nombre descriptivo, algo como bio y le decimos a Drupal que será un campo tipo Texto Largo con un elemento de control del tipo Área de texto (varias filas). El breadcrumb para añadir este campo al perfil del usuario es: Inicio » Administración » Configuración » Personas » Opciones de la cuenta, y ahí seleccionamos la pestaña Gestionar campos. La URL relativa es /admin/config/people/accounts/fields.
  2. Una vez hemos añadido el campo, empezamos el cacharreo de verdad. Si queremos que este campo se muestre en todos los tipos de contenido, necesitaremos editar el archivo node.tpl.php de nuestra plantilla. Si, por el contrario, queremos que sólo afecte a un tipo de contenido editamos, o lo creamos si no existiera, el correspondiente archivo node--TIPODECONTENIDO.tpl.php, sustituyendo (obviamente) «TIPODECONTENIDO» por el nombre máquina de tu tipo de contenido. (Lo más común es que se trate de node--article.tpl.php.)
  3. En ese archivo, justo debajo del render del contenido del post y antes de renderizar los comentarios añadimos estas líneas, asumiendo que el campo recién creado para la info del autor se llame bio:

    <div class="autor-bio">
    <?php print $user_picture; ?>
    <?php
    $autor = user_load($node->uid);
    print ($autor->field_bio['und'][0]['value'])>
    ?>
    </div>

    Estas líneas mostrarán una foto del autor del nodo y, adicionalmente, la información sobre él.

Un ejemplo del resultado lo tenemos en cualquier post del blog de Cartograf, pero aquí enseñamos una demostración:

Sobre el autor en Drupal 7

Es posible que necesites vaciar la cache de tu Drupal para percibir los cambios y, claro, aún tendrás pendiente estilar bio la clase que hemos asignado a la capa, para que se vea verdaderamente bonito.

El resultado será exactamente el que queríamos, y exactamente el que da la información al visitante en el momento en que mejor le sirve. Y este post lo dejo aquí porque, ciertamente, estaba cansado ya de ver cómo la única solución que encuentras por ahí es la del bloque, muy simple y rápida pero también un tanto cutre. Así que ya que cociné ésta en un rato, la dejo aquí para la posteridad y para ahorrar sudores a todo aquel que necesite hacer algo similar.

Jose Alcántara
Resolviendo problemas mediante ciencia, software y tecnología. Hice un doctorado especializado en desarrollo de hardware para análisis químico. Especialista en desarrollo agile de software. Más sobre Jose Alcántara.
Este blog usa cookies para su funcionamiento.    Más información
Privacidad