Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa template engineom

[es] :: PHP :: Problem sa template engineom

[ Pregleda: 2202 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Stol3x
Croatia
MileCo.
Karlovac

Član broj: 316593
Poruke: 2
*.adsl.net.t-com.hr.

Sajt: devskola.org


Profil

icon Problem sa template engineom31.07.2013. u 13:33 - pre 130 meseci
Pozdrav svima

Imam problem. Imam klasu za template engine koji koristim na sajtu i do sad me sluzio donekle dobro dok nisam poceo koritit loop.

Zelim loop izvesti u html fajlu te kroz neki html kod: [loop:list_users] [id] [endloop] recimo ispisat sve ID-ove korisnika u bazi.
To radim preko preg_replace tako sto moju varijablu zamjenim svojim kodom, a problem je sto u klasi zamjenjujem kod. Da bi definirao varijablu kao [id] ili [username] moram napraviti $template = new Template; te $template->assign('username',$value');

Posto se unutar klase Template radi obrada varijabli to je nemoguce, renderira varijablu kroz klasu Template samu u sebi..
Evo moj kod:
Code:

<?php

class Template {
    private $vars = array();
    
    public function assign($key, $value = null){
        $this->vars[$key] = $value;
    }
    
    public function render($template_name){
        
        $path = 'templates/default/'.$template_name.'.html';

        if(file_exists($path)){
            $contents = file_get_contents($path);
            
            foreach($this->vars as $key => $value){
                $contents = preg_replace('/\['.$key.'\]/', $value, $contents);
            }
            $site_theme = 'default';
            // HTML funkcije
            $contents = preg_replace('/\<\!\-\- if (.*) \-\-\>/', '<?php if($1) : ?>', $contents);
            $contents = preg_replace('/\<\!\-\- else \-\-\>/', '<?php else : ?>', $contents);
            $contents = preg_replace('/\<\!\-\- endif \-\-\>/', '<?php endif; ?>', $contents);
            $contents = preg_replace('/\<\!\-\- include:(.*) \-\-\>/', '<?php include "templates/$site_theme/$1"; ?>', $contents);
            $contents = preg_replace('/\[notif\]/', '', $contents);
            $contents = preg_replace('/\[login_errors\]/', '', $contents);
            $contents = preg_replace('/\[join_errors\]/', '', $contents);
            $contents = preg_replace('/\[err_forgot_pw\]/', '', $contents);
            $contents = preg_replace('/\<\!\-\- is_logged \-\-\>/', '<?php logged() ? include "templates/'.$site_theme.'/logged.html" : logged(); ?>', $contents);
            $contents = preg_replace('/\<\!\-\- not_logged \-\-\>/', '<?php logged() ? : include "templates/'.$site_theme.'/unlogged.html"; ?>', $contents);
            $contents = preg_replace('/\<\!\-\- loop:user_list \-\-\>/', '<?php $user_select = mysql_query("SELECT * FROM users"); while($usr = mysql_fetch_assoc($user_select)): $user_id = $usr[\'id\']; $template->assign("id", $user_id); ?>', $contents);
            $contents = preg_replace('/\<\!\-\- endloop \-\-\>/', '<?php endwhile; ?>', $contents);
            // Kraj HTML funkcija
            
            // Nije bitno zasto je ovako, al' bitno je da radi, nije bitno zasto radi
            eval(' ?> '.$contents. ' <?php '); 
            
        } else {
            // What if i told you template don't exist?
            exit('template path ne postoji.');
        }
        
    }
    
}

?>


Do sada sam radio tako da u include.php tj. headeru svake stranice pokrenem klasu, assign-am varijable i renderiram template na kraju. Ovdje tako ne mogu jer je to sve u klasi, ako me razumijete.
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.dynamic.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Problem sa template engineom04.08.2013. u 21:27 - pre 130 meseci
Ja da sam na tvom mestu, izbegao bi modifikaciju tvog template engine i implementirao bi neki od vec postojecih, dobro oprobanih i testiranih tpl engine-a.
...
 
Odgovor na temu

Stol3x
Croatia
MileCo.
Karlovac

Član broj: 316593
Poruke: 2
*.adsl.net.t-com.hr.

Sajt: devskola.org


Profil

icon Re: Problem sa template engineom04.08.2013. u 21:31 - pre 130 meseci
Tako sam i napravio... Uzeo sam RainTPL i prilicno sam zadovoljan :)
 
Odgovor na temu

[es] :: PHP :: Problem sa template engineom

[ Pregleda: 2202 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.