Как избавиться от шаблона default

На начальном этапе разработки сайтов на основе tpl-шаблонизатора часто возникает проблема с выводом страниц по default-шаблону.

Разберемся откуда он вообще вылезает.

Во всех поставляемых в комплекте с дистрибутивом шаблонах используется сокращенный макрос %content%, который выводит содержание страницы в зависимости от ее типа. Для обычных текстовых страниц будет выведено поле визуального редактора, для раздела новостей - список новостей, для раздела каталога - список подразделов каталога или список товаров, для новости - ее содержание.

При этом для оформления используется шаблон default соответствующего модуля, например, для новостей это /tpls/news/default.tpl

Заставить UMI.CMS использовать свой шаблон очень просто, достаточно для конкретного типа страниц задать свой шаблон дизайна и в нем НЕ использовать %content%, а явно указывать требуемый макрос, например, %news lastlist('/novosti/','news')%

Чтобы получить шаблон news необходимо скопировать шаблон default и внести в него изменения в соответствии с требуемой версткой.

Однако дальше зачастую возникает проблема с выводом конкретной новости. Даже если для нее создать свой шаблон дизайна где указать %news view(%pid,'news')%, то новость отображается в шаблоне default. Почему?

Если внимательно посмотреть на блок view шаблона news, то там можно увидет макрос %content%. Вот он и является корнем всех бед. Надо заставить UMI.CMS выводить содержимое поля content страницы не используя данный макрос. Как это сделать? Точно также, как выводятся все другие поля, макросом %data getProperty()%. В данном примере запись могла бы быть такой: %data getProperty(%id%,'content','simple')%

Здесь мы указываем UMI.CMS вывести нам поле по шаблону simple. Что это за шаблон? Шаблон simple я придумал сам, он представляет собой копию /tpls/data/default.tpl , из которого удален вывод всех параметров, кроме значения выводимой величины. Помните, что демо-сайт UMI.CMS предназначен для демонстрации возможностей и знакомства с параметрами системы, поэтому совершенно необязательно сохранять все данные, которые есть в шаблоне. Конечно, можно было бы бы просто исправить сам шаблон default, но если в системе уже присутствуют сайты, то неизвестно точно что делал предыдущий разработчик и не использует ли он шаблоны по-умолчанию в своих целях.

Например приведу фрагмент кода шаблонов:

Исходный код /tpls/data/default.tpl

$FORMS['price'] = <<<END
[Price], %title%(%name%): %value%
END;

$FORMS['string'] = <<<END
[String], %title%(%name%): %value%
END;

$FORMS['wysiwyg'] = <<<END
END;

 

Код /tpls/data/simple.tpl

$FORMS['price'] = <<<END
%value%
END;

$FORMS['string'] = <<<END
%value%
END;

$FORMS['wysiwyg'] = <<<END
%value%
END;



=================
2012-04-03