Plantillas de artículos relacionados

Puedes crear una plantilla especial para embeber un bloque con los artículos relacionados en las plantillas de artículo. Puedes discriminar estos relacionados según sean cargados manualmente o por taxonomía.

Publicado: Viernes 5 de octubre de 2018 por Adriano Varoli Piazza
Última modificación: Lunes 4 de enero de 2021

Prontus te permite seleccionar manualmente artículos relacionados a un artículo que estás editando, o mostrar artículos relacionados según taxonomía. Para esto debes implementar una plantilla especial y luego embeberla en tus plantillas de artículo. Aquí te mostramos cómo.

Ubicación

Tanto para los relacionados manuales como para los relacionados por taxonomía, la plantilla debe ubicarse en el mismo lugar: el directorio /[nombre del prontus]/plantillas/cache/taxonomia/pags. Puedes crear múltiples plantillas. Convencionalmente llamamos a la principal "art_relac.html", pero puedes darle el nombre que prefieras.

Al procesar los artículos, Prontus generará archivos de salida en y deberás embeberlos con código como el siguiente:

Relacionados manuales
<!--# include virtual="/%%_prontus_id%%/site/artic/%%_fechac%%/pags/%%_ts%%_art_relac.html" -->
Relacionados por taxonomía
%%if(_tax)%%
  <h2>Artículos Relacionados</h2>
  <!--# include virtual="/%%_prontus_id%%/site/artic/%%_fechac%%/pags/%%_ts%%_art_relac.html" -->
%%/if%%
%%nif(_tax)%%
  %%if(_seccion1)%%
    <h2>Artículos Relacionados</h2>
    <!--# include virtual="/%%_prontus_id%%/site/cache/taxonomia/pags/%%_seccion1%%_%%_tema1%%_%%_subtema1%%_art_relac_tax.html" -->
  %%/if%%
%%/nif%%

La marca _tax contiene una lista con los timestamps de los artículos relacionados manualmente, separados por comas. En caso de que el artículo actual tenga relacionados asignados, se carga la página /%%_prontus_id%%/site/artic/%%_fechac%%/pags/%%_ts%%_art_relac.html. De otro modo, se revisa si el artículo tiene una sección taxonómica asignada, y en ese caso se carga la página <!--# include virtual="/%%_prontus_id%%/site/cache/taxonomia/pags/%%_seccion1%%_%%_tema1%%_%%_subtema1%%_art_relac_tax.html" -->. Como puedes ver, usamos dos plantillas distintas.

Nota: se generan relacionados solamente para la taxonomía completa del artículo, no para sus variantes. Por ejemplo, si el artículo tiene sección 1 y tema 3, se generarán los relacionados por taxonomía en "/%%_prontus_id%%/site/cache/taxonomia/pags/1_3__art_relac_tax.html", pero no en "/%%_prontus_id%%/site/cache/taxonomia/pags/1___art_relac_tax.html".

También es buena idea agregar código defensivo para chequear si el archivo existe. En ese caso el modo más sencillo es implementar este código de includes usando PHP, o agregar la instrucción onerror al include SSI:

<!--# include virtual="/%%_prontus_id%%/site/cache/taxonomia/pags/%%_seccion1%%_%%_tema1%%_%%_subtema1%%_art_relac_tax.html" onerror="/%%_prontus_id%%/stat/error_tax_no_existe.html" -->

Deberás crear el archivo error_tax_no_existe.html para cubrir este caso.

Artículos Relacionados por Taxonomía

Dado que la salida de los artículos relacionados por taxonomía es común a todos los artículos con la misma taxonomía, si deseas que en cada artículo no aparezca un enlace como relacionado a sí mismo, debes implementar un poco de código. En el ejemplo usaremos PHP para modificar la plantilla [nombre del sitio]/plantillas/cache/taxonomia/pags/art_relac.html:

<h3>Relacionados</h3>
<div class="relac">
<?php $COUNTER = 0; ?>
%%loop%%
<?php if ($TS != '%%_ts%%' && $COUNTER < 6) { ?>
<article>
  <span>
  »
    <span class="fecha-dinamica">
    <span class="fecha" style="display: none;">%%_fechap%%</span>
  <span class="hora" style="display: none;">%%_horap%%</span>
    </span>
  </span>
  <a href="%%_fileurl%%" class="link">
  %%if(txt_titular_portada)%%
%%titular_portada%%
%%/if%%
%%nif(txt_titular_portada)%%
%%_titular%%
%%/nif%%

  </a>
</article>
<?php
  $COUNTER++;
}
?>
%%/loop%%
</div>

Dentro de ese código se usa la variable PHP $TS,  que debe declararse anteriormente en la plantilla del artículo, por ejemplo:

<?php $TS = "%%_ts%%";?>
<!doctype html>
<html>...
Multivistas

Lo dicho arriba vale para multivistas, pero en este caso debes crear las plantillas que necesites en los múltiples directorios dentro de /[nombre del prontus]/plantillas/cache/taxonomia/. Por ejemplo, para una vista "movil" debes crear el subdirectorio /[nombre del prontus]/plantillas/cache/taxonomia/pags-movil/ y agregar dentro de él las plantillas que necesites.