manoaj 12 Denunciar post Postado Outubro 5, 2012 pessoal eu to querendo faser uma coisa e não sei se é possiivel porisso vim aqui tentar tirar essa duvida com vcs é o seguinte to fasendo um sistema no qual a pagina php tem qe puxar um link um caminho que mostre onde esta a pagina desejada como o codigo esta <?php//inclui a classe require_once('functions/class.template.php'); //instancia a classe $tp = new templateParser('themes/padrao/template.html');aqui vcs estão vendo esta linha ela quemostra pro sistema a pasta que tem que ser puxadada //define os parâmetros da classe $tags = array( 'titulo' => 'Meu template', 'cabecalho' => 'cabecalho.php', 'menu' => 'menu.php', 'coluna1' => 'coluna1.php', 'coluna2' => 'coluna2.php', 'coluna3' => 'coluna3.php', 'rodape' => 'rodape.php' ); //faz a substituição $tp->parseTemplate($tags); // exibe a page echo $tp->display(); ?> aquela linha que eu comentei no codigo acima é onde eu quero faser o seguinte sistema quero chamar este caminho aqui themes/padrao/template.html de uma tabela no banco de dados assim eu vou poder alteralo sempre que eu quiserpodendo trocar o atalho o banco de dados que crie foi esse CREATE TABLE IF NOT EXISTS `themes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `indic_theme` text NOT NULL, `nome` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; na tabela acima a coluna que vai conter os link sque eu quero poder mudar e mostrar pro php la em sima e a indic_theme euq ueria poder jogar o atalho themes/padrao/template.html dentro dessa tabela para que o codigo leia e eu possa modificar atravez de um painel :D caso nao tenhao intendido só falar que explico ! Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 5, 2012 n entendi mto bem. Digamos você tem uma tabela de usuario q tem o codigo do tema, quando o usuario logar ele vai pegar o caminho do tema e aplicar o css personalizado é isso? Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 n entendi mto bem. Digamos você tem uma tabela de usuario q tem o codigo do tema, quando o usuario logar ele vai pegar o caminho do tema e aplicar o css personalizado é isso? é isso vai ter um painel administrativo onde o usuario quando loga vai poder trocar este tema pelo nome ou seja eu queria pode trocar aquele atalho themes/padrao/template.html sempre que eu quisece e acho que a forma de faser isso é mostrando a ele usando o banco de dados né? Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Outubro 5, 2012 você precisa criar uma classe q irá fazer isso pra você... templateParser é uma classe de templates agroa você irá criar uma classe q irá utilizar a templateParser require_once('functions/class.template.php'); class View{ function __construct($theme,$tags){ $tp = new templateParser($this->getUrl($theme)); $tp->parseTemplate($tags); echo $tp->display(); } private function getUrl($theme){ $sql = "Select indic_theme from themes WHERE nome = '$theme' LIMIT 1"; $query = mysql_query($sql); $result = mysql_fetch_row($query); return $result['indic_theme']; } } require 'View.php'; $tags = array( 'titulo' => 'Meu template', 'cabecalho' => 'cabecalho.php', 'menu' => 'menu.php', 'coluna1' => 'coluna1.php', 'coluna2' => 'coluna2.php', 'coluna3' => 'coluna3.php', 'rodape' => 'rodape.php' ); new View('class.template.php',$tags); creio q seja mais o menos isso q você quer.. bons estudos Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 5, 2012 acredito q sim. Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 você precisa criar uma classe q irá fazer isso pra você... templateParser é uma classe de templates agroa você irá criar uma classe q irá utilizar a templateParser require_once('functions/class.template.php'); class View{ function __construct($theme,$tags){ $tp = new templateParser($this->getUrl($theme)); $tp->parseTemplate($tags); echo $tp->display(); } private function getUrl($theme){ $sql = "Select indic_theme from themes WHERE nome = '$theme' LIMIT 1"; $query = mysql_query($sql); $result = mysql_fetch_row($query); return $result['indic_theme']; } } require 'View.php'; $tags = array( 'titulo' => 'Meu template', 'cabecalho' => 'cabecalho.php', 'menu' => 'menu.php', 'coluna1' => 'coluna1.php', 'coluna2' => 'coluna2.php', 'coluna3' => 'coluna3.php', 'rodape' => 'rodape.php' ); new View('class.template.php',$tags); creio q seja mais o menos isso q você quer.. bons estudos dexo ver se entendi no caso você tirou o require_once('functions/class.template.php'); que estava no codigo e subistituiu pela pagina view.php que é a classe que vai faser a seleção no banco de dados e vai mostrar qual é o atalho a ser usado o link é isto? Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Outubro 5, 2012 exato Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 vou ver se da certo e volto pra falar com vcs obrigado :D Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Outubro 5, 2012 então a probabilidade de erro no meu script é grande. tem q implementar se você fosse criar um adm pra pessoa selecionar o template cara cada existe a necessidade de você criar outra tabela contendo user_theme e na página q chama a view você precisa realizar uma consulta para obter o nome/id do template q irá ser utilizado Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 kkkkkkkkkkkkkkk sim deu erro Notice: Undefined variable: tp in C:\wamp\www\index.php on line 20 Fatal error: Call to a member function parseTemplate() on a non-object in C:\wamp\www\index.php on line 20 no banco de dados na tabela indic_theme eu coloquei o atalho que tava sendo usado antes so para testar themes/padrao/template.html e na pagina index php que ta puxando a view eu coloquei a coneção com banco de dados Não existe uma forma mais simples de informar o atalho que ta na tabela indic_theme ao $tp = new templateParser('atalho aqui'); sem usar outra função ? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Outubro 5, 2012 Não é mais fácil fazer uma simples consulta no banco e por o resultado ali? Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 Não é mais fácil fazer uma simples consulta no banco e por o resultado ali? kkk isso que eu queria saber mas tipo como eu iria por o resultado da consulta la dando um simples echo? tipo tentei dessa forma mas nao obtive muito sucesso a e orbigado por atender meu pedido fico muito grato @Gabriel Jacinto Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Outubro 5, 2012 Como eu não entendi muito bem, vou dar minha opinião. Se cada usuário, em sua tabela, tem um campo com o indic_theme, não daria certo fazer um SELECT com um WHERE pro ID do usuário logado? Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 Como eu não entendi muito bem, vou dar minha opinião. Se cada usuário, em sua tabela, tem um campo com o indic_theme, não daria certo fazer um SELECT com um WHERE pro ID do usuário logado? dexa eu tentar explicar melhor eu tenho o index.php <?php include('connections/conexao.php'); ?> <?php //inclui a classe require_once('functions/class.template.php'); //instancia a classe $tp = new templateParser('themes/padrao/template.html'); //define os parâmetros da classe $tags = array( 'titulo' => 'Meu template', 'cabecalho' => 'cabecalho.php', 'menu' => 'menu.php', 'coluna1' => 'coluna1.php', 'coluna2' => 'coluna2.php', 'coluna3' => 'coluna3.php', 'rodape' => 'rodape.php' ); //faz a substituição $tp->parseTemplate($tags); // exibe a page echo $tp->display(); ?> e tenho o class.template.php <?php class templateParser { private $output; //construtor faz a carga do template function templateParser( $templateFile='../themes/padrao/template.html' ){ (file_exists($templateFile)) ? $this->output=file_get_contents($templateFile) : die('Erro: Arquivo '.$templateFile.' não encontrado'); } //faz a substituição function parseTemplate($tags=array()){ if(count($tags)>0){ foreach($tags as $tag=>$data){ $data = (file_exists($data)) ? $this->parseFile($data) : $data; $this->output = str_replace('{'.$tag.'}',$data, $this->output); } } else { die('Erro: não encontramos o arquivo ou texto'); } } //Enquanto o buffer de saída estiver ativo, não é enviada a saída do script function parseFile($file){ //Ativar o buffer de saída. ob_start(); include($file); //O conteúdo deste buffer interno é copiado na variável $content $content=ob_get_contents(); //descartar o conteúdo do buffer. ob_end_clean(); return $content; } //Exibe o tempalte function display(){ return $this->output; } } ta o que eu quero com esses codigos e criar um sistema de template onde eu possa mudar o template por um painel administrativo, e como essas trocas ocorrem: elas occorrem quando aquele caminho é mudado //instancia a classe $tp = new templateParser('themes/padrao/template.html'); <- esse ai , como as templates para serem mudadas eu tenho que mudar esse caminho ai informando a nova template eu queria uma forma de editar este caminho atravez de um painel ou sej apara isso eu teria que usar o banco de dados , e no meu banco de dados tem uma tabela chamada themes e uma coluna chamada indic_theme essa coluna fica o atalho dos temas que devem ser informados ao codigo php e uma coluna nome que seria o nome do tema. bom acho que agora d apra entender :D Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Outubro 5, 2012 Ai você gostaria de editar o tema através do BD? Mudando pelo nome que tem lá? Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 Ai você gostaria de editar o tema através do BD? Mudando pelo nome que tem lá? sim mas se tiver outro jeito de faser esse sistema com um painel de administração mas acho que a melhor forma é esta né tipo se eu tiver o atalho cadastrado no banco de dados themes/padrao/template.html e eu quiser mudar esta template para outra seria so cadastrar ou editar esse codigo ai themes/novotemplate/template.html Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Outubro 5, 2012 Editar, porque se você cadastrar, terá dois registros no BD. OBS.: Você quer editar os dados do BD, né?! Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 5, 2012 Editar, porque se você cadastrar, terá dois registros no BD. OBS.: Você quer editar os dados do BD, né?! sim mas o que vai ser feito com db depois é o problema menor o negocio e saber como eu vo faser aquele codigo funcionar puxando o caminhos das pastas do db como te expliquei! Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Outubro 6, 2012 sim mas o que vai ser feito com db depois é o problema menor o negocio e saber como eu vo faser aquele codigo funcionar puxando o caminhos das pastas do db como te expliquei! Passei anoite procurando e só achei artigos explicando como criar ate esta parte da exibição de templates agora como administra usando um anco de dados ou faser o que eu quero nada ta complicado :/ Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Outubro 6, 2012 vamos supor você tem um banco q contém usuario (user) e template (theme) então você deve criar uma tabela para relacionar esse template com esse usuario você pode add um campo theme ao usuario ou criar essa tabela de ligação user_theme a user_theme só irá conter o id do usuario e o id do theme você faz uma busca nessa tabela buscando a url do tema escolhido pelo usuario fara da mesma maneira se colocar um campo na tabela user q só irá receber o id do thema escolhido por ele. agora voltando a class View require_once('functions/class.template.php'); class View{ function __construct($theme,$tags){ $tp = new templateParser($this->getUrl($theme)); $tp->parseTemplate($tags); echo $tp->display(); } private function getUrl($theme){ //aqui voce vai fazer a busca do tema e retornará a url q será usada na classe templateParser // é aqui também q voce vai procurar seu usuario $sql = "Select indic_theme from themes WHERE nome = '$theme' LIMIT 1"; $query = mysql_query($sql); $result = mysql_fetch_row($query); //aqui você retorna somente o indice contendo a url do respectivo tema return $result['indic_theme']; } } voce pode criar mais um metodo para buscar o usuario e seu respectivo tema na realidade você pode fazer isso q você quer de diversas formas. te passei 2 agora resta correr atrás Compartilhar este post Link para o post Compartilhar em outros sites