Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Migración de "index.htm" e "index.html" a ZOPE

Última Actualización: 17 de Enero de 2003 - Viernes

Cuando se tiene un web en un servidor HTTP normal (léase, Apache o similar), los ficheros de índice, típicamente, se llaman "index.htm" o "index.html". En cambio, en ZOPE el índice se llama "index_html", y es el objeto que se invoca cuando la URL no señala a un fichero, sino a un directorio.

En teoría, el pasar un web normal a ZOPE es trivial, ya que bastaría con renombrar esos "index.htm" o "index.html" a "index_html". Pero las cosas no son tan simples, ya que es habitual que dentro del web existan enlaces a los ficheros originales, por lo que habría que revisarse todas las páginas. Peor aún, los posibles enlaces externos a nuestro web (buscadores, otras páginas, "bookmarks", etc.) dejarían de funcionar, si apuntaban a esos ficheros de índice.

Una solución más inteligente sería aprovechar las capacidades de ZOPE. Se puede crear un objeto "index_html" en el directorio raíz de nuestro web, que invoque, a su vez, al "index.htm" o index.html" originales. De esa forma todos los enlaces siguen funcionando, no hay que modificar ninguna página del web primitivo, y la migración a ZOPE sería simple y rápida.

Basta con poner un "index_html" exclusivamente en el directorio raíz, no en todos y cada uno de los subdirectorios, gracias a los mecanismos de adquisición nativos de ZOPE. Los subdirectorios adquirirán ese objeto de forma automática.

Probé tres opciones. Las dos primeras no funcionan correctamente. La tercera opción cumple su tarea a la perfección. El problema, en todos los casos, es la gestión del punto (".") en medio del nombre del fichero al que queremos hacer referencia.

  1. Documento DTML, opción "a":

    Nuestro documento "index_html" consta de una única línea:

    <dtml-var "index.htm">
    

    Esta opción no funciona, porque interpreta que el punto (".") intermedio señala un método concreto dentro de ese objeto.

  2. Documento DTML, opción "b":

    Nuestro documento "index_html" consta de una única línea:

    <dtml-var index.htm>
    

    Esta opción parece funcionar a la perfección, pero probándola a fondo se observa que en los subdirectorios el fichero de índice que se muestra es el del directorio raíz, no el del subdirectorio que estamos solicitando. Es decir, el punto (".") intermedio, en el nombre, nos rompe el mecanismo de búsqueda en contexto de ZOPE, encontrando la página en el contenedor del DTML (el directorio raíz).

    Habría que incluir este "index_html" en todos los subdirectorios, lo que me resulta complejo de desplegar y estéticamente repudiable, si existen soluciones mejores.

  3. Script Python:

    Dado que el problema de las dos tentativas anteriores es la interferencia del punto intermedio (".") con los mecanismos de adquisición y búsqueda de ZOPE, se me ocurrió utilizar un script en lenguaje Python, donde los mecanismos de adquisición fuesen explícitos.

    Nuestro documento "index_html" consta de una única línea:

    return context["index.htm"]()
    

    Este script toma el objeto "index.htm" del contexto actual (directorio actual pedido en la URL), y devuelve su representación.

    Este esquema funciona a la perfección.



Python Zope ©2003 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS