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

Kako napraviti vlastiti template engine?

[es] :: PHP :: Kako napraviti vlastiti template engine?
(Zaključana tema (lock), by dakipro)

[ Pregleda: 3766 | Odgovora: 17 ] > FB > Twit

Postavi temu

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2115.sa.bih.net.ba.



+1 Profil

icon Kako napraviti vlastiti template engine?23.08.2008. u 13:06 - pre 156 meseci
Zdravo. Zanima me kako funkcionise to? Kako napraviti vlastiti template engine. Recimo da mi u html fajlu:

{nesto} zamjeni sa $nesto varijablom.

Pa uradim $nesto = load_file("login_box.html");

a vamo stavim {nesto} i napravim load_file(); funkciju koja ce raditi kao include i sl. Kako napraviti sopstveni template engine?

Zatim i prikaz podataka iz tabele i sl.

Pozz
 
0

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 15:19 - pre 156 meseci
Treba da znas Regular Expression-e. Pomocu njih, uzimas sve sto se nalazi izmedju { }, obradjujes i vracas rezultate :-))

http://www.regular-expressions.info/ - Tutorial

 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2115.sa.bih.net.ba.



+1 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 15:33 - pre 156 meseci
Hehe, skontao sam u medjuvremenu da bi se to moglo rjesiti sa Regular Expressions. Ali ne znam ja to. Zapravo nije mi jasna razlika izmedju funkcija.

ereg_replace
ereg
eregi_replace
eregi
preg_replace_callback
preg_replace
preg_match
preg_grep
preg_match_all

preg_mat i preg_match_all !? To me buni i tako to... sta koristiti i sl. :S
 
0

Skaarj
Novi Sad

Član broj: 21463
Poruke: 365
93.86.29.*



+3 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 16:09 - pre 156 meseci
ereg_* zaboravi. to je mnogo sporije od preg_ a uz to i depricated tako da ga u php6 nece ni biti.
Dakle ostaje ti preg_*. U pitanju su perl kompatibilni regularni izrazi.

E sad koja funkcija sta i kako radi moraces da saznas u php manualu.
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2115.sa.bih.net.ba.



+1 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 17:09 - pre 156 meseci
Aha cool. A mogu li kako staviti string tj. postoji li neka funkcija gdje cu u string staviti source nekog fajla? php ili html, svejedno je.. dakle ono CTRL+U kad pritisnem u Firefoxu :) pa bih po tom stringu trazio ?
 
0

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 17:23 - pre 156 meseci
Može i jednostavnije sa: str_replace...
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2115.sa.bih.net.ba.



+1 Profil

icon Re: Kako napraviti vlastiti template engine?23.08.2008. u 17:24 - pre 156 meseci
sta sa str_replace ?
 
0

Skaarj
Novi Sad

Član broj: 21463
Poruke: 365
93.86.29.*



+3 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 09:57 - pre 156 meseci
Generalno str_replace je najbrzi nacin da {$pera} zamenis sa nekom vrednoscu u nekom fajlu. Regularni izrazi se koriste ukoliko ti trebaju neki kompleksni konstrukti.

Sto se tice funkcije koja bi ucitala neki fajl u string to moze sa file_get_contents().
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.162.*



+1 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 12:40 - pre 156 meseci
Napravio sam ovako:

Code:

<?php

function load_module_file($source){
    $file = file_get_contents($source);
    
    return $file;
}

function zamjena($search, $replace, $source){


    $search = "\${".$search."}\$";
    $replace = load_module_file($replace);    
    echo preg_replace($search, $replace, load_module_file($source));
    
}

zamjena("login_box", "do.html", "home.html");
zamjena("nesto", "nest.html", "home.html");
    
?>


Al mi ucita vise puta home.html i sl. Mozete li mi pomoci kako bih napravio funkciju zamjena recmo tako da se zove koja ce pretrazivati po fajlu koji ucitam jednom. Dakle trazi {login_box} i zamjeni s necim i sl.

??
 
0

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1115
*.dynamic.sbb.rs.

Sajt: www.gvozden.info


+67 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 14:14 - pre 156 meseci
pa, ne valja to tako.
dva puta ucitavas home.html tako da ti biva pregazeno ono sto si vec uradio...

Ukoliko nisi siguran najbolje je da uzmes smarty, ili na smarty-way napraviti sintaksu...

tipa:

