Plantillas de taxonomía

Prontus te permite ordenar el contenido de tu sitio jerárquicamente en taxonomías. Puedes, usando distintas plantillas de taxonomía, catalogar tu sitio de un modo muy específico. Por ejemplo, puedes crear una plantilla global, pero también puedes especificar distintos estilos, diseños, o incluso formatos de código para distintos tipos de artículo o distintas taxonomías. Además, puedes definir múltiples vistas para las mismas taxonomías.

Publicado: Martes 25 de Septiembre de 2018 por Equipo de desarrollo AltaVoz
Última modificación: Martes 7 de Mayo de 2019
Estructura

Las plantillas taxonómicas (y también las de tags y de listados) son parecidas a las plantillas de portada. Su estructura básica es:

%%LOOP%%
  <div class="titular">
   <a href="%%_FILE%%" target="_top">%%_TXT_TITULAR%%</a>
  </div>
%%/LOOP%%
%%_msg%% Vea más en las siguientes páginas:| %%_HTML_NROS_PAG%% |%%/_msg%%
<!-- MSG no_results = No se encontraron resultados. -->

Las portadas de taxonomía no tienen una vista de administración como las portadas principales. No puedes especificar la ubicación de un artículo específico dentro de una taxonomía, solamente puedes configurar el orden global de todos los artículos, usando las variables de configuración presentes en Administrar → Configuración → Categorías: puedes ordenar por fecha de creación o publicación, o por orden alfabético del titular, especificando además si el orden debe ser ascendente o descendente.

Cuando le asignas una taxonomía a un artículo y lo guardas, Prontus procesa las páginas de esa taxonomía agregándolo. Del mismo modo, Prontus procesa las taxonomías quitando los artículos que ya no pertenecen a ellas.

El formato de la plantilla puede ser otra cosa que no sea HTML. Puedes perfectamente implementar una plantilla en formato JSON, XML, etc. Lo único que importa es que uses la marca LOOP correctamente, y que ubiques la plantilla en el directorio correcto.

La ubicación normal de las plantillas es /[nombre del prontus]/plantillas/tax/port/all/ y su nombre por convención es taxport.html. Al guardar un artículo de la taxonomía con ID 1 Prontus genera documentos en /[nombre del prontus]/site/tax/port/all/taxport_1___1.html, [nombre del prontus]/site/tax/port/all/taxport_1___2.html, etc.

Puedes crear plantillas definidas para una taxonomía determinada, para un solo tipo de FID, y para ambas cosas a la vez. Para esto basta cambian la ruta y el nombre del archivo. Por ejemplo,

  • para tener una portada que muestre los artículos de cualquier tipo de FID en la sección 2, basta crear una plantilla /[nombre del prontus]/plantillas/tax/port/all/taxport_2.html.
  • para delimitar aún más la plantilla y mostrar una sección, tema y subtema, deberemos agregar los IDS al fondo del nombre de archivo, separados por "_". Esto resulta en [nombre del prontus]/plantillas/tax/port/all/taxport_2_1_1.html:
  • para crear una plantilla que genere portadas de artículos de la sección 2 para el fid_noticias, deberemos usar la ruta /[nombre del prontus]/plantillas/tax/port/fid_noticias/taxport_2.html.
  • por último, no es necesario que el formato sea HTML. Si queremos una portada taxonómica en formato XML -por ejemplo para un feed RSS- podemos crear un archivo XML con la estructura que necesitemos, en la ruta deseada. En este caso, /[nombre del prontus]/plantillas/tax/port/all/rss.xml.

Puedes reusar código entre múltiples plantillas creando macros. Las macros para plantillas de taxonomía deben estar ubicadas en el directorio /[nombre del prontus]/plantillas/tax/macros/.

La estructura de una portada taxonómica en formato XML puede ser:

