Версия файла 9/09/2011

Также см. http://maxsite.org/page/novyj-default-shablon-maxsite-cms

Default - лишь один из вариантов создания шаблона на MaxSite CMS. Вебмастер вправе использовать свой алгоритм и свои
наработки. Данный вариант не накладывает никаких ограничений на работу других шаблонов.


ВВЕДЕНИЕ
--------
Новый Default шаблон позволяет делать шаблоны двух видов:
	- в рамках default - в этом случае используется каталог default, в котором размещаются свои дополнительные файлы. 
	  Этот вариант удобно использовать, если основная правка и изменения лежат в css-стилях. Устройство шаблона таково,
	  что при обновлении MaxSite CMS измененные файлы не будут затёрты, а блогер получит новые возможности обновленного 
	  шаблона. Естественно, при таком варианте следует придерживаться установленных правил (об этом ниже).
	  
	- Отдельный каталог шаблона. В этом случае шаблон создаётся путем копирования default шаблона и все изменения производятся
	  уже в отдельном каталоге. Default-шаблон устроен так, чтобы после копирования полностью сохранить работоспособность
	  и функциональность. Однако следует учитывать, что существует определённые правила при копировании исходного default-шаблона,
	  которых желательно придерживаться. Например в default-шаблоне лучше всего оставить некоторые функции, и часть сложного
	  php-кода. В этом случае в новом шаблоне просто подключаются функции default-шаблона, что гарантирует совместимость 
	  с будущими версиями MaxSite CMS и при этом не требуется заботиться об обновлении своего шаблона. 


Перед началом работ следует ознакомиться с основными понятиями.


КОМПОНЕНТЫ
----------
Компоненты находятся в каталоге шаблона components представляют из себя обычные php-файлы. Функционально компонент является
отдельным самостоятельным блоком, который выводится шаблоне.

	- Компонент подключается в main.php и представляетс собой исполняемый php-файл
	- Компонент должен обладать собственными css-классами. Использование ID не приветствуется.
	- Компонент может использовать свой js. Файлы js следует размещать в каталоге components/js.
	- Компонент может подключать свои css-стили. Css-файл компонента располагается в components/css. Имя файла должно 
	  совпадать с именем компонента.
	- Компонент может создавать свои опции (ini-файл), который следует разместить в components/options. Если ini-файл 
	  использует PHP_START...PHP_END, то функцию опции следует разместить в php-файле в этом же каталоге. Имя файла 
	  совпадает именем компонента. См. пример компонента image-select.

Смысл компонента в том, чтобы разделить модульную сетку шаблона от его наполнения. В main.php задаётся html-структура 
шаблона, не заботясь о его функциональном наполнении. В шаблоне лишь прописывается несложный php-код, который отвечает 
за подключение компонентов. Какой именно этьо будет компонент зависит от выбора пользователя: компоненты произвольно
выбираются в Настройке шаблона. Именно поэтому для компонентов важно обеспечить коректное отображение в любом месте 
шаблона. Делается это за счет обрамляющих div-блоков и стилей, не зависимых от расположения компоненты в модульной сетке
шаблона.



ПРОФИЛИ CSS
-----------
Профиль CSS представляют собой обычные css-файлы, которые располагаются в каталоге шаблона css/profiles. Код профилей
выводится в html-секции HEAD шаблона после подключения основных css-файлов, что позволяет в профилях переопределять 
некоторые стили. Например в файле font-segoe.css переопределяется основной шрифт сайта, а в dark-theme.css переопределены 
некоторые цвета шаблона.

Таким образом вебмастер с помощью профиля может произвольно менять стиль оформления, не заботясь о сложном и громоздком 
style-all.css, содержащему все стили для всех элементов шаблона, плагинов, хелперов и т.п.



ПРАВИЛА ИМЕНОВАНИЯ ФАЙЛОВ
-------------------------
Для того, чтобы избежать замен изменённых файлов, следует избегать совпадения имён с default-шаблоном. Вместо этого 
лучше использовать предусмотренные расширения. Обратите внимание, что в шаблоне находятся заготовки файлов, которые 
начинаются с символа подчеркивания «_». Шаблон никак не использует эти файлы и они служат лишь заготовкой. Чтобы шаблон 
стал их использовать следует удалит ведущий «_». Это правило распространяется на все файлы шаблона.

Каталог custom:
	my_meta.ini - свои мета
	my_options.ini - свои опции
	my_functions.php - свои функции
	
	main_out.php - подключается, если используется свой код вывода
	sidebars.php - подключается, если используется свой код вывода сайдбаров
	
	header-start.php - в начале шапки
	header-end.php - в конце шапки
	content-start.php - в начале основного блока
	footer-start.php - в начале подвала
	footer-end.php - в конце подвала
	
	- подключаются в соответствующих частях. По возможности лучше использовать обычные компоненты, вместо этих файлов. 
	Использовать можно для сложных вариантов, когда файл должен подключаться всегда, не зависимо от выбора компонентов 
	пользователя системы.

