Как устроены шаблоны. Разбираем на примере default шаблона.

Шаблон – это не просто дизайн и внешний вид сайта, шаблон – это общая совокупность функций публичной части интернет-магазина. С помощью шаблона можно манипулировать логикой работы движка и создавать новые обработчики событий.

В Moguta.CMS все шаблоны хранятся в директории сайта ./mg-templates/ и отвечают принципам паттерна программирования MVC.

1. MVC (Модель – Вид – Контролер)

В движке Moguta.CMS, программная логика отделена от внешнего вида страницы, это позволят не задумываясь о последствиях изменять HTML код так как это необходимо.

В папке шаблона Moguta.CMS могут существовать папки, переопределяющие стандартные сущности MVC, обрабатываемые движком:

Внутри этих папок могут находиться одноименные файлы переопределяющие работу страниц сайта, формируемых из файлов ядра и папки mg-core/.

В большинстве шаблонов для изменения внешнего вида сайта нам понадобится только папка views. Папки /models и /controllers могут потребоваться для реализации уникальной логики обработки страниц, например, добавления дополнительных полей в форму обратной связи и т.п. При разработке неподдерживаемого в дальнейшем шаблона, не рекомендуется переопределять модели и контролеры.

2. Два обязательных файла, без которых шаблон не будет воспринят как шаблон

  • template.php – каркас верстки сайта;
  • css/style.css – стили сайта;

Чтобы движок распознал новый шаблон и отобразил его в разделе выбора шаблона в админке, необходимо создать два таких файла в папке с шаблоном.

В template.php нужно вставить верстку макета сайта, подобную этой :

<doctype>
<html>
  <head>
  <?php mgMeta(); ?>
  </head>
  <body>
   <!--Элементы интерфейса  --> 
   <?php layout('content'); ?> 
  </body>
</html>

А в /css/style.css прописать стили для верстки шаблона. Файл стилей шаблона /css/style.css, а также стили плагинов активных в админке в разделе плагинов, будут подключены движком на месте вставки <?php mgMeta(); ?>

3. Верстка компонентов шаблона (layouts)

Папка /layout в пользовательских шаблонах содержит верстку HTML компонентов шаблона, а также HTML верстку писем-уведомлений с сайта. В данной папке можно создавать собственные компоненты верстки по аналогии с уже имеющимися. Если название файла совпадает с названием файла в папке mg-core/layout/ , то по приоритету будет обработан файл из папки шаблона. Подробнее о работе с layouts.

4. Файл 404.php

Название файла говорит само за себя. В данном файле должна располагаться верстка 404-й страницы с сообщением о несуществовании запрашиваемого контента.

5. Файл ajaxuser.php

Данный файл может понадобиться при обработке пользовательских ajax запросов к движку.

Класс находящися внутри файла предназначен для обработки пользовательских запросов и работы с базой данных сайта посредствам AJAX запросов.

Класс обязательно должен наследоваться от класса движка Actioner и содержать в себе пользовательские методы, вызываемые AJAX'ом.

Методы данного класса могут быть вызваны из JS скриптов шаблона следующим образом:

  $.ajax({
     type: "POST",
      url: "ajax",
      data: {
        action: "getSearchData", // название действия в пользовательском класса Ajaxuser
        actionerClass: "Ajaxuser", // ajaxuser.php - в папке шаблона
        param1: text,
     	  param2: text
       },   
     });

Где:

"getSearchData" – название метода в пользовательском классе Ajaxuser;

"Ajaxuser" – класс обработчик запроса в файле ajaxuser.php.

5. Файл functions.php

В файле functions.php шаблона можно прописать пользовательские PHP функции и использовать их в дальнейшем в файлах-представлений шаблона из папки views/. Здесь же можно прописать собственные обработчики хуков движка, аналогично работе плагинов.

6. Папки js и images

Дополнительные папки, в которых хранятся изображения и js для работы шаблона. В папке JS также могут быть размещены модифицированные файлы из папки mg-core/script/standard/js/ Подробнее о переопределении JS файлов движка. Папка шаблона images/ доступна для прососмотра встроенным файловым менеджером из панели управления в разделе редактирования шаблона. Поэтому в папке images/ могут появиться две папки .tmb/ и .quarantine/ с миниатюрами изображений созданные файловым менеджером (отключить их создание можно в файле config.ini).