Разделить PHP движок и шаблон

Тема в разделе "PHP", создана пользователем amenor, 22 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. amenor

    amenor Читатель

    Заблокирован
    Регистр.:
    3 фев 2009
    Сообщения:
    94
    Симпатии:
    17
    У меня есть какая никакая но своя cms. Сами понимаете шаблон вшит в php, т.е. всё вместе. Вот хотел бы сделать разделение, шаблон в одну папку, как в dle скажем.
    Посоветуйте что почитать по данной теме. По интернету полазил, но так как-то всё поверхностно и мало.
    Да и ещё вопрос, слышал что нагрузку это сильно увеличивает, так ли это?
     
  2. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Найди любой шаблонный движок или воспользуйся своим.
    Моё (как мне кажется самое простое) решение (для наглядности часть кода урезана:(

    lib/template.php:
    PHP:
    <?php
    ////////////////////////////////////////////////////////////
    // programmed by jID.
    //
    // last updated: 30.04.2008
    // description: Template handling class
    ////////////////////////////////////////////////////////////


      
    class template {
        var 
    $template="";     // templace contents
        
    var $form_file="";    // template filename

        // load template from file to $template
        
    function load($template_file) {
          
    $this->form_file=$template_file;
          
    $this->template=@file_get_contents($this->form_file);
        }

        
    // reload template from file $template
        
    function reload() {
          
    $this->load($this->form_file);
        }

        
    // replace key to value
        
    function replace($template_word$value) {
          
    $this->template=str_replace($template_word$value$this->template);
        }

        
    // return parsed template
        
    function content() {
          return 
    $this->template;
        }
      }
    ?>
    Главный шаблон index_tpl.htm:
    Код:
    <html>
    <head>
    <title>Пример - {header}</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    
    <body>
    <h3>{header}</h3><br>
    {content}
    </body>
    </html>
    
    Шаблон записи entry_tpl.htm:
    Код:
    <div>{entry}</div>
    Главный скприпт index.php:
    PHP:
    <?php
    require("lib/template.php");
    $content="";
    $main_tpl = new template;
    $main_tpl->load("index_tpl.htm");
    $main_tpl->replace("{header}""Заголовок");
    $entry_tpl = new template;
    $entry_tpl->load("entry_tpl.htm");
    for (
    $i=0$i<10$i++) {
      
    $entry_tpl->reload();
      
    $entry_tpl->replace("{entry}""Запись $i");
      
    $content.=$entry_tpl->content();
    }

    $main_tpl->replace("{content}"$content);
    echo 
    $main_tpl->content();
    ?>
    Во вложении весь пример.
     

    Вложения:

    • test.zip
      Размер файла:
      1,2 КБ
      Просмотров:
      21
    haiflive и amenor нравится это.
  3. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    amenor, совет: если хочешь сделать "как в dle", то и смотри, как сделано в дле. Лучше разобраться самому один раз и понять.
     
  4. waldicom

    waldicom Создатель

    Регистр.:
    15 мар 2009
    Сообщения:
    41
    Симпатии:
    3
    Наверное лучше воспользоваться устоявшимися решениями, например smarty.
    Нагрузка конечно увеличивается, тут приходится платить за удобство.
     
  5. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Smarty - не лучший шаблонизатор для новичка. И вообще, не самый лучший шаблонизатор.
     
  6. Raenor

    Raenor Ксенолог №1

    Регистр.:
    28 дек 2006
    Сообщения:
    153
    Симпатии:
    91
    Цитирую слова одного из своих наставников по части кодинга:

     
  7. amenor

    amenor Читатель

    Заблокирован
    Регистр.:
    3 фев 2009
    Сообщения:
    94
    Симпатии:
    17
    Тяжеловато как то всё для меня. А в dle с удовольствием бы позаимствовал идею как сделано у них, ну уж больно сдорово там всё наворочено.
     
  8. mikkitaki

    mikkitaki

    Регистр.:
    27 окт 2008
    Сообщения:
    163
    Симпатии:
    76
    Присоединяюсь, может кто-нибудь дать ссылку на толковую информацию для нуба, который немного знает html, php и хочет разобраться в cms. Тот же код для сапы вставляю на 50% методом научного тыка.
     
  9. ex3mer

    ex3mer Создатель

    Регистр.:
    19 ноя 2007
    Сообщения:
    21
    Симпатии:
    5
    Smarty на самом деле лучше всего. Хоть он и увеличивает нагрузку, но достаточно ужобен и прост в применении. Разобраться не особо сложно, прочитав любую книгу по этой теме.
     
  10. vaad2

    vaad2 Постоялец

    Регистр.:
    18 дек 2006
    Сообщения:
    60
    Симпатии:
    9
    Не соглашусь, хрень полная. Зачем на шаблон взваливать логику, условия и т.п. Какие-то дикие компиляторы. Чтобы заменить несколько полей? Это наз-ся пытались упростить работу и придумали новый язык...
    Лучше уж свой велосипед - простая замена по маркеру, и замена массивами (повторяющиеся элементы), например табличку отобразить
     
Статус темы:
Закрыта.