При создании нового шаблона вне каталога default можно придерживаться или вышеприведенной схемы или использовать стандартные
именования. Например можно использовать meta.ini, вместо custom/my_meta.ini, поскольку алгоритм шаблона вначале проверит 
и подключит meta.ini, а уже после custom/my_meta.ini. В данном случае какой вариант использовать - решает вебмастер сам.


ПОДКЛЮЧЕНИЕ CSS
---------------
В секции HEAD подключение css-стилей производится по следующим правилам:

	1. Каталог шаблона css.
	2. Если присутствует файл css.php, то подключается он.
	3. Если нет, то подключается my_style.css.
	4. Если и его нет, то style-all-mini.css.
	5. После этого подключаются стили компонентов (components/css)
	6. Подключаются выбранные css-профили (css/profiles)/
	7. В завершении подключается css/add_style.css, если есть.

При создании нового шаблона вне каталога default оптимальней всего использовать свой my_style.css или style-all-mini.css 
(его сжатая версия). После, если потребуется вносить небольшие вариации, то делаются css-профили, которые блогер 
подключает в Настройке шаблона.


ОПИСАНИЕ ФАЙЛОВ ШАБЛОНА
-----------------------
* info.php - содержит информацию о шаблоне: автор, версия и т.п.

* index.php - т.н. диспетчер типов данных. Как правило этот файл не требуется изменять. В нём заключена логика подключения
  type-файлов.

* main-start.php - файл в котором включается буферизация вывода перед работой type-файла.

* main-end.php - файл в котором результат буферизации сохраняется в php-переменной. После этого идет подкючение main.php

* main.php - основной файл html-разметки шаблона. В нём, помимо html-кода выполняется подключение компонентов.

* header.php - выделенный в отдельный файл html-размерка секции HEAD.

* options.php - файл, обслуживающий опции шаблона. В нём происходит подключение нужных ini-файлов.

* options.ini - опции шаблона. Здесь описаны опции шаблона в вде секций стандартного ini-файла. Как правило в других 
  шаблонах происходит подключение options.ini из default-шаблона. Сделано это из соображений исключения дублирования. 
  
* options-template.ini - опции текущего шаблона. Разделение опций на два файла позволяет сторонним шаблонам использовать
  default/options.ini без необходимости удалять неиспользуемые опции.
  
* meta.ini - метаполя записей. Подклбючение и обработка метаполей осуществляется на уровне системы.

* functions.php - специальный файл, который автоматически подключается при инициальзации системы. Поэтому здесь 
  располагаются функции, которые используются как шаблоном, так и админ-панелью (или другими частями системы). Здесь 
  осуществляется регистрация сайдбара, переопределение некоторых переменных.
  
* functions-template.php - содержит функции шаблона. Файл подключается в functions.php. Вынесение функций в отдельный 
  файл сделано с целью упростить читабельность functions.php, а также предоставить возможность другим шаблонам 
  использовать функции из default.
  
* screenshot.jpg - скриншот шаблона. Всегда должен быть размером 250x200px. 



ПОРЯДОК СОЗДАНИЯ НОВОГО ШАБЛОНА ВНЕ КАТАЛОГА DEFAULT
----------------------------------------------------
1. Создаём новый каталог для своего шаблона.

2. Копируем в него все файлы из default, кроме (описание см. ниже):
	- каталога type
	- каталога _type_foreach
	- файла functions-template.php
	- файла options.ini

3. Копируем в свой каталог собственные компоненты, профили и т.п.

* Каталог type - получение данных типа. Подробнее см. http://maxsite.org/

* Каталог _type_foreach - заготовки type_foreach-файлов. Подробнее см. http://maxsite.org/

* Файл default/functions-template.php содержит функции для работы с шаблоном. Файл подключается в functions.php. 
  Следовательно в свой шаблон не нужно копировать functions-template.php, а подключать его прямо из default-каталога.
  
* Файл options.ini в default-каталоге содержит опции, которые являются дефолтными для всех шаблонов (как правило). Поэтому
  его использовать не желательно. Вместо него лучше использовать options-template.ini, который содержит опции относящиеся
  только к текущему шаблону. Следует отметить, что файлы опций подключаются в шаблонном options.php, который вебмастер
  может переопределить по своему усмотрению.

Кроме того при создании шаблона можно использовать «_»-файлы из каталога custom. В этом случае логика шаблона будет 
даже проще и не затираться при обновление шаблона.
