< PHP template

Simple PHP template

Szerző: Sallai András

Copyright © Sallai András, 2014, 2019

CC Attribution-Share Alike 4.0 International

Web: http://szit.hu

Miért jó templatehasználat

Ha egy kódban keverednek a HTML és a PHP kódok nagyobb fejlesztéseknél bosszantó és átláthatatlanná teheti a kódot. Ekkor használjunk templetet.

A load_template_file függvény

<?php include("template.php"); $array = array('nev' => 'Nagy József', 'telepules' => 'Szolnok', 'fizetes' => 870000); echo load_template_file("list.tpl", $array); ?>
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Dolgozók</title> </head> <body> Név: {nev}<br> Település: {telepules}<br> Fizetés: {fizetes} </body> </html>
<?php function load_template_file($filename, $array){ $f = fopen($filename, "r"); $content = fread($f, filesize($filename)); fclose($f); $content = addslashes($content); $content = preg_replace("/{(.*?)}/si", "{\$array[\"\\1\"]}" , $content); eval("\$content=\"$content\";"); return $content; } ?>

Több részes template

<?php include 'helper.php'; echo load('head'); echo load('index'); echo load('foot');
<?php function load($template) { $templatePath = "templates/".$template.".tpl"; if(!file_exists($templatePath)) { echo "A $template nem létezik"; } return file_get_contents($templatePath); }
<!doctype html> <html lang="hu"> <head> <meta charset="utf-8"> <title>Valami</title> </head> <body>
</body> </html>
<h1>Valami</h1>

Változók cseréje a template fájlban

<?php include 'include/helper.php'; echo load('head'); $page = load('index'); $page = str_replace('{title}', 'Teszt', $page); $page = str_replace('{des}', 'Ez egy tesztweblap', $page); $page = str_replace('{city}', 'Szolnok', $page); echo $page; echo load('foot');
<h1>{title}</h1> <p>{des}</p> <p>{city}</p>

Stringek tömbben

<?php include 'include/helper.php'; echo load('head'); $page = load('index'); $contentStrings = array( '{title}' => 'Teszt', '{des}' => 'Ez egy tesztweblap', '{city}' => 'Szolnok', ); foreach ($contentStrings as $key => $string) { $page = str_replace("{$key}", $string, $page); } echo $page; echo load('foot');
<h1>{title}</h1> <p>{des}</p> <p>{city}</p>

Több nyelvű oldal és template

Többnyelvű oldal esetén a HTML része feliratait biztosan cserélni szeretnénk, az adott nyelv szövegére. Erre látunk egy rövid példát az alábbiakban.

<?php require_once('include/config.php'); require_once('include/helper.php'); require_once("languages/lang_".$app['lang'].".php"); //Betöltjük az index.tpl template fájlt: $page = load('index'); //Minden szöveget cserélünk: foreach ($lang as $key => $string) { $page = str_replace("{$key}", $string, $page); } //Mehet minden a képernyőre: echo load('head'); echo $page; echo load('foot');

A felhasználói felület által használt nyelv a config.php fájlban van meghatározva:

<?php $app['lang'] = "hu";

Az angol nyelvi fájl:

<?php $lang = array ( '{title}' => "Title", '{description}' => "Description", '{city}' => "City" );

A magyar nyelvi fájl:

<?php $lang = array ( '{title}' => "Cím", '{description}' => "Leírás", '{city}' => "Város" );

Template fájlok:

<h1>{title}</h1> <p>{description}</p> <p>{city}</p>
<!doctype html> <html lang="hu"> <head> <meta charset="utf-8"> <title>Valami</title> </head> <body>
</body> </html>