Как сделать систему шаблонов?

Discussion in 'PHP' started by Fantom3D, 3 Jan 2010.

  1. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Я создаю свой сайт. И мне нужно создать систему шаблонов. Чтобы вместо images, index.php в корне это было в /styles/Название шаблона/тут и чтобы шаблоны можна было быстро менять через админку. Я что-то не понимаю, как такое реализовать, подскажите плиз =)
     
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Smarty в помощь
     
  3. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Юзай шаблонизаторы, smarty, к примеру.
    Лично я выдирал класс из DLУ и юзал.
    У меня даже в книге какой-то по пыху есть глава, посвященная созданию собственного простого шаблонизатора
     
  4. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    smarty я не особо понял, да и мне интерестно самому все сделать...

    m0Hze
    А можно, пожалуйста, поподробнее. Я вроде как еще новичек. =)
     
  5. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Я бы делал так например.
    Создал основной файл, где идет замена строк на вывод из БД...
    Например:
    content.php
    PHP:
    <?php  
    $style 
    "black_cat"

    $title "Заголовок страницы"
    $header "Крутая страница"
    $text "Тут короче всякий текст"
    $content file_get_contents($style."/page.html");

    $content preg_replace("#__TITLE__#",$title,$content);
    $content preg_replace("#__HEADER__#",$header,$content);
    $content preg_replace("#__TEXT__#",$text,$content);

    echo 
    $content;
    ?>
    Там же папка black_cat, где лежит файл page.html:
    PHP:
    <html>
    <
    head>
    <
    title>__TITLE__</title>
    </
    head>
    <
    body>
    <
    h1>__HEADER__</h1><br />
    <
    i>__TEXT__</i>
    </
    body>
    </
    html>
    Короче файл будет content.php будет заменять строчки __УКАЗАТЕЛЬ__ на вывод соотв. данных. Тоесть при создании шаблона конструируешь его код и в нужных местах ставшь указатели на вывод какнкретных данных. Конечно я привел бональный вариант...
    В результате будет:
    [​IMG]
     
    #5 LStr1ke, 3 Jan 2010
    Last edited: 3 Jan 2010
  6. Airborn

    Airborn New Member

    Joined:
    9 Aug 2008
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    Юзать для таких целей регулярки - зло.Намного кощернее будет юзать strtr,str_replace.Кстати, mTemplater, выдерни от туда функцию для обработки шаблона и все.
    _http://m0hze.ru/files/mtemplater.class.php
    PHP:
    include('mtemplater.class.php');
    $tpl = new mTempalter('tpl''tpl_c', array('right' => '}-->','left' => '<!--{'),$_SERVER['REMOTE_ADDR']);
    $tpl->create_tpl('index',array('LILO' => 'HEllo, admin!'));
    $tpl->display();
    //$tpl->clear_dir_if_ip();

    Аля заменитель строк в виде класса,удобно указывать разделители.
     
    1 person likes this.