<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0">
  <channel>
    <title>[NOMBRE]</title>
    <link>%%_FRONTEND_PROTOCOL%%%%_SERVER_NAME%%%%_PRONTUS_ID%%/site/tax/port/all/rss_1___1.xml</link>
    <description>[TEXTO]</description>
    <ttl>60</ttl>
    %%LOOP%%
      %%IF(_fid eq fid_general)%%
        <item>
          <pubDate>%%_UTCP%%</pubDate>
          <title>%%_titular.xml%%</title>
          <link>http://%%_SERVER_NAME%%%%_FILEURL%%</link>
          <guid>http://%%_SERVER_NAME%%%%_FILE%%</guid>
          %%IF(_TXT_BAJADA)%%<description>%%_bajada.xml%%</description>%%/IF%%
        </item>
      %%/IF%%
    %%/LOOP%%
  </channel>
</rss>

Para definir el número de artículos a desplegar por portada taxonómica, editar el archivo de configuración /[nombre del prontus]/cpan/prontus_[nombre del prontus]-tax.cfg, y definir este valor en el parámetro TAXPORT_ARTXPAG. Puede encontrarse más información sobre las variables disponibles en el artículo correspondiente.

Generación de portadas

La generación de portadas taxonómicas se produce cada vez que se crea o actualiza la taxonomía de un artículo. Para cada tripleta taxonómica se gatilla un proceso que genera las portadas correspondientes, procesando primero los niveles más generales y luego avanzando hasta los más específicos, en el siguiente orden:

  1. FID,
  2. FID/seccion,
  3. FID/seccion/tema,
  4. FID/seccion/tema/subtema

Este proceso se ejecuta en paralelo, generando la primera página de cada portada taxonómica primero. Puedes evitar que se regeneren las taxonomías deshabilitando la opción REGENERACION_TAX_TAG en Administrar → Configuración → Configuración Global si no quieres que Prontus genere en ningún caso portadas taxonómicas, ya sea temporal o permanentemente. Por ejemplo, si estás haciendo ediciones a muchos artículos, tal vez prefieras deshabilitar la opción REGENERACION_TAX_TAG mientras trabajas, y rehabilitarla y regenerar todo al terminar de trabajar.

Otro tema relacionado es que por motivos de seguridad, al usar un cache Varnish en el frontend de un sitio Prontus no se hace PURGE de todas las portadas taxonómicas, ya que puede involucrar mucha carga para el servidor. Se ejecuta la acción PURGE en el cache Varnish solamente para la primera página de todos los niveles taxonómicos. Es posible ver más información sobre el tema en el artículo sobre Variables generales, en las voces VARNISH_SERVER_NAME y VARNISH_GLOBAL_PURGE.

Prontus implementa chequeos para controlar la performance del sistema con la librería lib_maxrunning.pm. En particular, se controla que no haya más de una instancia del proceso prontus_regenera_port. A su vez, el proceso prontus_regenera_port controla que no se instancien más de 15 procesos hijos prontus_cron_taxport, si se da esa eventualidad, frena con un sleep por 2 segundos hasta que los procesos hijos sean menos de 15 nuevamente. Si se debe invocar sleep por más de 5 ciclos, se gatilla un proceso prontus_cron_taxport de todos modos, y el conteo vuelve a comenzar.

Si tienes acceso a la interfaz de línea de comandos del ambiente donde está instalado Prontus, puedes usar el script prontus_regenera_taxport.cgi, que permite regenerar la lista de artículos relacionados. Su uso es

<path a perl> <path al webroot>/cgi-cpn/prontus_regenera_taxport.cgi [nombre del prontus] [fid_a_actualizar]

El parámetro fid_a_actualizar es opcional: es el nombre de un FID específico. Por ejemplo:

/usr/bin/perl /var/www/site.cl/cgi-cpn/prontus_regenera_taxport.cgi mi_prontus fid_noticia
Múltiples loops

Aunque lo común es que una plantilla de taxonomía contenga una sola marca LOOP, e itere una vez por cada artículo publicado con esa taxonomía, es posible, si lo necesitas, usar múltiples loops. En este caso, tu plantilla se verá así:

%%LOOP%%
  <div class="titular">
   <a href="%%_FILE%%">%%_TXT_TITULAR%%</a>
  </div>
%%/LOOP%%
%%LOOP%%
  <div class="titular titular-alternativo">
   <a href="%%_FILE%%">%%_TXT_TITULAR%%</a>
   %%_txt_bajada%%
  </div>
%%/LOOP%%
Marcas de sección, tema y subtema

