Avatar billede lakana Nybegynder
04. juli 2006 - 20:43 Der er 4 kommentarer og
1 løsning

Template system indbyggede kommandoer

Hvordan kan jeg smartest lave et templatesystem der tjekker op om nogle indbyggede kommandoer?

Jeg retter på alt der ligner dette mønster: {title}

Nu vil jeg bare indbygge nogle kommandoer, og disse kommandoer skal se således ud: {$test.?}

Det kan fx. være således: {$test.server.REMOTE_ADDR}

Der skal den så få fat i ip-adressen, vha. php's funktion: $_SERVER['REMOTE_ADDR']

Hvis ikke mønsteret på den indbyggede funktion ligner noget der er opgivet i koden, så skal den blot lade den KUNNE blive rettet (dette har jeg klaret).

Hvordan kan jeg smartest lave disse indbyggede funktioner?

--
jeg ønsker ikke et link til smarty's side :D
Avatar billede lakana Nybegynder
04. juli 2006 - 20:45 #1
et mønster skal ikke KUN kunne se således ud: {$test.server.REMOTE_ADDR}

der er også nogle indbyggede informationer som skal blive hentet fra min config-fil (blot nogle variabler).

mønsteret på disse kan fx. være: {$test.version}
Avatar billede lakana Nybegynder
04. juli 2006 - 20:50 #2
og er dette i øvrigt den smarteste måde, at ændre de steder i min templatefil jeg har defineret? hvis nu jeg har alle rettelserne i et array der hedder $vars

function display($path = "", $vars = array())
{
    ob_start();
    include_once($path);
    $content = ob_get_contents();
    ob_end_clean();
   
    foreach($vars as $variable => $value)
    {
        $content = str_replace("\{{$variable}\}", $value, $content);
    }
   
    return $content;
}
Avatar billede Slettet bruger
05. juli 2006 - 03:07 #3
Hvis du definerer dine erstatninger i to arrays, som dette:

$soeg = array();
$erstat = array();

$soeg[] = '{$test.version}';
$erstat[] = "Template system v 0.9";

$soeg[] = '{$test.server.REMOTE_ADDR}';
$erstat[] = $_SERVER['REMOTE_ADDR'];

så kan du erstatte foreach-løkken med denne ene linie:

$content = str_replace($soeg, $erstat, $content);

Og du kunne som sådan også bare returnere den med det samme i stedet for at overskrive den gamle $content.
Avatar billede lakana Nybegynder
16. august 2006 - 10:57 #4
svcar
Avatar billede Slettet bruger
16. august 2006 - 14:50 #5
Javel ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester