За последние 24 часа нас посетили 22779 программистов и 1051 робот. Сейчас ищут 693 программиста ...

Собственная реализация - класс создания шаблона.

Тема в разделе "Прочие вопросы по PHP", создана пользователем jei, 17 ноя 2014.

  1. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Пишу систему на пхп.
    Хочу реализовать там функцию или класс создания шаблона.
    Смарти и готовые шаблонизаторы использовать не буду не предлагать.
    Рассмотрю готовые классы если есть такие.
    MVC приветствую.

    А теперь подробнее.
    Допустим у нас есть кнопка создать шапку.
    До этого в боди ничего не было а при нажатий должен с генерироваться новый шаблон?
    И какая то метка указывать , что теперь этот шаблон главный.И если зайти на главную будет этот шаблон с шапкой.

    Вот думаю как же лучше организовать такую систему использовать лучше что то типо парсинга готового шаблона.И делать там вставли типо <parse shapka>тут пхп и штмл шапки</parse>
    Или же всё таки генерировать новые файлы шаблонов.

    Да шаблон мы с генерим, а потом допустим надо будет в него же добавить центр или футер.А в цент ещё что то.И что бы всё это учитывалось.То есть достаточно такая не простая система получается.

    Спасибо за внимание.
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Корневой элементы структуры - основной шаблон страницы. Он может иметь неограниченное (или ограниченно, смотря как у вас построено) число вложенных шаблонов. Для удобства формирования разметки можно принять что у шаблонов есть алиасы которые могут использоваться непосредственно в разметке.
    Не мыслите категориями "боди", "шапка". Вся суть шаблонизации сводится к тому что у вас есть некая иерархическая структура, сущность, которая при вызове метода визуализации выстраивается в определённую разметку, даже просто в определённый текст.
     
  3. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Типо этого?
    [​IMG]
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
  5. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Есть идея.Как напишу класс выложу.Вкратце расскажу.Буду теги назначать переменными.Шаблоны на лету генерировать или
    как файл.Наверное лучше как файл так как надо стили как то привязывать.Получается почти как у смарти :)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    пхп уже шаблонизатор
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну и бери тогда смарти. зачем тебе велосипед?
     
  8. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Тоже не однократно задавался многими вопросами и не стал изобретать велосипед и ставить всякие смарти, твиги и прочие якобы шаблонизаторы.
    Посидев подумав я пришел к одному выводу сделать шаблон без компиляции, но с возможностью использовать кеш на любое время или навсегда.
    index.html:
    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3.     <head>
    4.         <meta charset="utf-8">
    5.         <title>
    6.             Title
    7.         </title>
    8.     </head>
    9.     <body>
    10.         {if info}
    11.             <div>
    12.                 <p>
    13.                     Системные настройки:
    14.                 </p>
    15.                 {if system}
    16.                     <p>
    17.                         {key} => {value}
    18.                     </p>
    19.                 {/system}
    20.                 <p>
    21.                     Шаблонные настройки:
    22.                 </p>
    23.                 {if config}
    24.                     <p>
    25.                         {key} => {value}
    26.                     </p>
    27.                 {/config}
    28.             </div>
    29.         {/info}
    30.     </body>
    31. </html>
    index.php:
    Код (PHP):
    1. <?php $this->file('index');
    2. foreach($this->system() as $value) {
    3.     $this->ifs('system',array(
    4.         '{key}'=>$value->key,
    5.         '{value}'=>$value->value
    6.     ));
    7. }
    8. foreach($this->config() as $value) {
    9.     $this->ifs('config',array(
    10.         '{key}'=>$value->key,
    11.         '{value}'=>$value->value
    12.     ));
    13. }
    14. unset($value);
    15. $this->parse('index',true);
    16. echo $this->html('index');
    Вывод:
    Код (PHP):
    1. Системные настройки:
    2. index => index.php
    3. .......
    4. Шаблонные настройки:
    5. general => index.php
    6. .......
    Меня все устроило и я оставил.=)
     
  9. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Я только сейчас задумался смарти пишет что Smarty — компилирующий обработчик шаблонов для PHP.
    Только как то не укладывается.Насколько мне известно php не компилируемый язык :)
     
  10. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Smarty свои шаблоны компилирует в php. Так они назвали переделывание smarty синтаксиса в php код
     
  11. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    Ну это понятно.Ну не совсем корректное название.
    Компиляция (программирование) — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором.[1]
     
  12. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Напиши им, расскажи как сам считаешь
     
  13. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Компиляцией можно подразумевать не только " машинный код ". Может еще быть в других целях " Сборщик ".
    В их случае подразумевается, сборка из смарти конструкций в php конструкции. Этим и подразумевают компил.
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    в общем-то да, но не совсем так. в данном случае чистые инструкции пхп - низкий уровень а сама разметка шаблона - высокий. поэтому термин компиляция вполне применим.
     
  15. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
  16. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Да вы что серьезно? Я думал шаблоны давным давно в пучине небытия, то есть на помойке.

    И да, как выше отмечено, php для того в частности и сделан чтоб внутри хмтля оперировать. Кстати в полной аналогии с XSL.

    Добавлено спустя 11 минут 1 секунду:
    33 раза прочитал, не понял. А файлы из папки view тогда нафиг не нужны?

    Генерить хтмл имеет смысл там где данных столько же, или больше. Например если профтыкать все атрибуты формы и полей через проперти объекта, там же капец какая вьюха будет, и вьюх таких не напасешься. Тут выгоднее генерить из данных. Но если оформления гораздо больше чем данных - то берется хтмля, в него профтыкаются некоторые данные и в буфер.

    Что тогда такое шаблоны?
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Воу-воу! Потише с Джеем!
     
  18. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Для удобства!
    Не будет все вперемешку, мы делим логику на части... " php " крутится над ними сверху, а не прям в них.
    Этим мы не будем засорять серверные скрипты и будет чистота.
    Главное - не усердствовать, как смарти. Его логика мертва, от нее нет смысла вообще, какой понт делать из html язык программирования?
    А нет понту, абсолютно лишний мусор.