Prontus te permite usar las marcas _tax_seccion, _tax_tema, _tax_subtema, _tax_nom_seccion, _tax_nom_tema, _tax_nom_subtema para las portadas taxonómicas, fuera de las marcas LOOP. Estas marcas reemplazan a otras marcas reservadas similares, como _seccion y _nom_seccion. Puedes usar las marcas IF con estas nuevas marcas reservadas. Además, puedes usar las marcas %%_vista%% y %%_nropagina%% para implementar lógica en la plantilla según la vista particular y el número de página.

Paginado

Es posible configurar dos tipos distintos de paginación, el modo estándar, que muestra el total de páginas dentro de la taxonomía; y otro mostrando la página actual, un número configurable de páginas hacia adelante y hacia atrás, y la primera y última páginas. Por ejemplo, al visitar la página 8 de una portada taxonómica, un usuario vería la siguiente lista de enlaces:

1 ... 5 6 7 (8) 9 10 11 ... 20

El tipo de paginación y -en caso de elegir el modo breve- el número de páginas a mostrar son configurables desde la sección Administrar → Configuración → Categorías del panel de administración de Prontus. Las variables relevantes se describen en el artículo sobre Configuración de Categorías, y son TAXPORT_TIPO_PAGINACION y TAXPORT_PAGCORTA_MAXPAGS. Al modificar esta configuración sobre un Prontus ya activo deberás regenerar las portadas taxonómicas. Para esto puedes visitar la página Administrar → Mantenimiento → Regeneración del panel de administración de Prontus. Este es un proceso relativamente oneroso.

Paginación Custom

Es posible cambiar el formato de la paginación, configurable dentro de la misma plantilla mediante las siguientes variables:

  • HTML de cada número de página:
    <!-- CONFIG HTML_NRO_PAG = <a class="pag_number" href="%%lnk%%">%%cnro_pag%%</a> -->
  • HTML de la página actual:
    <!--CONFIG HTML_PAG_ACTUAL = <span class="current_pag">%%cnro_pag%%</span> -->
  • Separador que aparece al utilizar páginación tipo Google:
    <!-- CONFIG HTML_SEPARADOR = <span>...</span> -->
  • Mensaje a mostrar si no hay artículos en esta taxonomía
    <!-- MSG no_results = No se encontraron resultados. -->
Artículos Relacionados

Esta funcionalidad está relacionada con las taxonomías, y permite mostrar artículos relacionados a un artículo específico, ya sea seleccionados manualmente o por pertenecer a una misma taxonomía específica. La plantilla para asociar artículos relacionados contiene sólo el trozo de código que se incrustará en el artículo (parecido a como trabajan las macros). Su estructura es:

<div class="adjuntos">
  %%LOOP%% 
    <p><a href="%%_FILE%%">%%_TITULAR%%</a></p>
  %%/LOOP%%
</div>
%%_VERMAS%%
  <div class="adjuntos">
    <a href="/%%_PRONTUS_ID%%/site/tax/port/all/taxport_%%_SECCION1%%_%%_TEMA1%%_%%_SUBTEMA1%%_1.html"> » ver más</a>
  </div>
%%/_VERMAS%%

La ubicación de la plantilla es /[nombre del prontus]/plantillas/cache/taxonomia/pags/ y por convención se debe guardar con el nombre art_relac.html, pero es posible tener múltiples plantillas con distintos nombres.

Al guardar el artículo, Prontus procesará los artículos relacionados y generará un documento final en el directorio de artículos: /[nombre del prontus]/site/artic/[fecha de creación]/pags/[timestamp]_art_relac.html.

Para definir el número de artículos relacionados a desplegar en este sector, editar el archivo de configuración prontus_[nombre del prontus]-tax.cfg, y definir este valor en el parámetro NUM_RELAC_DEFAULT.

Tambien es posible definir el límite de artículos por plantilla, incluyendo la siguiente marca de configuración:

%%_NUM_RELAC=<limite>%%

Donde <limite> es el número máximo de artículos que se incluirán en la plantilla de relacionados, permitiendo como máximo absoluto 50 artículos.

También puedes filtrar contenido como en las plantillas de lista, mediante marcas Prontus reservadas, para excluir portadas específicas, o áreas de esa portada, y para especificar tipos de FID a mostrar:

