Форум русской поддержки Joomla!® CMS
08.12.2016, 11:54:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Шаблоны компилируются?

 (Прочитано 696 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlonVLK
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« : 31.05.2015, 00: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
Профи
********

Репутация: +488/-86
Offline Offline

Пол: Мужской
Сообщений: 8720


любит наш народ всякое гавно...


« Ответ #1 : 31.05.2015, 00:56:37 »

Насколько я знаю - нет промежуточных файлов, обработка идет на лету.
Не думаю что процесс ресурсозатратный, так как обрабатывается буквально парочка регулярок.
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #2 : 31.05.2015, 01:01:40 »

При включенном кешировании, кешируются как модули так и страницы целиком
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #3 : 31.05.2015, 01:02:59 »

а в Smarty что-то компилируется?
Записан
AlonVLK
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #4 : 31.05.2015, 01:18:47 »

При включенном кешировании, кешируются как модули так и страницы целиком

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

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

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #5 : 31.05.2015, 01:28:28 »

<jdoc:include type="head" /> заменится выводом метатегов, скриптов, стилей и кастомных тегов
можете не сравнивать шаблонизатор Joomla и Smarty и подобные.
Это абсолютно разные вещи. И работаю они по разному.
В J парсятся блоки в шаблонизаторах синтаксис, понятно что J шаблон будет быстрее отрабатывать и без компиляции.
Здесь используется к примеру классная фишка при парсинге модулей.
Они парсятся и затем данные о всех модулях выводимых на странице выводятся одним запросом
Записан
AlonVLK
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #6 : 31.05.2015, 01:34:34 »

В J парсятся блоки в шаблонизаторах синтаксис

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

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

или нет?
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #7 : 31.05.2015, 01:45:23 »

libraries/joomla/document/html/html.php _parseTemplate()
Код
if (preg_match_all('#<jdoc:include\ type="([^"]+)" (.*)\/>#iU', $this->_template, $matches))
замееняется
head - блок выводит метатеги, скрипты, стили, кастомные теги расположенные внутри <head></head>
module - блок выводит модуль
modules - блок выводит позицию (группу) модулей
component - блок выводит компонент
message - блок выводит сообщения
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #8 : 31.05.2015, 02:35:12 »

В Smarty, как я понимаю, регулярные выражения используются для обработки свойств экземпляра класса smarty.

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

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

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #9 : 31.05.2015, 13:39:49 »

спасибо всем кто принял участие и давал разъяснения. Особенно Fedor Vlasenko
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet