Не так давно стал интересоваться MODx revo и по мере его изучения все дальше углубляюсь в его возможности. Информация по нему весьма хаотична и по мере погружения в него понимаешь, что бы сделать что-то хорошее нужно иметь уже большой багаж знаний в том числе и из ООП.
В статье наглядно и подробно описано как можно вызывать шаблон и поверхностное использование 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 написать тело и как то подвал (можно еще бы про подвал на этом примере, как он вызывается). Правильно я понял?
Читайте внимательно эту статью. Она очень многое объясняет.
Спасибо за развернутый ответ Александр. Николаю тоже спасибо)