Quebrandome el mate con este tema de los includes dinámicos llegué a una solución bastante rebuscada pero que funciona bien, el tema es que quisiera conocer el tema de los expertos en cuanto a la carga que pueda significar al servidor.
El problema es cuando se quiere incluir un archivo cuyo nombre o ubicación viene desde una BD o una variable, como los SSI no permiten ejecutar codigo no es posible incluirlos. La solución que encontré es mediante FSO copiar el archivo a una ubicación específica del servidor, por ejemplo al archivo "tmp/tmp.asp" en la raiz del sitio. Luego lo que hago es crear el include llamando siempre a este archivo tmp.asp y ya puedo usar el codigo dinámico.
El cuento es que como los SSI se ejecutan antes del ASP, entonces es necesario crear un archivo puente que copie el archivo a ejecutar y luego redireccione a la página en donde se utilizará. En forma práctica seria:
- archivo a incluir: noticias.asp
- archivo puente: puente.asp
- archivo en donde se ejecuta: index.asp
Entonces:
Llamamos a puente entregandole un codigo mediante la url, quedaria algo asi como:
puente.asp?modulo=noticias
Puente.asp
Código:
y en index.aspmodulo = request("modulo") select case modulo: case "noticias": archivo = server.mapPath(".") & "/noticias.asp" case else archivo = server.mapPath(".") & "/index.asp" end select Set fs = CreateObject("scripting.FileSystemObject") fs.CopyFile archivo, server.mapPath(".") & "/tmp/tmp.asp" server.execute("index.asp")
Código:
Por favor les pido que, si les parece bien, se den el tiempo de analizar la solución y darme su opinión al respecto, si es muy pesado estar a cada rato copiando un archivo para el server, si seria muy lento tanto direccionamiento interno, etc.<!--#include file="tmp/tmp.asp"--> ' todo el resto del proceso
Muchas gracias desde ya, esto funciona bien pero quisiera su opinión antes de comenzar a utilizarla oficialmente.
Saludos cordiales,
Rodrigo