Все файлы шаблонов до сих пор мы просто помещали в папку templates. Однако, файлы шаблонов могут находиться и в отдельных папках. При назначении шаблонов, вы увидите их в списке наряду с шаблонами.
Допустим, мы имеем головной шаблон rows для добавления рядов секций страницы. В каждый блок с этим шаблоном можно вложить колонки на шаблоне cols. Поместим файлы rows.tdd и rows.tpl, как обычно, в папку templates. Файлы шаблона cols положим в папку templates/rows/.Тогда для автоматического назначения шаблона cols, нужно записать
rows.tdd$types[1]='block template(rows/cols, new)';
Как видно, вместо просто имени шаблона здесь указан путь к нему. Как указывать путь к шаблону, читайте далее.
При указании в дескрипторе путей к шаблонам или к папкам, в которых лежат шаблоны, применяется синтаксис Unix.
Путь к файлу в Unix
- Путь строится перечислением всех названий папок, встретившихся при движении к искомой папке или файлу. Разделителем служит слеш (/).
- Если строка начинается со слеша, она означает полный (абсолютный) путь от корневой папки. Во всех остальных случаях мы имеем относительный путь от текущей папки.
- Специальное обозначение папок:
/ Корневая папка .. Родительская папка . Текущая папка
Применительно к шаблонам, нужно сделать несколько уточнений:
Рассмотрим комплект шаблонов для интернет-магазина. На этот раз в папку (shop/) положим все файлы комплекта.
Компоновка этого шаблона следующая — слева находится меню навигации (шаблон nav), справа — товарный блок (шаблон goods). Шаблон goods, в свою очередь, состоит из блока о выбранных товарах/товаре (шаблон items) и других блоков на выбор.
Структура файлов и папок:
• templates/
• ads.tdd Шаблон для рекламы
• ads.tpl
• shop/
• catalog.tdd Каталог интернет-магазина
• catalog.tpl
• catalog/
• nav.tdd Меню навигации
• nav.tpl
• goods.tdd Контейнер для блоков с информацией о товарах
• goods.tpl
• goods/
• items.tdd Шаблон с товарами
• items.tpl
• analogs.tdd Шаблон о похожих товарах
• analogs.tpl
• complements.tdd Шаблон о сопутствующих товарах
• complements.tpl
• order.tdd Раздел оформления заказа
• order.tpl
• order/
...
• client.tdd Клиентский раздел (личный кабинет покупателя)
• client.tpl
• client/
...
• admin.tdd Административный раздел (аналитика, импорт, экспорт и т.д.)
• admin.tpl
• admin/
...
catalog.tdd
$types[1]="block(catalog/nav, new)";
$types[2]="block(catalog/goods, new)";
Шаблоны nav и goods будут назначены автоматически.
goods.tdd
$types[1]="block(goods/items, new)";
$types[2]="block(goods/)"; //Сюда можно назначить шаблоны на выбор.
//В списке мы сначала увидим шаблоны из папки goods/
$types[3]="block(/ads)"; //блок с рекламой (абсолютный путь)
//$types[3]="block(../../ads)"; //Вариант через относительный путь
При использовании css и js файлов с именем шаблона, пути из этих файлов указываются как обычно, то есть указывается относительный путь от css-файла к нужном файлу.
Файлы:templates/shop/goods.tpl шаблон
templates/shop/goods.css его стилевой файл
templates/shop/goods/cart.png изображение корзины
goods.css
.cart {background: url(goods/cart.png) no-repeat}
<div style="background: url(templates/shop/goods/cart.png) no-repeat"></div>Это связано с тем, что сам файл шаблона самостоятельно не работает, а используется для генерации контента из главного файла index.php. Для использования шаблонов другими сайтами, в шаблонах нужно писать так:
<div style="background: url(<?= Blox::info('templates','url') ?>/shop/goods/cart.png) no-repeat"></div>