%%_EXCLUDE_PORT_AREA=1,2%%
%%_EXCLUDE_PORT=inicio.xml%%
%%_FIDS=fid_galeria,fid_audio%%

En el ejemplo, estarías excluyendo de esa portada taxonómica los artículos de tipo galería o audio, y los que se encuentren en la portada inicio en las áreas 1 ó 2. Tal como en las plantillas de lista, la marca reservada _EXCLUDE_PORT_AREA permite especificar más de un área de una portada. Nota: debes hacer referencia al archivo XML de la portada, en este caso inicio.xml, y no al HTML. Puedes aprender más sobre los archivos XML de portada en el artículo Plantillas de portada.

Si tienes acceso a la interfaz de línea de comandos del ambiente donde está instalado Prontus, puedes usar el script prontus_regenera_relac.cgi, que permite regenerar la lista de artículos relacionados. Su uso es <path a perl> <path al webroot>/cgi-cpn/prontus_regenera_relac.cgi [nombre del prontus].

Multivistas

Si están habilitadas las multivistas, la estructura de directorios es un poco diferente a la de artículos y portadas normales. Si habilitaste una vista llamada "movil", deberás ubicar las plantillas de esa vista en los subdirectorios /[nombre del prontus]/plantillas/tax/port/all-movil/, /[nombre del prontus]/plantillas/tax/port/fid_noticia-movil/, etc., no en /[nombre del prontus]/plantillas/tax/port-movil/all/ como podrías suponer.

Las plantillas para multivistas de artículos relacionados deben ubicarse en /[nombre del prontus]/plantillas/cache/taxonomia/pags-[vista]/. En nuestro ejemplo, deberías crear un directorio /[nombre del prontus]/plantillas/cache/taxonomia/pags-movil/.

Plantillas paralelas

No puedes asignar específicamente plantillas paralelas, pero puedes poner múltiples plantillas en los directorios mencionados antes, y Prontus generará portadas taxonómicas paginadas para cada una de ellas. Ten cuidado, ¡esto puede implicar la creación de muchos archivos! Por ejemplo, si ubicas las plantillas taxport.html y rss_tax.xml en el directorio /[nombre del prontus]/plantillas/tax/port/all/, Prontus generará para cada taxonomía dos series de archivos: taxport_1___1.html, taxport_1___2.html, taxport_2___1.html, taxport_2___2.html, ..., rss_tax_1___1.xml, rss_tax_1___2.xml, rss_tax_2___1.xml, rss_tax_2___2.xml, ... en /[nombre del prontus]/site/tax/port/all/.

Taxonomías filtradas por tipos de artículo

Prontus te permite crear portadas taxonómicas filtradas por maś de un tipo de artículo, y a la vez por fecha de publicación en las taxport. Para implementar esta funcionalidad, debes crear las plantillas de portada taxonómica en un directorio de plantilla con un nombre especial:

  1. Crea un directorio en plantillas de taxport /plantillas/tax/port/ que comience con el prefijo fil_, por ejemplo:
    /[nombre del prontus]/plantillas/tax/port/fil_ejemplo/
  2. En este directorio, crea un archivo llamado filtros.cfg, donde podrás las siguientes variables:
    TAXPORT_FIDS = 'fid_foto,fid_formulario'
    TAXPORT_PLANTILLAS = 'taxport.html'
    TAXPORT_FECHA_DESDE = '20150602'
  • TAXPORT_FIDS corresponde a los tipos de FID a considerar en el filtro, separados por comas.
  • TAXPORT_PLANTILLAS hace referencia a una o más plantillas que se usarán para las salidas. Por ejemplo, si en el directorio 'all' creaste 4 plantillas distintas, solo se usará la indicada en la configuración, minimizando el número de archivos creados. Si incluyes más de una plantilla, debes separarlas con comas.
  • TAXPORT_FECHA_DESDE especifica el margen inferior para la fecha de publicación de los artículos, el formato debe ser AAAAMMDD. Por ejemplo, 20180514

Cabe destacar que si el archivo de configuración no existe, el comportamiento será igual al de usar la plantilla 'all'. Por lo demás, el uso de las plantillas y la estructura de archivos es igual al resto de las taxport.

Artículos Relacionados