Как говорилось в разделе Основы, в минимальный набор файлов шаблона должны входить два файла: собственно шаблон .tpl и дескриптор шаблона .tdd. Остальные файлы предназначены для расширения функциональных возможностей шаблона.
Вообще, шаблону могут быть сопоставлены следующие типы файлов:
Имена всех этих файлов должны совпадать с именем файла шаблона. Никаких дополнительных настроек для инициализации этих файлов при этом не потребуется - достаточно просто поместить их в папку сайта templates.
Как описание комплекта шаблонов, находящихся в подпапке, так и общее описание всех шаблонов сайта делайте в файле description.md (имя файла может быть также таким: !description.md). В первом случае файл помещайте в соответствующую подпапку (вы увидите содержимое этиго файла в подсказках под панелью замены шаблонов). Во втором случае - файл помещайте в общую папку для шаблонов templates.
В принципе, файлы изображений можно поместить в следующие папки: templates, datafiles, xfiles или в любые другие созданные вами папки, в том числе, вложенные в папки, названные выше. Однако, лучше придерживаться описанных ниже правил по размещению файлов изображений, медиа-файлов, да и вообще любых произвольных файлов.
Не помещайте в папку templates файлы, относящиеся к контенту и файлы, предназначенные только для данного сайта, например, логотип сайта. Если вы решите скопировать всю папку templates для другого сайта, то вам придется заменять все такие файлы. Это, в обшем, не проблема, так как файлы придется заменять в любом случае, даже если они находятся в другой папке. Дело в другом — папкой temlates могут пользоваться другие сайты, о чем читайте ниже.
В папке templates (в также в ее подпапках) рекомендуется держать картинки, относящиеся только к общему дизайну сайта (фоны, элементы оформления).
Все файлы, загружаемые в ручном режиме и касающиеся только данного сайта, рекомендуется помещать именно сюда.
Естественно, загружать файлы можно с помощью FTP-клиента. Для упорядочивания данных, можно создавать подпапки.
Система никак не контролирует эти файлы, за исключением закачки файлов через текстовый редактор. При закачке файлов через текстовый редактор (как картинок), файлы попадают в корень папки xfiles. При этом производится переименовывание в латиницу, а при наличии в папке файла с таким же именем, производится приписывание к имени нового файла численного окончания.
Пример кода в шаблоне:
<img src="xfiles/logo.png" />
. Применен URL относительно главной страницы сайта.
Несколько сайтов могут работать на одном комплекте шаблонов. Обычно такая ситуация возникает, когда делаются копии одного и того же сайта для разных городов.
Чтобы использовать шаблоны другого сайта необходимо:
В файле index.php прописать конфигурационные переменные $templatesurl и $templatesdir, указывающие соответственно URL и файловый путь к папке templates, находящейся на сайте-доноре. Сайт-донор должен находиться на том же сервере.
На сайте-акцепторе во всех путях вида templates/...
нужно заменить слово templates на
методы Blox::info('templates','url') или Blox::info('templates','dir').
Первый нужно использовать при создании URL, второй при указаниии абсолютных путей к файлам в файловой системе. Пример:
.tpl
<?php
//Blox::addToHead('templates/landing.css');
Blox::addToHead(Blox::info('templates','url').'/landing.css');
//require_once 'templates/popupForm/init.inc';
require_once Blox::info('templates','dir').'/popupForm.inc';
. . .
Сторонние плагины (jQuery, Bootstrap), шрифты и т.д. лучше подключать через CDN методами Blox::addToHead() и Blox::addToFoot(), например:
Blox::addToHead('https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
Если же сторонние плагины подключаются с сайта донора, то необходимо чтобы в http-ответе на запрос некоторых файлов сайта-донора был заголовок Access-Control-Allow-Origin.
В частности, если на сайте-акцепторе не работают шрифты, находящиеся на сайте-доноре, то в файле .htaccess сайта-донора нужно добавить запись:
.htaccess
<FilesMatch "\.(ttf|otf|eot|woff|woff2)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> </FilesMatch>
Когда вы делаете копию сайта, вы помимо всего прочего будете копировать и базу данных исходного сайта. Перед загрузкой базы данных на новый сайт, не поленитесь проверить ее на наличие строки "templates/", и замените его на соответствующий абсолютный URL сайта-донора.
Внутри папки templates файлы шаблонов можно собирать в подпапки.