Shtyrman01 08 июня 2016 6 5
Не так давно стал интересоваться 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 это лучше? просто не понятно пока как это сделать.

Кроме того это начало под другую статью, но пока что не понятно в этом моменте.
5 комментариев
Fi1osof1
Fi1osof 08 июня 2016г в 23:26 #
Почитайте эту статью. Должно помочь вам ответы найти. Модифицировать приведенный код совсем не правильно, так как это не шаблон, а контроллер.
S
Shtyrman01 20 июня 2016г в 23:14 #
Спасибо за ответы.
Александр не расскажите подробнее? В плане как это использовать конкретнее.
{extends file=«layout.tpl»}

{block name=«body»}
Тут основной контент страницы
{/block}

Понятно что он берет из layout.tpl, но что именно связано с блоками. Мы должны обернуть их в чанк как бы и выводить в нужных местах в layout.tpl? Или как это выглядит?
Fi1osof1
Fi1osof 21 июня 2016г в 09:54 #
Читайте внимательно эту статью. Она очень многое объясняет.
S
Shtyrman01 20 июня 2016г в 23:27 #
А простите кажется я понял что вы имели в виду. Вы говорили про то (условно), что бы запихнуть в layout.tpl к примеру шапку, в блоке body написать тело и как то подвал (можно еще бы про подвал на этом примере, как он вызывается). Правильно я понял?

S
Shtyrman01 22 июня 2016г в 23:02 #
Спасибо за развернутый ответ Александр. Николаю тоже спасибо)
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.