Foros del Web » Programando para Internet » ASP Clásico »

Include file cuando el directorio es variable, como?

Estas en el tema de Include file cuando el directorio es variable, como? en el foro de ASP Clásico en Foros del Web. hola quiero incluir un archivo que se encuentra en un directorio que es variable, el código que tengo no me funciona necesito ayuda porfa: <% ...
  #1 (permalink)  
Antiguo 19/04/2005, 11:29
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años, 5 meses
Puntos: 8
Include file cuando el directorio es variable, como?

hola quiero incluir un archivo que se encuentra en un directorio que es variable,
el código que tengo no me funciona necesito ayuda porfa:

<%
Dim template2
template2="skins/default"
%>

<!--#include file="<%=template2%>/header.asp"-->


este es el error:

Tipo de error:
Páginas Active Server, ASP 0126 (0x80004005)
No se encontró el archivo de inclusión "<%=template2%>/header.asp".
/modular/index.asp, line 13

es decir no me agarra la variable template2

gracias.

salu2
  #2 (permalink)  
Antiguo 19/04/2005, 11:42
 
Fecha de Ingreso: junio-2002
Mensajes: 212
Antigüedad: 22 años, 10 meses
Puntos: 0
La verdad nunca lo probe, pero si hace un response write de include tampoco pasa nada?
Se que suena como una huevada pero a veces las cosas locas funcionan :D
__________________
Simuladores y Examenes Cisco, Herramientas de Red Online - Tecnologia y Redes
  #3 (permalink)  
Antiguo 19/04/2005, 11:45
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
creo que no puedes meter una variable ahí, podrías poner un case con todas las posibilidades que tengas

<%
Dim template2
template2=1
select case template2
case 1
%>
<!--#include file="skins/default/header.asp"-->
<%
case 2
%>
<!--#include file="skins/otro/header.asp"-->
<%
case n
%>
<!--#include file="skins/otromas/header.asp"-->
<%
end select
%>
  #4 (permalink)  
Antiguo 19/04/2005, 11:47
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
No, porque la directiva include se ejecuta antes que el código ASP. Por eso toma a <%=template2%> como un literal en vez de una variable ASP.

Deberías usar server.execute:

<%
Dim template2
template2="skins/default"

Server.Execute(template2 & "/header.asp")
%>
__________________
...___...
  #5 (permalink)  
Antiguo 19/04/2005, 11:54
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
Cita:
Iniciado por Al Zuwaga
No, porque la directiva include se ejecuta antes que el código ASP.
Tas seguro? si le pongo un if o un case a mi me anda bien
  #6 (permalink)  
Antiguo 19/04/2005, 12:11
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
y por que no usan funciones??????

no entioendo la idea de andar usando includes dinamicos.


cual es la idea?
  #7 (permalink)  
Antiguo 19/04/2005, 13:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años, 5 meses
Puntos: 8
Cita:
Iniciado por Al Zuwaga
No, porque la directiva include se ejecuta antes que el código ASP. Por eso toma a <%=template2%> como un literal en vez de una variable ASP.

Deberías usar server.execute:

<%
Dim template2
template2="skins/default"

Server.Execute(template2 & "/header.asp")
%>
gracias funciona perfecto, la idea es hacer un sistema de temple, donde cada diseño o plantilla skins se encuentra en diferentes directorios y este lo lee de la base de datos.
  #8 (permalink)  
Antiguo 19/04/2005, 13:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Cita:
Iniciado por pablinweb
Tas seguro? si le pongo un if o un case a mi me anda bien

Eso si funciona, pero no es verdaderamente dinámico nada más es condicionar que include va a ejecutar, lo mismo que pasa en cualquier case...pero es cierto, funciona.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 19/04/2005, 13:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Cita:
Iniciado por Muzztein
y por que no usan funciones??????

no entioendo la idea de andar usando includes dinamicos.


cual es la idea?
También es verdad, a mi me tocó hacer esto alguna vez para un generador de código dónde llegaba un proceso en el cuál tenías que decidir que código incluir, entonces lo que hice fue guardar el nombre del archivo en una tabla y a partir de ahí ejecutaba lo que llegara por un form, era un poco más complejo de lo que estoy planteando, pero algo así, sin duda tienes razón, con código encapsulado te evitas de todo este show...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 19/04/2005, 13:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por pablinweb
Tas seguro? si le pongo un if o un case a mi me anda bien
Pablinweb, cuando dije "No, porque la directiva include se ejecuta..." debería haber dicho "zsamer, en respuesta a tu duda, la respuesta sería que no se puede porque la directiva include se ejecuta..." ;)

Tu solución, Pablinweb, "emula" a un include dinámico. Pero igualmente se incluye el contenido de todos los includes. Luego el condicional se encargará de... condicionar... la ejecusión de los contenidos recién incluidos.

Favor de leer ésto: How do I dynamically include files?


Muzztein, no tiene nada que ver la recomendación de usar funciones para esto (por lo menos, no le veo el sentido). Una cosa es una cosa y otra cosa es otra cosa
__________________
...___...
  #11 (permalink)  
