Ir para conteúdo

POWERED BY:

Arquivado

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

polloooo

Layout fixo com Smarty

Recommended Posts

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

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

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

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

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

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

×

Informação importante

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