Webmaster общности: Predpriemach.com | SearchEngines.bg

    Създаване на темплейт система без MySQL

    Автор: jooorooo

    Ето един урок, как лесно да създадем темплейт система без MySQL. От сега ще кажа, че трябва да сте поне на средно ниво в php за да имате представа какво ще правите. Обикновенно темплейт системите се сестоят от 3 файла.
    template.php - в него са настройките за темплейт системата, задават се име на темплеит, функция за замяна на таговете и други.
    index.php - това ни е индекса в него подреждаме таговете и заместителите им.
    template.html - ето го и темплейтчето ни. аз съм го задал с разширение html, но вие можете да го направите каквото си пожелаете. Въпроса е да го покажете в template.php и index.php.
    Ако имате повече от 1 страница, тоест index.php, не е нужно да създавате на всяка итделен template.php, а просто допълвате в съществуващия, като за всеки темплейт променливата трябва да е различна. в нашия случай е $page. Еми започваме с файловете, има и коментари в тях.
    
    template.php намира се в папка lib, демек lib/template.php
    <?php
    //създаваме функция за темплейт с променлива $page
    class Page
    {
    var $page;
    
    function Page($template = "template.html") { //задаваме името на темплейта
    if (file_exists($template)) //проверяваме дали имаме наличен този файл
    $this->page = join("", file($template));
    else
    die("Файл $template не беше намерен."); //ако го нямаме наличен, ще покаже съобщение, че липсва
    }
    
    function parse($file) {
    ob_start();
    include($file);
    $buffer = ob_get_contents();
    ob_end_clean();
    return $buffer;
    }
    
    function replace_tags($tags = array()) { //функция за замяна на таговете
    if (sizeof($tags) > 0)
    foreach ($tags as $tag => $data) {
    $data = (file_exists($data)) ? $this->parse($data) : $data;
    $this->page = eregi_replace("{" . $tag . "}", $data, //задаваме разделители за таговете { и }
    $this->page);
    }
    else
    die("Няма избрани тагове за промяна!"); //ако не сме задали тагове ще върне съобщение.
    }
    
    function output() {
    echo $this->page;
    }
    }
    ?>

    продължаваме с template.html, той се намира в папка themes/default/template.html
    В него няма какво да обяснявам, той е стандартен HTML код с тагове {tag} в него.

    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset={charset}">
    <title>{title}</title>
    </head>
    <body>
    <center>
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="800px">
    <tr>
    <td colspan="3" width="100%" height="65">{logo}</td>
    </tr>
    <tr>
    <td valign="top" width="160px" height="100">{left}</td>
    <td valign="top" width="480px" height="100">{main}
    <br>
    <br>
    {promenliva}
    <br>
    <br>
    {link}
    <br>
    <br></td>
    <td valign="top" width="160px" height="100">{right}</td>
    </tr>
    <tr>
    <td align="center" colspan="3" width="100%" height="25">{footer}</td>
    </tr>
    </table>

    ето го и последния ни файл. index.php, той се намира в главната ни директория.

    <?php
    require_once("lib/template.php"); //инклудваме функцията за темплейта
    
    $page = new Page("themes/default/template.html"); задаваме път до темплейта под променлива $page
    
    $promenliva = "Може и с променливи да се прави, вече е въпрос на вкус.";
    
    //заменяме таговете от темплейта
    $page->replace_tags(array(
    "charset" => "windows-1251",
    "logo" => "Лого",
    "title" => "Тест",
    "link" => "<a href=\"http://web-tourist.net\" target=\"_new\">Web-Tourist</a>",
    "promenliva" => "$promenliva",
    "main" => "Това е централната част",
    "left" => "Лява част",
    "right" => "Дясна част",
    "footer" => "Copyright © 2007 - Web-Tourist Tutorial"
    ));
    
    $page->output(); //затваряме темплейта. ако искаме да има втори го отваряме отново под друга променлива
    // в момента е под $page
    ?>

    това е всичко.
    Това е най-лесния начин за сигурна темплейт система.
    При проблеми и въпроси.. намерете ме из сайта или форума 🙂