Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
salve salve galera da iM!
to eu aqui mais uma vez, tentando resolve mais um probleminha com uma classe aqui. a função dela é gerar os templates. ela eh bem simples e quem quiser ja pode aproveita e usa-la. segue abaixo o arquivo e ja vo coloca um exemplo de uso:
segue a classe:
<?class template{ var $Template; var $Tabela, $Num, $Loop; function template($arquivo){ $open_o = fopen($arquivo,"r"); $this -> Template = fread( $open_o , filesize($arquivo) ); } function ver(){ print $this-> Template; } function atribuir($var, $conteudo){ $this->Template = str_replace("[".$var."]",$conteudo, $this->Template); } function loop( $lugar, $valores ){ $this->Loop = $lugar; if( strstr($this->Template,"[-$lugar-]") ){ $this->Template = str_replace( "[-$lugar-]" , $this->Tabela."[-$lugar-]" , $this->Template ); }else{ $partes = explode("<!--".$lugar."-->",$this->Template); $partes2 = explode( "<!--/".$lugar."-->" , $partes[1] ); $this->Tabela = $partes2[0]; $this->Template = str_replace( "<!--$lugar-->".$this->Tabela."<!--/$lugar-->" , $this->Tabela."[-$lugar-]" , $this->Template); } foreach($valores as $chave=>$valor){ $this->Template = str_replace("[$chave]",$valor,$this->Template); } } function fechaLoop(){ $this->Template = str_replace( "[-".$this->Loop."-]", "", $this->Template); }}?>
ela é bem simples... utiliza-se assim:
<?require_once("CLASSE.php");$template = new template("template/ARQUIVO.tpl");//exemplo de loop:foreach($ARRAY as $coisa){ $template->loop('NOME DO LOOP', $coisa); } $template->fechaLoop();//exemplo de variavel comum:$template->atribuir("NOME", $VARIAVEL); ?>
totalmente simples.. por isso q eu odeio o smarty ^^
eu acho q o smarty acaba complicando e usando um simples sistema de template para programação. bom mas isso aqui nao eh discução para isso ^^
segue abaixo um exemplo de um arquivo de template:
<html><head><title>titulo</title></head><body><div id="algumacoisa">[nome_da_variavel]</div><!--nomeDoLoop-->[variavel_que_se_repetira_a_cada_loop]<!--/nomeDoLoop-></body></html>
yeah! totalmente simples, mas a minha ideia agora era fazer um sistema de inclusao assim como um include do php nesse template. exemplo:
INCLUIR("header.tpl");<div id="algumacoisa">[nome_da_variavel]</div><!--nomeDoLoop-->[variavel_que_se_repetira_a_cada_loop]<!--/nomeDoLoop->INCLUIR("footer.tpl");
dai na classe ele teria q pegar o valor q ta ali no incluir e trocar pelo conteudo q tem no arquivo indicado....
bom, acho que é isso, espero que tenham etendido minha duvida ^^
abração a todos! fico no aguardo! :D
substitui aí
function template($arquivo){ $conteudo = file_get_contents($arquivo); @preg_match_all("|{include=(.*)}|U",$conteudo,$inc); $inc = $inc[1]; foreach($inc as $fic) { $a = $this->tpl_include($fic); $conteudo = str_replace("{include=".$fic."}",$a,$conteudo); } $this -> Template = $conteudo; } function tpl_include($incs) { $a = file_get_contents("template/".$incs); return $a;} function ver(){ print $this-> Template; }
eu e o guilherme rachamo a cuca no msn, mas chegamo no resultado final, pega ae galera
o crucifier eh um genio da arte da programação http://forum.imasters.com.br/public/style_emoticons/default/devil.gif
aeiuaieouaoiueae
mas ta ficando bommm! eu to fazendo mais alguns ajustes.. (meio radicais...) mas parece q to chegando a um bom resultado!
NO SMARTY! ^_^
segue a ultima versao:
<?class template{ var $Template; var $Tabela, $Num, $Loop, $vars = array(); function template($dir, $arquivo){ $conteudo = file_get_contents($dir.$arquivo); @preg_match_all("|\[include=(.*)]|U",$conteudo,$inc); $inc = $inc[1]; foreach($inc as $fic) { $a = file_get_contents($dir.$fic); $conteudo = str_replace("[include=".$fic."]",$a,$conteudo); } $this -> Template = $conteudo; } function ver($debug = false){ @preg_match_all("|\[(.*)\]|U", $this-> Template,$inc); $inc = $inc[1]; foreach($inc as $fic){ $fic = explode(".", $fic); if(!isset($this->vars[$fic[0]]) && $debug == true){ $this->Template = str_replace("[".$fic[0]."]","[TEMPLATE: Não foi encontrada a variavel $fic[0]]",$this->Template); } else { if(is_array($this->vars[$fic[0]])){ $this->Template = str_replace("[".$fic[0].".".$fic[1]."]",$this->vars[$fic[0]][$fic[1]],$this->Template); } else { $this->Template = str_replace("[".$fic[0]."]",$this->vars[$fic[0]],$this->Template); } } } print $this->Template; } function atribuir($var, $conteudo){ $this->vars[$var] = $conteudo; } function loop( $lugar, $valores ){ $this->Loop = $lugar; if( strstr($this->Template,"[-$lugar-]") ){ $this->Template = str_replace( "[-$lugar-]" , $this->Tabela."[-$lugar-]" , $this->Template ); }else{ $partes = explode("<!--".$lugar."-->",$this->Template); $partes2 = explode( "<!--/".$lugar."-->" , $partes[1] ); $this->Tabela = $partes2[0]; $this->Template = str_replace( "<!--$lugar-->".$this->Tabela."<!--/$lugar-->" , $this->Tabela."[-$lugar-]" , $this->Template); } foreach($valores as $chave=>$valor){ $this->Template = str_replace("[$chave]",$valor,$this->Template); } } function fechaLoop(){ $this->Template = str_replace( "[-".$this->Loop."-]", "", $this->Template); } }?>
:rolleyes:
ninguem? :'(