polloooo 0 Denunciar post Postado Abril 10, 2010 Opa pessoal to com uma duvida. tenho um layout fixo usando php para dar include nas outras paginas nesse estilo: menu <div id="box_menu"><a href="index.php?page=contato">contato</a></div> include <?php if(!isset($_REQUEST['page'])): ?> etc.... <?php else: include($_REQUEST['page'].".php"); endif; ?> Agora como eu faço isso com o smarty ??? vlw Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Abril 10, 2010 php function Pages( ) { $x = false; if( isset( $_REQUEST['page'] ) ) { $x = trim( $_REQUEST['page'] ); $a['home'] = true; $a['contato'] = true; $a['outro'] = true; } if( !$x or $x == '' or !isset( $a[ $x ] ) ) { return 'home'; } return $a[$x]; } $smarty->assign('page', Pages( )); menu.tpl <div id="box_menu"><a href="index.php?page=contato">contato</a></div> include.tpl {include file="$page.tpl"} Compartilhar este post Link para o post Compartilhar em outros sites
polloooo 0 Denunciar post Postado Abril 10, 2010 Opa.obrigado pela sua resposta. Eu vou testar. Mas eu não entendi mt bem a logica do seu codigo será q você pode me explicar? sou iniciante. obrigado Opa...testei aqui mas nao funcionou nao !! :( Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Abril 11, 2010 considerando que você já tenha feito a definição das constantes do objeto Smarty() http://www.smarty.net/manual/en/installing.smarty.basic.php veja os exemplos comentados e adequados ao seu caso: menu.html <div id="box_menu"><a href="index.php?page=contato">contato</a></div> <div id="box_menu"><a href="index.php?page=empresa">servicos</a></div> <div id="box_menu"><a href="index.php?page=empresa">empresa</a></div> index.php function Pages( ) { $x = false; // inicia $x como booleano FALSE // verifica se existe o índice "page" no array global REQUEST if( isset( $_REQUEST['page'] ) ) { // remove caracteres de espaço do fim e início se existir, e atribui à variável $x, a qual será usada como índice $x = trim( $_REQUEST['page'] ); // registra me array as sessões do site. $a['home'] = true; $a['contato'] = true; $a['servicos'] = true; $a['empresa'] = true; $a['outro'] = true; } // caso $x seja FALSE, VAZIO ou um índice inexistente do array $a ou o mesmo array $a seja inexistente, retorna o valor "home", que seria a página default. if( !$x or $x == '' or !isset( $a[ $x ] ) ) { return 'home'; } // caso as condições acima sejam satisfatórias, retornará o índice correto return $x; } /* exemplo: index.php?page=contato, executará corretamente $smarty->display( 'contato.tpl' ); index.php?page=empresa, executará corretamente $smarty->display( 'empresa.tpl' ); index.php?page=inexistente, executará o valor default, pois não existe no array. $smarty->display( 'home.tpl' ); */ $smarty->display( Pages( ) . '.tpl' ); Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Abril 11, 2010 Bom já que você quer incluir, o método display() não é o mais adequado. É muito mais simples você receber e tratar o valor (que eu usaria $_GET, para não conflitar com $_POST de mesmo nome) e, usar o método template_exists() da Smarty para setar o arquivo a ser incluído. // Recebe o valor, trata de modo simples e concatena a extensão do template $page = trim( $_GET['page'] ) . '.tpl'; // Se o template vindo por GET não existir, sobrescrevemos a variável com o template padrão. if( ! $smarty -> template_exists( $page ) ) { $page = 'home.tpl'; } $smarty->assign( 'page', $page ); $smarty -> display( 'seu_template_principal.tpl ); E no template principal, seja lá onde for que você precise adicionar: {include file=$page}Bem mais simples. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Mas eu sugiro que trate melhor a variável vinda por GET para aumentar a segurança. Compartilhar este post Link para o post Compartilhar em outros sites
polloooo 0 Denunciar post Postado Abril 11, 2010 nossa !! obrigado ai pela tentativa de vcs... mas eu fiquei pesquisando aqui 2 horas e encontrei uma solução mais que simples... {if !isset($smarty.get.page)} CONTEUDO {else} {include file=$smarty.get.page|cat:'.tpl'} {/if} Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Abril 12, 2010 desse modo fica vulnerável a injeções e falhas de arquivo inexistente Compartilhar este post Link para o post Compartilhar em outros sites
polloooo 0 Denunciar post Postado Abril 13, 2010 uma duvida: se eu colocar pra chamar o .tpl assim direto o codigo que ta no .php nao acompanha nao ???? vlww Compartilhar este post Link para o post Compartilhar em outros sites