8 июня 2016 г., 20:05

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

Не так давно стал интересоваться 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 это лучше? просто не понятно пока как это сделать.
Кроме того это начало под другую статью, но пока что не понятно в этом моменте.
Почитайте эту статью. Должно помочь вам ответы найти. Модифицировать приведенный код совсем не правильно, так как это не шаблон, а контроллер.
Спасибо за ответы. Александр не расскажите подробнее? В плане как это использовать конкретнее.
{extends file=«layout.tpl»} {block name=«body»} Тут основной контент страницы {/block}
Понятно что он берет из layout.tpl, но что именно связано с блоками. Мы должны обернуть их в чанк как бы и выводить в нужных местах в layout.tpl? Или как это выглядит?
А простите кажется я понял что вы имели в виду. Вы говорили про то (условно), что бы запихнуть в layout.tpl к примеру шапку, в блоке body написать тело и как то подвал (можно еще бы про подвал на этом примере, как он вызывается). Правильно я понял?
Читайте внимательно эту статью. Она очень многое объясняет.
Спасибо за развернутый ответ Александр. Николаю тоже спасибо)

Добавить комментарий