Definición de plantillas de categorías

Definición de una plantilla de categorías de documentos en BauDocWriter



Como vimos en la página de definición de categorías , antes de poder utilizar este tipo de documentos, debemos definir la plantilla para las categorías.

Este tipo de plantillas es similar a la utilizada en la definición de documentos aunque ligeramente más compleja.

Para crear una plantilla vamos al nodo Application /Templates y creamos una nueva plantilla que vamos a llamar Category (por supuesto podríamos colocarlo en otro directorio o seleccionar otro nombre):

Cuadro de diálogo: Nuevo artículo

En el contenido de la plantilla vamos a escribir este código:

	
%article 
	%header 
		%h1 $Title
	%div 
		$Content
	

En el que simplemente le indicamos que tenemos un artículo ( article ), en el que la cabecera va a ser el título que hemos escrito en el archivo (la variable $Title) y el contenido en un div será el texto del documento (la variable $Content).

Una vez grabado abrimos la ventana de proyecto y seleccionamos esta plantilla en el control Cabecera categorías :

Selección de plantilla de cabecera

Aún no hemos acabado. Por ahora hemos definido cómo se va a presentar la cabecera de nuestras páginas de índice, pero también debemos indicar en otra plantilla, cómo se van a presentar los diferentes elementos del índice, es decir, tenemos que preparar una plantilla para los distintos artículos.

Para ello, creamos una nueva plantilla en el nodo Application /Templates pero esta vez la llamamos CategoryItems y como contenido escribimos lo siguiente:

	
<% for $intIndex = 1 to 100 %>
	<% if $Url[$intIndex] != "null" %>
		%article
			%header
					%h2 #a { href = $Url[$intIndex] } $Title[$intIndex] #
			%div
				$Content[$intIndex]
				%a { href= $Url[$intIndex] } Leer más ...
	

Como podemos ver, esta plantilla ya es algo más compleja. Estamos haciendo un bucle para cien elementos y por cada uno de ellos escribimos una etiqueta de artículo ( article ) con una cabecera con un hipervínculo que es el título de la página (variable $Title [ $intIndex]) y un div con el contenido de la página (variable $Content [ $intIndex]) con un hipervínculo con el título Leer más y que nos dirige al contenido de la variable $Url [ $intIndex].

Por último, debemos asociar esta plantilla al proyecto en el cuadro de texto Categoría :

Selección de plantilla de elementos de categoría

Ya estamos casi a punto, si ahora compiláramos tendríamos un pequeño problema: en el navegador se nos abre la página index.htm pero no tenemos forma de llegar a nuestra nueva página Manual.htm que creamos en el paso anterior .

Normalmente este tipo de vínculos lo haríamos con un menú o algo similar pero dado que aún no hemos explicado el funcionamiento de las secciones , simplemente vamos a añadir un hipervínculo a nuestra página de índice. Para ello, abrimos el archivo index y como contenido escribimos el siguiente:

	
	%p Esta es la página de índice del ejemplo.
		
	%p Ver el #a { href = "Manual" } Manual #
	

Ahora ya podemos compilar el proyecto. Al abrir el explorador veremos nuestra página de índice:

Indice con el hipervínculo a la categoría Manual

y al pulsar sobre el vínculo Manual iremos a la página del manual:

Categoría manual sin contenido

¡Vaya ! ¿No ve nada raro ? Aparece correctamente la cabecera de la página Manual pero en el paso anterior creamos los archivos Página 1 y Página 2 que no aparecen por ninguna parte.

El error está en nuestra plantilla principal ( Main.tpt ): hemos indicado que se muestre el contenido de la página en la variable $Content pero en este caso el contenido es el valor de la página Manual no de las páginas hija. Por tanto, debemos indicarle a la plantilla que en el caso de los índices o similares muestre contenido adicional.

Para corregirlo, abrimos nuestra plantilla Main.tpt y al final del contenido le añadimos el siguiente código:

	
<%if $AdditionalContent != "" && $AdditionalContent != "null" %>
	%div
		$AdditionalContent
	

Es decir, le estamos indicando que en caso de existir un valor en la variable $AdditionalContent lo escriba dentro de un div . Por si no lo han adivinado, el contenido de la variable $AdditionalContent es precisamente el contenido del índice.

Por completar el ejemplo, el contenido final de la plantilla Main.tpt es éste:

	
%html {lang="es"}
	%head
		%title $FullTitle
		%meta { content = "text/html; charset=utf-8" http-equiv="Content-Type" }
		%meta { name = "viewport" content="width=device-width, initial-scale=1.0" }
		%meta { name = "revisit-after" content = "2 days"}
		%meta { name = "robots" content = "index,follow"}
		%meta { name = "publisher" content = $Author }
		%meta { name = "copyright" content = "Creative Commons"}
		%meta { name = "author" content = $Author }
		%meta { name = "distribution" content ="global"}
		%meta { name = "description" content = $Description }
		%meta { name = "keywords" content = $Keywords }
		%meta { name = "Content-Type" content = "Content-Type: text/html; charset=utf-8" }
		%meta { name = "generator" content = "BauDocWriter" }
		%meta { name="lang" content="es" }
		%meta { name="siteinfo" content="robots.txt" }
	%body
		$Content
		
		<%if $AdditionalContent != "" && $AdditionalContent != "null" %>
			%div
				$AdditionalContent
	

Si compilamos, veremos que nuestra página Manual ya aparece con el contenido correcto:

Categoría manual con el contenido del índice

y si pulsamos sobre los vínculos de la página 1 nos dirige a la página correcta:

Contenido de Página 1

Continuando con nuestro manual, vamos a hacer una pequeña pausa antes de pasar a la definición de secciones para ver con mayor detalle el contenido de los documentos y algunos trucos a la hora de utilizar BauDocWriter .



Páginas relacionadas