Antiguo 19/04/2005, 15:10
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 9 meses
Puntos: 0
Al Zuwaga, cuando tené razón tené razón, lo que hace es incluirlos igual, solo que ejecuta el que esté dentro de la condición. Disculpe maistro
  #12 (permalink)  
Antiguo 19/04/2005, 15:12
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años, 5 meses
Puntos: 8
ahora tengo otro problema, en el header no toma variables de un archivo(config.asp) incluido en el index.asp

eje.

index.asp :
<!--#include file="includes/config.asp"-->
<html>
<%
Server.Execute(template & "/header.asp")
%>
...

en header.asp:
Response.Write(sitio) 'sitio es una variable que biene de config.asp (incluido en el index.asp)


no me agarra las variables, y es un gran rpblema ya que tendria que incluirlo en todos los archivos que haga un
Server.Execute(template & "/nombrearchivo.asp")

ej:
Server.Execute(template & "/header.asp")
Server.Execute(template & "/right.asp")
Server.Execute(template & "/left.asp")
Server.Execute(template & "/footer.asp")
etc...

y la idea es incluirlo una sola vez en el index.asp ya que es un sistema modular
  #13 (permalink)  
Antiguo 19/04/2005, 15:50
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
volvemos a la misma, el execute, ejecuta un asp, como si fuera parte del mismo asp, pero supongo que debe ser la primera prioridad, por eso es que no encuentra los valores, me parece que tendrás que hacer tu include en cada archivo que ejecutes mediante execute.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 19/04/2005, 15:56
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por u_goldman
volvemos a la misma, el execute, ejecuta un asp, como si fuera parte del mismo asp, pero supongo que debe ser la primera prioridad, por eso es que no encuentra los valores, me parece que tendrás que hacer tu include en cada archivo que ejecutes mediante execute.

Salu2,
Si

(jajaja, iba a escribir sólo eso, pero me van a decir que sólo me interesa sumar mensajes xD así que a continuación escribo algo más)

Combiene hacer "includes anidados". Esto es, incluir en todas las páginas un archivo llamado por ejemplo includes_globales.asp y dentro de éste hacer todos los includes necesarios. Así, si ya tenés hecha una aplicación enormeeee y te vez en la necesidad de incluir otro archivo en todos los archivos, sólo lo incluís en el includes_globales.asp y listo.

Ahora no me acuerdo para qué lo usé específicamente, pero hace poco tuve un caso similar y lo resolví de esa manera.
__________________
...___...
  #15 (permalink)  
Antiguo 19/04/2005, 17:05
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años, 5 meses
Puntos: 8
alguna otra idea?
  #16 (permalink)  
Antiguo 19/04/2005, 21:20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años, 5 meses
Puntos: 8
ninguna idea mas?
  #17 (permalink)  
Antiguo 20/04/2005, 10:41
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Pues no, al menos de mi parte.

Cita:
Ahora no me acuerdo para qué lo usé específicamente, pero hace poco tuve un caso similar y lo resolví de esa manera.
Ya me acordé, pasa que no lo terminé. Fue cuando decidí hacer una aplicación multilenguaje. En archivos llamados len_es.asp, len_en.asp, len_fr.asp, len_etc.asp existen constantes con los textos. Ejemplo:

len_es.asp:
CONST L_BV = "Bienvenido!"

len_en.asp:
CONST L_BV = "Welcome!"


Estos includes con idiomas no se incluyen directamente en el archivo que va finalmente a hacer un response.write de la constante sino en un archivo llamado lenguaje.asp (pero sólo se incluye el del idioma elejido, español para el ejemplo)

lenguage.asp
<!--#include file="idiomas/len_es.asp"-->


Luego, lenguaje.asp será incluido en el archivo llamado includes_globales.asp. Ej:

includes_globales.asp:
<!--#include file="lenguaje.asp"-->
<!--#include file="config.asp"-->
<!--#include file="otro_archivo.asp"-->

finalmente, en los "archivos navegables de la aplicación", se incluye el archivo includes_globales.asp:

default.asp:
<!--#include file="includes_globales.asp"-->
<HTML>
...
</HTML>


?Para qué todo ésto? Para, de manera fácil, seleccionar otro idioma.
Mediante el uso de FSO, leo la carpeta "idiomas" y relleno dinámicamente un desplegable con el nombre de los archivos (len_es.asp, len_fr.asp, etc). Luego, también con FSO, reescribo el archivo llamado lenguage.asp para cambiar el idioma. Por ejemplo si antes tenía...

<!--#include file="idiomas/len_es.asp"-->

... y luego selecciono "ruso", va a quedar...

<!--#include file="idiomas/len_ru.asp"-->


... y listo, todo el sitio cambió de idioma con 2 clicks. Además, me parece bastante escalable "idiomáticamente hablando" puesto que no hay más que agarrar uno de los archivos de idioma y traducirlo al nuevo idioma.

Me fuí de tema mal jajaja, pero espero le sirva a alguien
Saludos
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:47.