Antetítulos ó subtítulos en titulares de noticias con K2 y joomla 6

Antetítulos ó subtítulos en titulares de noticias con K2 y joomla

Con unas pocas líneas de código en php, algo de html y CSS, además de algo de ingenio es muy sencillo añadirle antetítulos a los titulares del componente K2 de joomla.

Ejemplo El Mundo

El Mundo utiliza los antetítulos y varios enlaces después de la entradilla en muchas noticias

Es posible que muchos de vosotros utilicéis joomla como gestor de contenidos para un periódico y si lo hacéis habréis descubierto la potencia que tiene K2 para estas funciones por el uso de imágenes, el etiquetado, los campos extra ó el uso de video.

Sin embargo, una de las cosas que echaba en falta para equipararlo a los gestores de contenido que manejan los grandes periódicos en Internet era el uso de antetítulos o subtítulos en los titulares del componente K2. Para ello, lo más sencillo es usar la funcionalidad de “Extra fields” ó “Campos extra” de K2 que pueden ser del tipo caja de texto, fecha, listado de opciones, etc.

Ejemplo El País

El País solo utiliza enlaces después de la entradilla

Para llevar a cabo este truco, lo más importante es planificar cuántos campos extra queremos para nuestras categorías. Yo creo que lo mejor es crear los siguientes:

  1. Antetítulo (ó subtitulo): del tipo campo de texto.
  2. Enlace1: Para añadir algo de información ó un enlace a un artículo.
  3. Enlace2: por si acaso…
  4. Archivo: Para pdfs ó documentos.
  5. Otros… (lo dejo a vuestra imaginación).

Una vez creados estos campos en el gestor de K2 y asociarlos a la categoría correspondiente (noticias, sucesos…) creamos una plantilla específica para esa categoría. Me explico. Con K2 es posible crear plantillas además de la default que podemos asignar a cada categoría como podéis ver en la imagen de la derecha. Para ello tenemos que ir a la raíz de nuestro sitio ->components->com_k2->templates y ahí creamos una carpeta nueva que podemos llamar noticias (por ejemplo) y dentro copiamos lo mismo que hay en la carpeta default (item.hp, category_item.php…). Una vez creada veremos que al ir a cambiar las opciones de nuestra categoría nos permitirá elegir una nueva plantillaque se llamará como hayamos nombrado la nueva carpeta.

A partir de ahí, trabajaremos sobre los archivos de la nueva plantilla que en este caso son item.php y category_item.php (que son la noticia completa en el caso de item.php y el listado de noticias en el caso de category_item.php). Para llamar al primer campo extra en solitario(en vez de un listado de campos extra como hace normalmente K2) ponemos el siguiente código en php donde queramos dentro de item.php ó category_item.php:

 <span>
 <?php echo $this->item->extra_fields[0]->value; ?>
 </span>
 

Donde el valor 0 (cero) es el primer campo extra de un grupo de campos extras. Si pusiera valor 1 sería el segundo en el orden de campos extras y en este caso sólo he llamado al valor, es decir, al contenido del campo extra y no el nombre de éste. También podemos llamar en solitario al segundo campo extra de la misma manera:

 <span>
 <?php echo $this->item->extra_fields[1]->value; ?>
 </span>
 

Sin embargo, el problema viene cuando necesitamos usar el resto de los campos extra para que sí se muestren un listado ya que el código original de K2 hace una búsqueda (foreach) entre todos los campos extra de ese artículo y los muestra. Para evitar que muestre los 2 primeros, por ejemplo, debemos añadir lo siguiente en el código que llama a los campos extra:


<?php if ($key < 2) continue; ?>

Y quedaría así:

<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
 <!-- Item extra fields -->
 <div class="itemExtraFields">
 <h3><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h3>
 <ul>
 <?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
 <?php if($extraField->value): ?>
<?php if ($key < 2) continue; ?>
 <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
 <span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span>
 <span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
 </li>
 <?php endif; ?>
 <?php endforeach; ?>
 </ul>
 <div class="clr"></div>
 </div>
 <?php endif; ?>

Espero que os ayude!!

  • Mario Peralta

    Excelente articulo, solo me queda una duda y es en el caso que quiera algo de articulos relacionados como lo haria??

    • alfonsofmoreno

      Pues exactamente no sé a qué te refieres. Si quisieras saltarte los primeros artículos relacionados valdría la fórmula <?php if ($key ya que igualmente se hace un foreach de los relacionados por etiqueta. ¿Te he resuelto la duda?

  • http://twitter.com/Marcusen Marc Díez

    Perfecto, me has ahorrado horas en un mar de PHP! Sólo tengo una duda, y es como aplicarlo en el modulo k2_content.

    El campo extraField lo he conseguido llamar sin problema con

    echo $item->extra_fields[0]->value; ?>

    pero la línea

    if ($key

    no sirve puesto que en el módulo se llama a la función extraField mediante

    foreach ($item->extra_fields as $extraField): ?>

    en vez de la siguiente, usada en el componente.

    foreach ($this->item->extra_fields as $key=>$extraField): ?>

    Alguna idea?

    • alfonsofmoreno

      Pues en el módulo la verdad es que no lo he probado para los campos extra, tan solo llamar a campos concretos. Sí que he utilizado para, por ejemplo, saltarme x artículos si quieres hacer un módulo que muestre la continuación de los artículos que tienes en el componente principal como explico aquí http://es.getk2.org/comunidad/10-usuarios-avanzados/1933-solucion-saltar-x-articulos-en-el-mod-k2-content

    • http://twitter.com/Marcusen Marc Díez

      Solucionado! Ha sido tan facil como, en mod_k2_content modificar la linea

      foreach ($item->extra_fields as $extraField): ?>

      y añadirle el $key=>

      foreach ($item->extra_fields as $key=>$extraField): ?>

      Muchas gracias!

  • Controversia Docente

    Me ha sido de mucha utilidad su artículo. Mil gracias. Ahora tengo una inquietud, pues hace algún tiempo estoy buscando la forma de manejar mis títulos en Joomla con HTML, de tal forma que pueda poner alguna parte en itálica (cursiva). Esto es algo que se vuelve muy necesario cuando por respeto a las reglas del idioma se deben usar en cursiva palabras del latín u otro idioma, nombres científicos o nombres de publicaciones. ¿Conocen ustedes un camino?

A %d blogueros les gusta esto: