Файлы шаблона

Как говорилось в разделе Основы, в минимальный набор файлов шаблона должны входить два файла: собственно шаблон .tpl и дескриптор шаблона .tdd. Остальные файлы предназначены для расширения функциональных возможностей шаблона.

Вообще, шаблону могут быть сопоставлены следующие типы файлов:

Имена всех этих файлов должны совпадать с именем файла шаблона. Никаких дополнительных настроек для инициализации этих файлов при этом не потребуется - достаточно просто поместить их в папку сайта templates.

Файл для описания шаблонов сайта

Как описание комплекта шаблонов, находящихся в подпапке, так и общее описание всех шаблонов сайта делайте в файле description.md (имя файла может быть также таким: !description.md). В первом случае файл помещайте в соответствующую подпапку (вы увидите содержимое этиго файла в подсказках под панелью замены шаблонов). Во втором случае - файл помещайте в общую папку для шаблонов templates.

Куда помещать произвольные пользовательские файлы?

В принципе, файлы изображений можно поместить в следующие папки: templates, datafiles, xfiles или в любые другие созданные вами папки, в том числе, вложенные в папки, названные выше. Однако, лучше придерживаться описанных ниже правил по размещению файлов изображений, медиа-файлов, да и вообще любых произвольных файлов.

  • Папка templates

    Не помещайте в папку templates файлы, относящиеся к контенту и файлы, предназначенные только для данного сайта, например, логотип сайта. Если вы решите скопировать всю папку templates для другого сайта, то вам придется заменять все такие файлы. Это, в обшем, не проблема, так как файлы придется заменять в любом случае, даже если они находятся в другой папке. Дело в другом — папкой temlates могут пользоваться другие сайты, о чем читайте ниже.

    Не помещайте в папку templates файлы, предназначенные только для данного конкретного сайта

    В папке templates (в также в ее подпапках) рекомендуется держать картинки, относящиеся только к общему дизайну сайта (фоны, элементы оформления).

  • datafiles — папка системных файловых данных

    В эту папку нельзя класть файлы вручную, так как она используется для файлов, помещаемых системой. В ней могут также автоматически создаваться подпапки с помощью параметра destination при объявлении данных типа file.
  • xfiles — папка произвольных файловых данных

    Все файлы, загружаемые в ручном режиме и касающиеся только данного сайта, рекомендуется помещать именно сюда.

    Естественно, загружать файлы можно с помощью FTP-клиента. Для упорядочивания данных, можно создавать подпапки.

    Система никак не контролирует эти файлы, за исключением закачки файлов через текстовый редактор. При закачке файлов через текстовый редактор (как картинок), файлы попадают в корень папки xfiles. При этом производится переименовывание в латиницу, а при наличии в папке файла с таким же именем, производится приписывание к имени нового файла численного окончания.

    Пример кода в шаблоне: <img src="xfiles/logo.png" />. Применен URL относительно главной страницы сайта.

Одна папка templates на нескольких сайтов

Несколько сайтов могут работать на одном комплекте шаблонов. Обычно такая ситуация возникает, когда делаются копии одного и того же сайта для разных городов.

Чтобы использовать шаблоны другого сайта необходимо:

  1. В файле index.php прописать конфигурационные переменные $templatesurl и $templatesdir, указывающие соответственно URL и файловый путь к папке templates, находящейся на сайте-доноре. Сайт-донор должен находиться на том же сервере.

  2. На сайте-акцепторе во всех путях вида 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';
    . . .
    
  3. Сторонние плагины (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>
    
  4. Когда вы делаете копию сайта, вы помимо всего прочего будете копировать и базу данных исходного сайта. Перед загрузкой базы данных на новый сайт, не поленитесь проверить ее на наличие строки "templates/", и замените его на соответствующий абсолютный URL сайта-донора.


Примечания


См. также