Acest tutorial arata cum puteti crea o simpla pagina (fisier) template care sa fie utilizat pentru pagini web in PHP.
Vom folosi doua fisiere: "index.php" cu scriptul PHP in care sunt definite datele ce vor fi adaugate in pagina, si "page.tpl" care contine template-ul, cod HTML cu expresii ce vor fi inlocuite cu date definite in "index.php".
Expresia adaugata in template, in codul HTML, are aceasta forma (un comentariu HTML):
<!-- CUVANT -->
- Aceasta expresie nu e afisata in pagina daca nu setati in PHP o valoare care sa o inlocuiasca, deoarece e tratata ca un comentariu HTML.

Codul pt. template, adaugat in "page.tpl" (cu HTML5)

<!doctype html>
<html>
<head>
 <meta charset="utf-8" />
 <title><!-- TITLE --></title>
 <meta name="description" content="<!-- META_DESCRIPTION -->" />
 <meta name="keywords" content="<!-- META_KEYWORDS -->" />
 <style>header, footer, section, aside, nav, article {display: block;}</style>
 <!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body>

<header id="header">
 <h1><!-- TITLE --></h1>
</header>

<section id="article">
<!-- ARTICLE -->
</section>

<section id="sidemenu">
 <nav><!-- SIDEMENU --></nav>
</section>

<footer id="footer">
<!-- FOOTER -->
</footer>
</body>
</html>

Codul pentru "index.php" (explicatiile sunt in comentariu din cod)

<?php
// array cu chei /cuvinte care sunt adaugate in template (in comentariu HTML)
// aceste elemente (initial fara valoare) vor contine date care vor inlocui comentariu HTML din template
$templ = array('TITLE'=>'', 'META_DESCRIPTION'=>'', 'META_KEYWORDS'=>'', 'ARTICLE'=>'', 'SIDEMENU'=>'', 'FOOTER'=>'');

// preia cheile din $templ ca sa fie adaugate in RegExp
$templ_k = array_keys($templ);

// Sablon /Tipar RegExp cu expresia folosita in template
$templ_rgx = '/<!-- ('.implode('|', $templ_k).') -->/i';

// setare /definire date in elementele din $templ, care vor inlocui comentariu corespunzator in template
// aceste date pot fi preluate dintr-o baza de date, fisier extern, array, etc.
$templ['TITLE'] = 'Cursuri gratuite: marplo.net';
$templ['META_DESCRIPTION'] = 'Descriere adaugata in meta tag';
$templ['META_KEYWORDS'] = 'Cuvinte, importante, din pagina';
$templ['ARTICLE'] = 'Articol, continut adaugat in corpul paginii';
$templ['SIDEMENU'] = 'Meniu: <ul><li><a href="https://marplo.net/" title="Cursuri gratuite">Cursuri gratuite</a></li></ul>';
$templ['FOOTER'] = 'Continut adaugat in subsolul paginii';

// preia template-ul
$tpl = file_get_contents('page.tpl');

// inlocuieste datele in template si afiseaza pagina obtinuta
echo preg_replace_callback($templ_rgx, function($m) { GLOBAL $templ; return $templ[$m[1]]; }, $tpl);
?>

Expresia:
$templ_rgx = '/<!-- ('.implode('|', $templ_k).') -->/i';
Creaza sablonul RegExp cu, cuvintele folosite in modelul din template ce va fi inlocuit cu date din PHP, aceste cuvinte sunt cheile adaugate in array-ul $templ. Sunt adaugate in RegExp separate prin "|" ca sa creeze un sablon ca acesta:
/<!-- (CUVANT_1|CUVANT_2|CUVANT_3) -->/i
- Aceasta Expresie Regulata se va potrivi doar cu modelul (comentariul HTML) din template format cu cheile /cuvintele adaugate in $templ, astfel, alte comentarii HTML nu vor fi luate in considerare.
- Extensia "/i" determina functia preg_replace_callback() sa evalueze expresia indiferent de majuscule sau litere mici.
- Prin adaugarea cuvintelor pentru template in array ca elemente cu valoare vida, se evita erorile in cazul in care nu sunt definite date pentru acel element, si va adauga valoarea vida in codul HTML.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
Creare si utilizare Pagina Template

Last accessed pages

  1. Curs si Tutoriale Ajax (3724)
  2. Limba spaniola curs online incepatori si avansati (13192)
  3. Curs de Miracole - Epilog (14)
  4. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (69897)
  5. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (33030)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2216)
  2. Curs HTML gratuit Tutoriale HTML5 (1595)
  3. Curs si Tutoriale JavaScript (1571)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1525)
  5. Curs CSS Online Tutoriale CSS3 (1401)