Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davisvasconcellos

executar String?

Recommended Posts

Galera, possuo um arquivo template que busca em um BD algumas informações.

em uma delas por exemplo é qual a página que contém o script para uma listagem qualquer.

e neste arquivo template quero dar um include com o arquivo com esta função da lista.

 

gostaria de fazer algo parecido com isto.

=====================================

select arquivo from links

 

Incl_local = "<!-- include file=" & rs("arquivo") & "-->"

 

resonse.write Incl_local

======================================

 

no lugar de aparecer dentro do template:

rs1,rs2,rs3.... (resultado do arquivo lista.asp)

aparece:

<!-- include file=lista.asp-->

 

ja tentei execute,eval...

mas nada.

 

alguem tem alguma idéia para eu concatenar o rs na chamada include e executar?

 

agradeço desde já.

 

Davis

Compartilhar este post


Link para o post
Compartilhar em outros sites

O include não permite esse tipo de interação.

 

Será necessário chamar a página utilizando Server.Execute. Ex. Server.Execute(caminhoFisicoDoArquivo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo. nao posso usaro server.execute pq ele abre uma nova página. :( ai perde o template todo.

 

tipo.

[TEMPLATE]

[Conteudo]

[/Conteudo]

[/TEMPLATE]

 

só que o conteúdo é um arquivo.

dai no bd eu coloco o link para esse template e o arquivo q ele o template vai abrir dentro dele.

 

tem como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem vamo lá,

1 - o include não vai deixar eu fazer essa concatenação os arquivos de inclusão são processados antes que algum codigo na pag seja executado. por isso exibe no include <%=sdasd%>

2 - o server.execute não me adianta pq ele executa uma página nova e não executa a página dentro da atual. ou seja: se fiz uma template e outra conteúdo e mandar server.execute(conteudo.asp) vai carregar só a pag conteudo sem leyout.

3 - não posso por o codigo fonte do conteúdo.asp dentro de um bd pq acontece o mesmo problema do include. tudo q é html é exibido mas qq codigo asp nao funciona.

4 - catei vários sites que fazem template em asp e pelo q entendi + - eles pegam o layout e colocam algumas marcações tipo ##conteudo## depois jogam tudo para uma variável e fazem um replace depois substituindo essas marcações pelos codigos.Parece legal mas nao tenho a menor ideia de como começar uma coisa dessas e tb daria mais trabalho adaptar as pag de conteudo do que fazer uma pagina default para cada área do site.

5 - tive uma idéia meio gambiarra mas pode ser q funcione.

5.1 criar um arquivo com um select case gigante com todas as paginas do site (select xx=lista ; include lista.asp .....)

5.2 inserir o nome do arquivo no bd junto com o link ou o cod do link no bd qq coisa

5.3 no arquivo template fazer os includes do layout e dentro do layout meter o include de teste.

 

assim cada vez q o template for aberto ele testa qual pag deve abrir e faz o include específico.

só vou ter trabalho de a cada link criado ir no arquivo de teste e colocar mais um teste no select case.

 

bem se alguem tiver mais alguma idéia...

 

Abss

 

PS: a dúvida era executar string virou template ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação a iniciar o uso de templates, dê uma olhada nesse tópico recente: link

 

A idéia do select case pode deixar o sistema mais lento, uma vez que todos os includes serão feitos de qualquer forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado, a tua idéia é + - a que eu li nos sistemas de templates q catei na net.

mas nesse caso arquivo do conteúdo é um arquivo asp q traz do bd as info.

 

vê se é isso.

vou ter q montar o template, deixar a marcação da ancora nele e transformar em variável. pegar o arquivo do conteúdo e fazer a mesma coisa.

depois dar um replace na variável do template onde tiver a ancora pela variável q tem o conteúdo.

 

é por ae?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara. olhei o teu código e não entendi como o tabela.asp junta com o template.html no teu exemplo.

 

no meu c aso eu teria lá um template.html e colocaria nele as ancoras ##menu## e ##conteudo## que seriam o arquivo menu.asp(pois tem dependendo do login o menu muda) e o conteúdo que seria o próprio link (listao.asp por ex)

 

é ai q eu me embolei:

<%

'Cria-se o objeto FSO
Set Obj_FSO = Server.CreateObject("Scripting.FileSystemObject")

'Abre-se o arquivo com o template. Use a sua formatação como exemplo e crie o arquivo com o nome "Template.html", substitua os locais onde entrariam as variáveis ASP para algo como #$%SuaVar%$#, depois faremos o tratamento disso.

Set Obj_Template = Obj_FSO.OpenTextFile(Server.MapPath("tabela.asp"), 1)
'Aqui é feita a leitura do conteúdo do arquivo e armazenado em uma variável.

Str_Template = Obj_Template.ReadAll
Obj_Template.Close

Set Obj_Template = Nothing
Set Obj_FSO = Nothing

Str_Email = Request.Form("mail00")
'Aqui acontece a "mágica", a ancora #$%EMAIL%$# será substituída pelo conteúdo da variável Str_Email
Str_Final = Replace(Str_Template,"#$%EMAIL%$#",Str_Email)

%>
<%=Str_Final%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu caso aconselho também o uso de um segundo arquivo com o layout do menu, um arquivo para cada caso sejam completamente distintos. Assim você carregaria o arquivo correspondente numa variável e jogaria na posição de seu template principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz a modificações que você me indicou.

criei 4 arquivos

1 - Layout.htm (com uma tabela e 2 ancoras MENU e CONTEUDO)

2 - menu.asp (com response.write "MENU" )

3 - conteudo.asp (com response.write "CONTEUDO")

4 - template.asp (com as modificações e os replace das ancoras)

 

TEMPLATE.ASP

<html>
<body>
<p>Será exibido abaixo o conteúdo do arquivo "Layout.html":</p>

<%
'Cria-se o objeto FSO
Set Obj_FSO = Server.CreateObject("Scripting.FileSystemObject")
'Fiz o arquivo Layout com 2 colunas de uma tabela #$%MENU%$# e #$%CONTEUDO%$#.
Set Obj_Template = Obj_FSO.OpenTextFile(Server.MapPath("layout.htm"), 1)
	'Carreguei o Layout.HTM .
	Str_Template = Obj_Template.ReadAll
Obj_Template.Close

Set Obj_Conteudo = Obj_FSO.OpenTextFile(Server.MapPath("conteudo.asp"), 1)
	' Carreguei o CONTEUDO.ASP .
	Str_Conteudo = Obj_conteudo.ReadAll
Obj_Conteudo.Close

Set Obj_Menu = Obj_FSO.OpenTextFile(Server.MapPath("menu.asp"), 1)
	' Carreguei o MENU.ASP
	Str_Menu = Obj_Menu.ReadAll
Obj_Menu.Close

Set Obj_Template = Nothing
Set Obj_Conteudo = Nothing
Set Obj_Menu = Nothing
Set Obj_FSO = Nothing

' Fiz o replace das ancoras pelo conteúdo das variáveis
Str_Final = Replace(Str_Template,"#$%CONTEUDO%$#",Str_Conteudo)
Str_Final = Replace(Str_Final,"#$%MENU%$#",Str_Menu)

%>
<%=Str_Final%>

</body>
</html>

 

o problema:

não executa os scripts .asp

se eu colocar qq coisa em html nos menu.asp e conteudo.asp tudo funciona na boa, mas se colocar qq script asp não rola.

 

existe alguma forma de executar o script e colocar o resultado para a variável e só depois substituir?

 

Abs

 

Editado

PS: exibi o codigo Fonte do arquivo q é gerado pelo IE

nele estava tudo, inclusive o codigo ASP . Como se faltasse apenas executar.

 

<html>
<body>
<p>Será exibido abaixo o conteúdo do arquivo "Layout.html":</p>

<table width="100%" border="1">
  <tr>
	<td width="27%">
<%
response.write " MENU "
%>
</td>
	<td width="73%">
<%
response.write "Conteúdo"

%>

</td>
  </tr>
</table>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como estão os arquivos "menu.asp" e "conteudo.asp"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

menu.asp

<% response.write "MENU" %>

 

conteudo.asp

<% response.write "Conteúdo" %>

 

 

só para ver se executa o response

 

dai ele não aparece nada quando rodo o template.asp q chama os 2, mas for no exibir/codigo fonte pelo Ie (ou firefox) ele mostra os <% response.write "Conteúdo" %> dentro da tabela como se virasse uma tag ou coisa qualquer pois o q tem dentro dos <% %> não aparece na tela.

deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como estão os arquivos "menu.asp" e "conteudo.asp"?

mandei a resp mas bugou.

 

menu.asp

menu-HTML

<% response.write"menu-ASP"%>

conteudo.asp

Conteudo-HTML

<% response.write"conteudo-ASP"%>

 

quando rodo o template.asp que tem as chamadas dos 2 arquvios só vejo na tela menu-html e Conteudo-html mas o que tem nos response não exibe.

ai que tem a doideira. se eu for no IE exibir/codigo fonte eu vejo:

 

<html>

<body>

menu-HTML

<% response.write"menu-ASP"%>

</body>

</html>

 

assim como está ai em cima. com o código asp no meio e tudo.

parece q ele ta interpretando como se os <% %> fosse uma tag qualquer dentro do HTML e por isso nao mostra o conteudo.

 

consegui exlpicar direito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando FSO não será possível ter comandos ASP no arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando FSO não será possível ter comandos ASP no arquivo.

Apenas para e feito de conhecimento...porque não poderá ter código asp? ele não será interpretado pelo servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao. é isso q ta rolando po.

 

to querendo saber setem alguam forma de eu executar o arquivo.asp e jogar o resultado para uma variável. dai depois exibiria o conteúdo. pq já que não pode executar comandos asp desta forma, fica complicado trabalhar com o conteúdo se ele tiver dentro de um bd. to errado?

 

se tiver alguma forma de ele jogar a resposta para dentro de uma variável e depois exibir já ajuda.

tipo

<% for i=0 to 3

response.write "<td>" & i & "</td>"

next

%>

 

dai se executar o asp o codigo fonte em html ficaria assim:

<td>1 </td>

<td>2 </td>

<td>3 </td>

 

assim VarConteudo ="<td>1 </td> <td>2 </td> <td>3 </td>"

 

ai eu imprimo onde quiser <div id=conteudo> <%=VarConteudo%> </div>

 

entenderam?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<% for i=0 to 3
Var = Var & "<td>" & i & "</td>"
next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Usando FSO não será possível ter comandos ASP no arquivo.
Apenas para e feito de conhecimento...porque não poderá ter código asp? ele não será interpretado pelo servidor?
Ele não será interpretado pelo servidor. Como o FSO abre o arquivo e puxa o texto para dentro de uma variável nada de ASP será interpretado.

 

Uma possibilidade é o uso do EVAL, mas ele não irá interpretar os <%%> e não sei como se comporta com multiplas linhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.