Publicado el 17 de Julio del 2019
562 visualizaciones desde el 17 de Julio del 2019
346,5 KB
45 paginas
Creado hace 15a (15/07/2009)
Interneterako software eta estrategia
www.codesyntax.com
Zope Page Templates
Aitzol Naberan Burgaña
CodeSyntax
Qué es
● Es una herramienta que ofrece Zope para la
generación de páginas web
● Ayuda a los diseñadores y a los desarrolladores
● Amigable para las herramientas de edición
● Lo que ves es “muy parecido” a lo que obtienes
● El código está fuera de la plantilla (salvo elementos
estructurales)
Cómo funcionan
● Template Attribute Language (TAL)
● Define una serie de atributos
<title tal:content=”here/title”>Page Title</title>
● Los editores no entienden el namespace tal
● Eliminan esa parte
● Los diseñadores pueden trabajar ya que se define
un valor por defecto para el contenido.
Cómo funcionan
● Aqui se demuestra que “lo que ves es 'muy
parecido” a lo que obtienes”
● La parte here/title es dinamica
● Cambiará en tiempo de ejecución
● El contenido de la etiqueta title hace que tengamos
una idea de como aparecerá el contenido
Cómo funcionan
● Tenemos estamentos para:
● Reemplazar etiquetas
● Reemplazar el contenido de una etiqueta
● Elementos de repetición
● Elementos condicionales
● Definición de bloques
● ...
Cómo funcionan
● NO es posible:
● Generar clases o funciones
● Ejecutar flujos de control complejos
● Expresar algoritmos complejos
● Si es necesaria alguna de las caracteristicas
anteriores es el momento de empezar a pensar
en python.
● Esta es una limitación intencionada, para
mantener el código (logica) fuera de las
plantillas.
Hello world!
<html>
<head>
</head>
<body>
<title tal:content=”template/title”>Page Title</title>
<h1 tal:content=”template/title”>
Aqui vamos a insertar el encabezado
</h1>
</body>
</html>
Expresiones simples
● Path explessions
● template/title
● request/URL
● user/getUserName
● Siempre empiezan con un nombre de variable.
● Si la primera variable tiene el valor que
necesitamos terminamos, de lo contrario se
sigue con '/'
● P.e.: template/title: es la propiedad title de template
Expresiones simples
● request y user son variables predefinidas por
Zope.
● Es posible definir nuestras propias variables.
Insertar texto
● tal:replace
● Reemplaza toda la etiqueta
● tal:content
● Reemplaza el contenido de la etiqueta
<html>
<body>
</body>
</html>
<strong tal:replace=”template/title”>Título</strong>
Esto reemplaza el contenido:
<strong tal:content=”template/title”>Título</strong>
<h1>Ejemplo de inserción</h1>
Esto reemplaza la etiqueta 'strong' :
Insertar estructuras
● Tanto tal:content como tal:replace escapan las
entidades html
● Para insertar html necesitamos utilizar la
palabra clave structure
Insertar estructura
<html>
<head>
<title tal:content="template/title">The title</title>
</head>
<body>
<h1 tal:content="template/title">Título de la página</h1>
<p>Con <strong>structure</strong>:
<span tal:replace="structure here/returnHTML">
Contenido de la plantilla</span>
</p>
<p>Sin <strong>structure</strong>:
<span tal:replace="here/returnHTML">
Contenido de la plantilla</span>
</p>
</body>
</html>
Estructura de repetición
● tal:repeat
● Es el equivalente al bloque for de python
● tal:repeat=”variable_de_repeticion elementos”
● Información disponible sobre el número de
repetición
– index : indice de la iteración (cuenta desde 0)
– number : número de la iteración (cuenta desde 1)
– letter : cuenta usando caracteres (desde 'a')
– Letter : cuenta usando caracteres (desde 'A')
Estructura de repetición
● Información disponible sobre caracteristicas de
la repetición
● even: True si la repetición es par
● odd: True si la repetición es impar
● start: True si es la primera repetición
● end: True si es la última repetición
● length: Número total de repeticiones
● Es posible anidar repeticiones
Estructuras de repetición
<html>
<head>
<title>Ejemplo de repetición</title>
</head>
<body>
<h1>Ejemplo de repetición</h1>
<table>
<tr>
<th>Number</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tr tal:repeat="item container/objectValues">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/getId">Id</td>
<td tal:content="item/meta_type">Meta-Type</td>
<td tal:content="item/title">Title</td>
</tr>
</table>
Estructuras condicionales
● tal:condition
● Es el equivalente al bloque if de python
● tal:condition=”expresion”
● Ejecuta el bloque si la condición se cumple
● No existe bloque else
– Se necesita otro bloque condition con la negación de la
condición original
● tal:condition=”not:expresion”
Estructuras condicionales
<html>
<head>
<title>Ejemplo de repetición</title>
</head>
<body>
<h1>Ejemplo de repetición</h1>
<table tal:condition=”container/objectValues”>
<tr>
<th>Number</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tr tal:repeat="item container/objectValues">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/getId">Id</td>
<td tal:content="item/meta_type">Meta-Type</td>
<td tal:content="item/title">Title</td>
</tr>
</table>
Definir variables
● tal:define
● Define una variable que es valida dentro del ambito
de la etiqueta en la que se define
● tal:define=”variable valor_de_la_variable”
<table tal:define=”items container/objectValues”
tal:condition=”items”>
<tr>
<th>Number</th><th>Id</th><th>Meta-Type</th><th>Title</th>
</tr>
<tr tal:repeat="item items">
<td tal:content="repeat/item/number">#</td>
<td tal:content="item/getId">Id</td>
<td><img src=”path.gif” tal:attribures="src item/icon">
<span tal:replace=”item/meta_type”>Meta-Type</span></td>
<td tal:content="item/title">Title</td>
</tr>
</table>
Definir variables
● Para definir una variable global es necesario
utilizar la palabra clave global antes de la
definición de la variable.
...
<table tal:define=”global items container/objectValues”>
...
● Es posible definir más de una variable en la
misma sentencia.
...
<table tal:define=”global items container/objectValues;
container_icon container/icon”>
...
Variables predefinidas
● nothing: Es un valor nulo
● default: No modifica el texto de la etiqueta
● options:
Es
la variable que guarda
los
argumentos basados en palabras clave
(solamente disponible cuando se llama a la
plantilla desde código python)
● attrs: Diccionario de atributos de la etiqueta
actual
● root: La raiz de Zope
Variables predefinidas
● here: El objeto desde el que la plantilla es
llamado (contexto)
● container: El objeto en donde la plantilla esta
guardado.
● modules: Lista de módulos python disponibles.
Modificar atributos
● tal:attributes
● Es posible modificar los valores de los atributos de
las etiquetas
● tal:attributes=”atributo nuevo_valor”
...
<td><img src=”path_a_la_imagen.gif”
Comentarios de: Zope Page Templates (0)
No hay comentarios