$tpl = new Template();
$tpl->assign("login_box", $login_box);
$tpl->assign("nesto", $nesto);
$tpl->fetch("template.html);
// ili $tpl->display("template.html);
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.168.*



+1 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 17:00 - pre 156 meseci
Ma da najbolje je da koristim smarty, prilagodim ga sebi.

Ugl hocu ovako nesto:

require 'libs/Smarty.class.php';


class Content extends Smarty{
// pa da mogu ovako:
$this->display("index.html");

}

Ugl izbaci


Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\cms\index.php on line 7

kako bih mogao ovako?
 
0

Nemanja Avramović
Software architect
Tap medical
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4383
93.86.102.*

Sajt: https://avramovic.info


+45 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 17:38 - pre 156 meseci
U klasi moraš da definišeš funkciju, ne možeš tek tako zvati $this->display...
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.168.*



+1 Profil

icon Re: Kako napraviti vlastiti template engine?24.08.2008. u 20:51 - pre 156 meseci
Da da skontao sam hvala.

u settings.class.php imam ovu funkciju:

function getvar($var){
$get = addslashes($_GET["$var"]);
return $get;
}


dalje

index.php

<?php

// Poziva klasu za template
require 'libs/Smarty.class.php';
// Poziva klasu za postavke neke
require 'libs/Settings.class.php';
$S = new Settings;


switch('$S->getvar("param")'){
case '$S->getvar("param")':
$S->assign("inc", include("modules/plugin/".$S->getvar("param")));
break;
}


$S->display("index.html");

?>

i ovdaj dio mi dobro ne zamjeni u odgovarajuci DIV, dok ako uradim

$S->assign("inc", "nesto");

ispise nesto u dobrom DIV-u.

Na koji nacin bih ovo mogao rjesiti?

ovako na vrhu uspise ono sto ima u home.php , a u odgovarajucem divu broj JEDAN (1).

 
0

Zmaj
Predrag Krstić
web developer
Zrenjanin

Član broj: 1035
Poruke: 382

Sajt: https://pkrstic.wordpress..


+4 Profil

icon Re: Kako napraviti vlastiti template engine?25.08.2008. u 12:57 - pre 156 meseci
Citat:
_CaRtMan_

switch('$S->getvar("param")'){
case '$S->getvar("param")':
$S->assign("inc", include("modules/plugin/".$S->getvar("param")));
break;
}



Za pocetak nauci razliku izmedju jednostrukih i dvostrukih navodnika, zatim nauci kako se koristi switch/case/default konstrukcija, zatim nauci kako radi include... Kad sve to procitas i naucis onda kreni da pravis template engine, a dok pravi procitaj uptstvo za smarty, pa probaj da ga koristis, mozda potrazis i neki brzi od smartija, ili kao i sami tvorci smartija dodjes do zakljucka da je smarty nepotreban i spor i da je najbrze koristiti cist php koji je lepo organizvan...

nadam se da sam ti pomogao...

ps mislim da je ako glupo pitati ljude cemu sluzi koja komanda a ne sesti i procitati sam... bilo bi lepo od tebe da si napravio malo istrazivanje pre nego sto si postavio pitanje... nemoj biti lenj
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-1418.sa.bih.net.ba.



+1 Profil

icon Re: Kako napraviti vlastiti template engine?25.08.2008. u 17:31 - pre 156 meseci
Glupo je ono sto sam napisao moglo je samo ako postoji varijabla param da ide include. dakle
?param=home.php ucita home.php .

Sad ne znam da li postoji u Smarty kako da upisem u neki div {$inc} a da mi umjesto toga includa onaj file koji pise u param varijabli. Ne znam kako bih to izveo.

Pokusao sam onako sa assign, ali ne uspijevam.
 
0

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.adsl.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako napraviti vlastiti template engine?25.08.2008. u 20:12 - pre 156 meseci
Da si probao sa {require } uspeo bi. A uspeo bi i sa {$inc} da si procitao manual lepo i upotrebio mastu koristeci $smarty->fetch().
Ako imas probleme sto se tice smarty templejt endzina, postoji i podforum koji je specificno tome namenjen pa je daleko bolje tamo da postavis konkretno pitanje
 
0

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-1418.sa.bih.net.ba.



+1 Profil

icon Re: Kako napraviti vlastiti template engine?25.08.2008. u 20:52 - pre 156 meseci
Ne mogu da nadjem {require} na smarty.net manualu. A sto se tice smarty->fetch(); to vraca output template-a , a meni treba output php file-a , ne znam da li to predstavlja problem ?

home.inc.php :

Code:

<?php
class Content extends Settings {

    var $title;
    var $keywords;
    var $desc;

   function template()
   {
    // Title, keywords i description
    $this->title = "Početna stranica";
    $this->keywords = "Cms, content management system";
    $this->desc = "Početna stranica CMS Portala";
    
    $this->display("login_box.html");
    
   }

}

$content = new Content;
$content->template();
?>


Code:

<?php
// Poziva klasu za template
require 'libs/Smarty.class.php';
// Poziva klasu za postavke neke
require 'libs/Settings.class.php';
$S = new Settings;
// Učitava     

$S->assign("inc", $S->fetch("../plugin/home.inc.php")); // ovdje sam isao jedan back :S
$S->display("index.html");    
?>


A glupo mi da sad otvaram temu tamo.

 
0

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.adsl.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako napraviti vlastiti template engine?26.08.2008. u 08:17 - pre 156 meseci
Pod require sam mislio na include, lapsus. Usput, nema nesto previse smarty funckija da ne bi mogo da ih procitas sve.
Dalje, metode neke klase se obicno pozivaju van samog fajla klase, u cemu je poenta inkludovati home.inc.php koji ima klasu, kad ti tu klasu uvek isto pozivas i na isti nacin u tom fajlu. Lepo napravi funckiju koja ce da ti vrati sadrzaj, a ne da inkludujes fajl koji "vraca" sadrzaj.
Znaci umesto

$S->assign("inc", $S->fetch("../plugin/home.inc.php")); // ovdje sam isao jedan back :S

stavi

$S->assign("inc", $content->template());

I glupo je nastaviti temu ovde a ne otvoriti novu tamo gde joj je mesto
 
0

[es] :: PHP :: Kako napraviti vlastiti template engine?
(Zaključana tema (lock), by dakipro)

[ Pregleda: 3766 | Odgovora: 17 ] > FB > Twit

Postavi temu

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