Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou criando uma página dinâmica de conteúdo.
Imagine que nesta página entrará conteúdos diversos como: história, a empresa, visão, missão, etc...
O design da página será em duas colunas, na esquerda o conteúdo da página e na direita virão alguns módulos definidos por include.
Assim:
<%if mod_noticias = "1" then%>
<!--#include file="mod_noticias.asp"-->
<%end if%>
<%if mod_galeria = "1" then%>
<!--#include file="mod_galeria.asp"-->
<%end if%>
<%if mod_agenda = "1" then%>
<!--#include file="mod_agenda.asp"-->
<%end if%>
<%if mod_texto = "1" then%>
<!--#include file="mod_texto.asp"-->
<%end if%>
Perceba que na hora de cadastrar no banco eu defino apenas se irá ou não aparecer determinado módulo.Existe alguma maneira para eu ordenar estes módulos dinâmicamente? Ou seja:
Na página X a ordem é: galeria | noticias | agenda | texto
Na página Y a ordem é: noticias | texto | galeria | agenda
Vocês podem me dar uma idéia?
você pode usar o Server.Execute,o Server.Execute cria pequenas sub-rotinas. Ele se torna melhor que o #Include para essa tarefa pois permite que a rotina seja chamada apenas quando necessario, enquanto que o #include ocorrerá sempre.
>
você pode usar o Server.Execute,o Server.Execute cria pequenas sub-rotinas. Ele se torna melhor que o #Include para essa tarefa pois permite que a rotina seja chamada apenas quando necessario, enquanto que o #include ocorrerá sempre.
Obrigado pelas respostas pessoal!
xanburzum, como eu faço para ordenar dinâmicamente esses Server.Execute()? É possível?
dá uma pesquisada no forum k existem alguns exemplos...
kker coisa posta ae...
faça com CSS e HTML, salve as configurações e exiba de acordo com a folha de estilo escolhida. Mesma lógica de templates
O problema do Server.Execute é que você não tem acesso as variáveis utilizadas no arquivo executado.
Segue abaixo uma forma de executar arquivos.asp de forma ordenada:
<%
Function include(arquivo)
Dim fso, f, ReadAllTextFile
Const ForReading = 1, ForWriting = 2
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Server.MapPath(arquivo), ForReading)
ReadAllTextFile = f.ReadAll
If (len(ReadAllTextFile) > 0) Then
ReadAllTextFile = replace(ReadAllTextFile,"<" & chr(37),"")
ReadAllTextFile = replace(ReadAllTextFile,chr(37) & ">","")
End If
Execute(ReadAllTextFile)
End Function
If (mod_noticias = "1") Then
include("mod_noticias.asp")
End If
If (mod_galeria = "1") Then
include("mod_galeria.asp")
End If
If (mod_agenda = "1") Then
include("mod_agenda.asp")
End If
If (mod_texto = "1") Then
include("mod_texto.asp")
End If
'Ou
If (mod_galeria = "1") Then
include("mod_galeria.asp")
End If
If (mod_noticias = "1") Then
include("mod_noticias.asp")
End If
If (mod_texto = "1") Then
include("mod_texto.asp")
End If
If (mod_agenda = "1") Then
include("mod_agenda.asp")
End If
%>* Todos os arquivos a serem carregados não devem possuir as tags HTML soltas. Utileze Response.Write para escrever o HTML.
Posta o resultado, pois criei agora, fiz alguns testes e deu certo.
Realmente vocês estão colocando uns exemplos muito legais, coisas que eu nem sabia.
Na realidade eu preciso de uma solução que possa ordenar os módulos dessa forma:
É uma página única, conteudo.asp que exibe dinamicamente os seguintes conteudos:
Página "A empresa":
Na coluna esquerda vem o conteúdo,textos e etc.
Na coluna direita são carregados os seguintes includes(modulos) nesta ordem: galeria, notícias, agenda e texto.
Página "Missão":
Na coluna esquerda vem o conteúdo,textos e etc.
Na coluna direita são carregados os seguintes includes(modulos) nesta ordem: texto, agenda, galeria e notícias.
Isso é possível?
Utilizando INCLUDE você pode fazer vários IF's.
Exemplo:
<%
If pagina = "Missão" then
%>
<!--#include file="mod_texto.asp"-->
<!--#include file="mod_agenda.asp"-->
<!--#include file="mod_galeria.asp"-->
<!--#include file="mod_noticias.asp"-->
<%
ElseIf pagina = "A Empresa" Then
%>
<!--#include file="mod_texto.asp"-->
<!--#include file="mod_galeria.asp"-->
<!--#include file="mod_agenda.asp"-->
<!--#include file="mod_noticias.asp"-->
<%
End If
%>O problema de fazer assim é que todos os includes são executados mesmo que não entre no If.
Da forma que citei, só vai carregar o necessário.
<%
If pagina = "Missão" then
include("mod_texto.asp")
include("mod_agenda.asp")
include("mod_galeria.asp")
include("mod_noticias.asp")
ElseIf pagina = "A Empresa" Then
include("mod_texto.asp")
include("mod_galeria.asp")
include("mod_agenda.asp")
include("mod_noticias.asp")
End If
%>
É uma boa solução a sua hargon, mas seria interessante o usuário via painel de controle poder definir quais e em que ordem os módulos apareceriam na página. Mas pensando bem eu teria que criar uma tabela modulo no banco de dados e fazer uma ordenação.
Então vou fazer o seguinte:
Se o id_pag = par exibe tal ordem Se for ímpar exibe outra ordem pra dar uma variada e as páginas não ficarem iguaizinhas.
Valeu pela atenção gente!
Utilizando a função que criei, acredito que você consiga fazer via painel a ordenação, já com #include, isso não será possível (aí você pode usar a sua sugestão).
Mais é realmente necessário montar o sistema desta forma? eu acho desnecessário, isto por que poderá acabar até comprometendo o entendimento do mesmo, acho eu que desta forma não fica organizado.
Mais, para cada caso a uma solução e se nesta esta é a melhor, paciência rsrsrsrsrs.
Não fica desorganizado, Patrique, pois como esta página receberá diversos tipos de conteúdo, cada módulo pode ser mais relevante para determinado tipo de conteúdo e com isso seria interessante ter essa possibilidade de ordenação.
De todo modo, agradeço a participação e opinião de todos.
Vocês são show! Abraços!
ja passei por isso tb... e nao resolvi
o include nao pode ser jogado em variavel nem ser dinamico e isso resolveria o problema da chamada em ordem
você pode usar server.Execute("pg.asp")
so depende do conteudo do include