Как использовать modxSmarty

Apr 16, 2015

Задача состоит в том чтобы быстро менять внешнее оформление целого сайта, при этом в каждом отдельном шаблоне могут быть разная HTML структура, тоесть нужно менять не просто CSS, но и шаблоны. По умолчанию все шаблоны сохраняются в БД и если сделать их статичними, то можно просто копировать с заменой tpl файлы. Но это отчасти не удобно, ведь старые шаблоны при этом затираются.

Другое дело использовать для этих целей modxSmarty, ведь там можно просто указать путь к другому шаблону, при этом и овцы целы и волк сыт, тоесть старый шаблон мы не удаляем, а просто указываем с какой директории брать файлы для нового шаблона. Весьма удобно.

Просмотрев уроки Николая я понял что там существовали некие тормоза из за использования стандарного подхода, когда шаблон сохраняется в БД и используются стандартные MODX теги.

При этом проверив файлы кеша по одному и другому ресурсу я не обраружил там стандартных тегов как было в уроке — видно разработчики MODX уже поправили это дело.

Вот ссылка на тестовый сайт — http://614937.doskadpk.web.hosting-test.net/

Главная страница со modxSmarty шаблоном

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{config name="site_name"} - {field name="pagetitle"}</title>
</head>
<body>
<h1>{field name="pagetitle"}</h1>
{snippet name="Wayfinder" params="startId=`0`"}
{field name="content"}
 <ul>
    <li>[^qt^] - Query Time - Shows how long MODx took talking to the database</li>
    <li>[^q^] - Query Count -Shows how many database queries MODX made</li>
    <li>[^p^] - Parse Time - Shows how long MODX took to parse the page</li>
    <li>[^t^] - Total Time - Shows the total time taken to parse/ render the page</li>
    <li>[^s^] - Source - Shows the source of page, whether is database or cache.</li>
</ul>
</body>
</html>

А Не главная — обычный шаблон MODX, который хранится в БД

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>[[++site_name]] - [[*pagetitle]]</title>
</head>
<body>
    <h1>[[*pagetitle]]</h1>
    [[Wayfinder? &startId=`0`]]
    [[*content]]
    <ul>
        <li>[^qt^] - Query Time - Shows how long MODx took talking to the database</li>
        <li>[^q^] - Query Count -Shows how many database queries MODX made</li>
        <li>[^p^] - Parse Time - Shows how long MODX took to parse the page</li>
        <li>[^t^] - Total Time - Shows the total time taken to parse/ render the page</li>
        <li>[^s^] - Source - Shows the source of page, whether is database or cache.</li>
    </ul>
</body>
</html>

Для создания Smarty шаблона я создал обычный шаблон, где вызывается сниппет modxSmarty со следующим содержимым

[[smarty? &tpl=`index.tpl`]]

При таком подходе использования modxSmarty есть определённая выгода, но при этом какой-то разницы в скорости работы я не увидел. Я понимаю что здесь нагрузка минимальная — вывод содержимого одной странички, но всё же.

А теперь сам вопрос — всё ли я делаю правильно?

Если что-то делаю не так, тогда подскажите как нужно.

Тоесть мне нужно назначать отдельный шаблон — отдельным ресурсам.