Interfaces y plantillas


Estructura de archivos

La estructura de la sede electrónica se sustenta en un modelo de plantillas que aprovecha la versatilidad del motor de plantillas Thymeleaf .

En este contexto, las plantillas pueden entenderse como archivos o estructuras predefinidas que actúan como moldes para la presentación de información en un sitio web. Estas plantillas proporcionan un marco organizativo y visual coherente, permitiendo una presentación uniforme de contenidos en todas las páginas del sitio.

Gracias al uso de Thymeleaf, las plantillas pueden incluir elementos dinámicos que se adaptan según el contexto de la aplicación web, lo que facilita la personalización y la generación dinámica de contenido

Organización

La estructura basica de un portal o servicio consiste únicamente en 2 archivos.

  1. index.xml: Página indice del portal donde se colocará la propia información del portal / servicio
  2. _template.xml: plantilla que se comparte entre todas las páginas que están ubicadas en la misma carpeta
	
Nombre portal/servicio
|-- index.xml
`-- _template.xml

Estructura base

Por norma general, se buscará crecer los portales horizontalmente, toda la información se basará en páginas al mismo nivel de la página índice

Según la naturaleza del tipo de contenido que generemos, la estructura básica puede variar. Para un portal, en general, la estructura base es suficiente. Para un servicio, dependerá lo que el servicio ofrezca.

Un servicio puede contar vista de listado, vista de detalle, formulario, administrador, etc...

    
/servicio/arte-publico
|-- index.xml
|-- detalle.xml
|-- formulario.xml
`-- _template.xml

Ejemplo servicio arte público

Inclusión y herencia

Thymeleaf nos da la posibilidad de incluir fragmentos y plantillas dentro de otras, lo que nos permite evitar la duplicidad de contenidos y fomentar la reutilización de código.

A su vez, nos permite aprovechar la herencia de propiedades definidas en las directivas th:with

Información

Este concepto tomará mucho peso sobre la estructura actual de la sede electrónica. Los componentes hacen bastante uso del mismo y la configuración de templates se aprovechan de esto para evitar redundancia.

Se explicará más en sus respectivas secciones

Ejemplo inclusión y herencia

Templates

La plantilla "_template.xml" es fundamental como la estructura base para la presentación visual en cualquier portal o servicio. Esta plantilla se comparte entre todas las páginas que están ubicadas en la misma carpeta. En resumen, establece el diseño y la estructura básica que se aplicará de manera coherente en todo el sitio web. Aquí es donde se definen elementos clave como estilos, cabecera, menús y pie de página, proporcionando una apariencia uniforme y una navegación consistente en todas las páginas del sitio.

Esqueleto de un _template.xml

    
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:sede="http://www.zaragoza.es" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="cssjs">
    <!-- CSS -->
</th:block>

<body>
    <th:block th:fragment="header">
        <!-- Cabecera -->
    </th:block>
    <th:block th:fragment="menu">
        <!-- Menús-->
    </th:block>
    <!--/* Aquí se incluirán los contenidos de las páginas */-->
    <th:block th:fragment="footer">
       <!-- Footer, scripts, noscript-->
    </th:block>
</body>

</html>

Arquetipo

Esta es la estructura principal de los portales y servicios. Esta contiene los elementos comúnes que se compartirán entre todas las plantillas

    
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:sede="http://www.zaragoza.es" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="cssjs">
    <th:block th:include="fragmentos/cssjs4" />
</th:block>

<body>
    <th:block th:fragment="header">
        <sede:component fragment="/fragmentos/componentes/v2/cabecera" login="true"></sede:component>
    </th:block>
    <th:block th:fragment="menu">
        <sede:component fragment="/fragmentos/componentes/v2/to-top-btn"></sede:component>
    </th:block>
    <th:block th:fragment="footer">
       <sede:component fragment="/fragmentos/componentes/v2/footer" json="/cont/vistas/fragmentos/redes-sociales.json"></sede:component>
       <th:block th:include="fragmentos/js_new" />
    </th:block>
</body>

</html>

/cont/vistas/portal/_template.xml

Herencia

Para evitar la reduncia, fomentar la reutilización de fragmentos y facilitar futuras modificaciones en la estructura general de la sede electrónica utilizaremos la inclusión de fragmentos . De esta forma todos los componentes base de un portal serán compartidos en lo largo del árbol de carpetas y un cambio modificará todos los elementos hijo de la estructura.

    
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:sede="http://www.zaragoza.es" xmlns:th="http://www.thymeleaf.org" estilo="ayto">
<th:block th:fragment="cssjs">
    <th:block th:include="/portal/_template :: cssjs" />
</th:block>

<body>
    <th:block th:fragment="header">
        <th:block th:include="/portal/_template :: header" />
    </th:block>
    <th:block th:fragment="menu">
        <th:block th:include="/portal/_template :: menu" />
    </th:block>
    <th:block th:fragment="footer">
        <th:block th:include="/portal/_template :: footer" />
    </th:block>
</body>

</html>

_template.xml de un portal


Secciones

Base

Cabecera
Mapa web
Miga de pan
Pie de página
Cabecera contextual
Menú de portales
Cabecera de servicios

Estandarizadas

Se han desarrollado una serie de "secciones" estandarizadas para lograr una homogenización en los diseños de los diferentes portales y servicios.

Noticias
Agenda - Calendario
Publicaciones
Avisos - Destacados
Equipamientos
Tramites y servicios
Servicios destacados
Contenido extenso
Otras secciones

Páginas índice

Con el rediseño de la sede electrónica se busca que todas las páginas indice de cada portal sean homogéneas tanto en estilo como en funcionalidad.

Esto quiere decir que, además de mantener una estética similar, cumplirán con el mismo propósito en todos los casos. Permitir a la ciudadanía entender de que trata el portal y cuales son los servicios asociados de un solo vistazo.

Se buscará exponer de forma clara los servicios disponibles para ese portal ofreciendo un acceso a los servicios asociados y sus respectivos buscadores, preferentemente utilizando alguna de las secciones estandarizadas

Para facilitar la exposición de servicios de un portal se desarrolló el componente portal/index el cual brinda a partir de una configuración basada en el standard JSON, la posibildiad de exponer los servicios utilizando las secciones estandarizadas y configurar su orden dentro del portal.

Ejemplos:

Servicios

En su forma mas básica, el servicio deberá ofrecer una vista de listado y una vista de detalle. A partir de esa instancia, la complejidad del servicio la brindará la naturaleza del mismo

Ejemplos: