Использование Smarty в MODX (формирование шаблона)

Jun 8, 2016

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

С прочтения о smarty появился вопрос касательно вызова шаблона. В статье наглядно и подробно описано как можно вызывать шаблон и поверхностное использование smarty. Но, будучи на начале изучения, появляются вопросы, на которые достаточно пока трудно получить ответ.

Вот когда мы создаем шаблон с:

<?php

$properties = $modx->resource->getOne('Template')->getProperties();

if(!empty($properties['tpl'])){
    $tpl = $properties['tpl'];
}
else{
    $tpl = 'index.tpl';
}

if ($modx->resource->cacheable != '1') {
    $modx->smarty->caching = false;
}

return $modx->smarty->fetch("tpl/{$tpl}");

То тут понятно что идет обращение к index.tpl, в котором в свою очередь и подгружается шаблон: {extends file=«layout.tpl»}

но что если шаблон разбить на три части. Пусть у него будет header.tpl, body.tpl, footer.tpl. Тем самым можно было бы создать шаблоны в которых подгружалось три его части. И соответственно менялось бы только body.tpl, а header и footer всегда были бы по сути без изменений. И для большего удобства еще обернуть как head {chunk name=«head»} и footer {chunk name=«footer»} в чанк, для быстрого редактирования. Предпологаю что можно было бы не плодить шаблоны, а написать просто условие, как и когда и где берется какая часть за место body.tpl, но вопрос не про это)

С разбитием на три части, это конечно получается уже что-то не modx, а тот же opencart… Но будет ли для modx это лучше? просто не понятно пока как это сделать.

Кроме того это начало под другую статью, но пока что не понятно в этом моменте.