0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 861 Просмотров
*

AlonVLK

  • Новичок
  • 7
  • 0
Шаблоны компилируются?
« : 30.05.2015, 23:50:30 »
Изучал как делают шаблоны, как я заметил в разметке HTML не присутствуют теги РНР, за место них используются подобные конструкции:
Код
<jdoc:include type="head" />
<jdoc:include type="modules" name="breadcrumb" style="none"/>
<jdoc:include type="message" />

Как я понимаю в дальнейшем, когда кто то заходит на страницу, РНР при помощи регулярных выражений ищет эти конструкции и выполняет соответствующие действия, подскажите такую вещь, при каждом заходе будет перебираться код или же тут происходит компиляция, т.е. данные конструкции заменяются на конкретную РНР сущность, например:
Код
<jdoc:include type="head" />
// на
<?php include 'head.php'; ?>

и результат сохраняется в отдельные файлы и он уже подключается при заходе следующего пользователя? (ну по принципу шаблонизаторов Smarty и Twig)
К чему спрашиваю, просто интересно, каждый раз перебирать шаблон при помощи регулярных выражений, достаточно ресурсозатратный процесс, неужели нет компиляции (то, что ее можно организовать при помощи сторонних плагинов, это я и так догадываюсь, речь идет о стандартных средствах).
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: Шаблоны компилируются?
« Ответ #1 : 30.05.2015, 23:56:37 »
Насколько я знаю - нет промежуточных файлов, обработка идет на лету.
Не думаю что процесс ресурсозатратный, так как обрабатывается буквально парочка регулярок.
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Re: Шаблоны компилируются?
« Ответ #2 : 31.05.2015, 00:01:40 »
При включенном кешировании, кешируются как модули так и страницы целиком
*

capricorn

  • Практически профи
  • 1687
  • 105
Re: Шаблоны компилируются?
« Ответ #3 : 31.05.2015, 00:02:59 »
а в Smarty что-то компилируется?
*

AlonVLK

  • Новичок
  • 7
  • 0
Re: Шаблоны компилируются?
« Ответ #4 : 31.05.2015, 00:18:47 »
При включенном кешировании, кешируются как модули так и страницы целиком

Я вот залез в настройки, включил кеширование, в папке cache появились разные папки и файлы в них, но по содержанию в них нет файлов с HTML разметкой.
Мне просто было интересно как выглядят конструкции типа:
Код
<jdoc:include type="head" />
в РНР виде, в этом в принципе и есть суть вопроса.

а в Smarty что-то компилируется?
точно не знаю, я читал статью там где сравнивают эти 2 шаблонизатора, в обоих была графа компиляция.
вот статья - http://habrahabr.ru/post/128083/
« Последнее редактирование: 31.05.2015, 00:27:17 от AlonVLK »
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Re: Шаблоны компилируются?
« Ответ #5 : 31.05.2015, 00:28:28 »
<jdoc:include type="head" /> заменится выводом метатегов, скриптов, стилей и кастомных тегов
можете не сравнивать шаблонизатор Joomla и Smarty и подобные.
Это абсолютно разные вещи. И работаю они по разному.
В J парсятся блоки в шаблонизаторах синтаксис, понятно что J шаблон будет быстрее отрабатывать и без компиляции.
Здесь используется к примеру классная фишка при парсинге модулей.
Они парсятся и затем данные о всех модулях выводимых на странице выводятся одним запросом
*

AlonVLK

  • Новичок
  • 7
  • 0
Re: Шаблоны компилируются?
« Ответ #6 : 31.05.2015, 00:34:34 »
В J парсятся блоки в шаблонизаторах синтаксис

а что подразумевается под словом "блоки"? эта конструкция:
Код
<jdoc:include type="head" />

если да, так она вроде как ищется при помощи регулярного выражения и заменяется на что то конкретное, точно так же как выше перечисленных шаблонизаторах ищется при помощи регулярного выражения допустим такая конструкция:
Код
{include file='page_header.tpl'}
и заменяется на что то конкретное

или нет?
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Re: Шаблоны компилируются?
« Ответ #7 : 31.05.2015, 00:45:23 »
libraries/joomla/document/html/html.php _parseTemplate()
Код: php
if (preg_match_all('#<jdoc:include\ type="([^"]+)" (.*)\/>#iU', $this->_template, $matches))
замееняется
head - блок выводит метатеги, скрипты, стили, кастомные теги расположенные внутри <head></head>
module - блок выводит модуль
modules - блок выводит позицию (группу) модулей
component - блок выводит компонент
message - блок выводит сообщения
*

capricorn

  • Практически профи
  • 1687
  • 105
Re: Шаблоны компилируются?
« Ответ #8 : 31.05.2015, 01:35:12 »
В Smarty, как я понимаю, регулярные выражения используются для обработки свойств экземпляра класса smarty.

Об этом тема http://www.smarty.net/docsv2/en/language.modifier.regex.replace.tpl ?

Шаблонизация Joomla работает по другому принципу.
« Последнее редактирование: 31.05.2015, 01:39:17 от capricorn »
*

AlonVLK

  • Новичок
  • 7
  • 0
Re: Шаблоны компилируются?
« Ответ #9 : 31.05.2015, 12:39:49 »
спасибо всем кто принял участие и давал разъяснения. Особенно Fedor Vlasenko
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться