В основной практике возможностей работы с CSS-стилями и подключаемыми компонентами, как правило хватает для создания сайта. Вместе с тем, описание Default будет неполным без рассказа о еще одном механизме, с помощью которого можно настроить свой шаблон прозвольным образом.
Прежде всего следует упомянуть о том, что существуют т.н. custom-файлы, которые могут подключаться в разных частях шаблона или расширять уже существующую функциональность. Ну и кроме того, для блогера будет доступно управление блоками с помощью плагина ушек: в шаблоне они также предусмотрительно прописаны.
Custom-файлы
Эти файлы расширяют возможности шаблона и подключаются автоматически. Файлы находятся в каталоге custom и это не обязательно будут php-файлы.
Стандартно в default-шаблоне не подключается ни одного custom-файла. Вместо этого присутствуют заготовки для вебмастера. Как обычно, для того, чтобы MaxSite CMS подключила custom-файл, в имени заготовки следует убрать ведущий символ подчеркивания.
Custom-файлы условно делятся на несколько групп и имеют разное предназначение. Некоторые файлы используются для включения в основное «тело» шаблона - в файле main.php. Например файл header-start.php подключится в шапке сайта перед всеми компонентами. А файл header-end.php - в шапке после всех компонентов.
Другие файлы, например my_options.php и my_options.ini служат для подключения дополнительных опций шаблона.
Смысл использования custom-файлов
В целом custom-файлы используются там, где стандартного шаблона будет недостаточно. Если бы не было custom-файлов, то пришлось бы редактировать основные файлы шаблона, которые будут затерты при обновлении MaxSite CMS. Например, если требуется подключить два сайдбара, то придется редактировать main.php и functions.php, как это обычно и происходит.
Но при испольовании custom-файлов делается это через файлы sidebars.php (в котором прописывается вывод сайдбаров) и my_functions.php (в котором регистрируем сайдбар для админки).
Теперь, при обновлении системы, файлы не затрутся. Плюсом, безусловно, является и тот момент, что редактирование custom-файлов гораздо проще, чем редактирование основных файлов шаблона. Система же сама разберётся, где какой файл подключить.
Custom-файлы для main.php
Файлы header-start.php и header-end.php подключаются соответственно перед и после компонентов в шапке. Если шаблон предполагает использование какого-то фиксированного блока, то его можно прописать в одном из этих файлов.
Файл content-start.php подключается в основном блоке main. Если есть какой-то блок, который должен располагаться вверху основного текста сайта и сайдабра, то его следует разместить в этом файле.
Файл main-out.php используется для организации вывода текстов. Стандартно в этом месте шаблона выводится переменная $MAIN_OUT, которая содержит весь вывод type-файла.
Файл main-out-end.php подключается в конце вывода основного текста. В нем удобно размещать какой-то блок, который будет выводиться внизу перед подвалом.
Файл sidebars.php используется, если нужно сменить вывод сайдбара в шаблоне. Стандартно в default используется только один сайдбар и, если нужно добавить еще один, то используем sidebars.php.
Файлы footer-start.php и footer-end.php подключаются в подвале перед и после компонентов.
Если вы делаете шаблон, то я бы рекомендовал оставить custom-файлы на откуп блогера, посколько для него это будет простой и эффективный способ добавить нужные блоки в шаблон, без переверстки. Например, можно разместить рекламу под всеми текстами в файле main-out-end.php.
Ушки в main.php
Впрочем, у блогера есть еще один механизм, позволяющий добавить произвольный блок в шаблон прямо из админ-панели. В main.php заранее прописаны ушки, которые не только дублируют custom-файлы, но и добавляют новые блоки.
- body_start прописана сразу после BODY.
- header-pre выводится перед шапкой.
- header-start аналог header-start.php
- header-end аналог header-end.php
- header-out выводится сразу после блока шапки
- content-start аналог content-start.php
- main-out-start выводится перед основным текстом
- main-out-end выводтся после текста
- footer-pre выводится перед блоком подвала
- footer-start аналог footer-start.php
- footer-end аналоги footer-end.php
- google_analytics и body_end выводятся перед закрывающим BODY
Данное разнообразие позволяет добавить произвольный код практически в любую часть шаблона. Например, если стоит задача добавить код GoogleAnalitycs, то создаём одноименную ушку и размещаем в ней код счетчика. Поскольку ушки в MaxSite CMS могут быть и исполняемыми (PHP), то тут открываются достаточно большие возможности.
Свои опции шаблона
Традиционно сложилось, что большинство шаблонов MaxSite CMS автоматически поддерживают опции default-шаблона. То есть вначале подключаются default-опции, после опции шаблона. Это позволяет избежать дублирование default-кода.
В новом default-шаблоне существует два файла опций: options.ini, в котором хранятся основные/базовые опции (используются в type-файлах) и options-template.ini, в котором хранятся дополнительные, например настройки компонентов, профилей и т.д.
Если вы делаете шаблон на основе Default, то есть смысл сохранить оба этих файла, а подключение своих опций сделать через custom/my_options.ini. В этом случае не придется ничего редактировать. Если же опции используют php-функцию (PHP_START ... PHP_END), то её следует разместить в custom/my_options.php.
Если же шаблон не будет использовать компоненты (и т.п.), то используем options-template.ini. В этом случае вебмастер уже сам определяет нужные опции.
Файл custom/my_functions.php
Как известно, в шаблоне файл functions.php имеет особую роль - он подключается не только во время работы самого шаблона, но и в админ-панели. Например здесь мы выполняем регистрацию сайдбара. Кроме того, здесь удобно располагать функции и настройки, которые будут доступны на этапе инициализаци системы. Скажем функция mso_set_val() переопределяет некоторые «переменные» системы.
Так вот: файл custom/my_functions.php является дополнительным файлом и подключается в functions.php. В своем шаблоне есть смысл использовать именно custom/my_functions.php, поскольку в шаблонном functions.php будут автоматически подключены функции default-шаблона (functions-template.php). Это довольно удобно, поскольку при обновлении MaxSite CMS шаблонный файл не затрется, но при этом получит все функции и возможности default-шаблона.
Свои мета-данные
Файл custom/my_meta.ini является дополнительным для шаблонного meta.ini. Поэтому нет особой разницы, где именно будут размещены мета-поля записи. Однако, размещение в каталоге custom упорядочивает ваш шаблон и по этому файлу будет сразу видно, что были какие-то изменения в метаполях.
Секция HEAD
В Default-шаблоне вывод секции HEAD реализуется с помощью функции mso_default_head_section(). Раньше эту секцию мы размещали в отдельном файле header.php и подключали в main.php. Но со временем данный файл получил довольно сложное программирование, поскольку в нём используется не только подключение стилей, js-файлов и meta-данных, но и какие-то новые опции и настройки. Поэтому, чтобы упростить задачу вебмастера и используется отдельная функция.
Если же по какой-то причине mso_default_head_section() не устраивает, то можно использовать файл custom/head-section.php. В main.php проверяется его наличие: если есть, то подключается, иначе используется функция.
Если же стоит задача просто добавить в секцию HEAD какие-то свои данные, то проще всего это сделать в файле custom/head.php - он автоматически добавится после основных css-стилей.
Но и это еще не всё. Для блогера доступна ушка head, которая также выводится в секции HEAD.
Использование шаблона DEFAULT
Для блогера:
- Настройка оформления доступна через CSS-стили, как через админ-панель, так и через дополнительные и заменяющие css-файлы.
- Можно использовать комбинации css-профилей для мелких изменений (например шрифт), так и готовые «темы» оформления.
- Произвольная комбинация блоков шаблона с помощью компонентов.
- Большой выбор предустановленных ушек, которые позволяют добавлять свои блоки в различные части шаблона.
Для вебмастера:
- Готовый каркас для нового шаблона.
- Готовое функциональное наполнение. Можно не заниматься сложным программированием. При соблюдении несложных правил именования файлов, система сама разберётся что и где нужно вывести.
- Отделение модульной сетки сайта от его наполнения. Гораздо проще отладить один блок, чем переверстывать весь шаблон.
- Готовые базовые CSS-стили: reset, default, plugins и helpers - все доступны «из коробки».
- Простой механизм добавления своих стилей.
- Произвольная «подстройка» частей шаблона под свои нужны.
- Свои файлы в одном месте - каталоге custom. Запутаться сложно.
Комментариев: 15 RSS
1Аноним07-11-2011 20:17
Спасибо за статью! Очень понравилась идея с my_ ... удобно, я как раз переделывал компонент и не хотел затирать старый, а тут просто подставил my_ и получилось и старый и новый вариант. Вообще с новым Default границ в создании шаблонов нет. Спасибо Max!
П.С. классно было бы, если бы сделать для своих стилей main-menu.css что-то типа my_main-menu.css (конечно можно хранить их в папки с плагином, но если плагин или шаблон обновлять не удобно)
2Аноним07-11-2011 21:45
Должен заметить, что код Аналитикса размещается в секции , а не в .
3Аноним07-11-2011 22:06
Это ошибочное замечание. Код GA должен размещаться перед закрывающим BODY.
4Аноним07-11-2011 22:25
А как же официальная позиция?
https://www.google.com/support/analyticshelp/bin/answer.py?answer=1008080&hl=ru&utm_id=ad
ну или хотя бы так?
http://clip2net.com/s/1iGMo
Максим обладает тайным знанием?
5Аноним07-11-2011 22:32
Официальная позиция довольно однозначна: «Обычно мы рекомендуем помещать код отслеживания Google Analytics на страницах непосредственно перед закрывающим тегом /BODY, чтобы посетители могли быстро загрузить страницу даже при низкой скорости соединения.»
http://www.google.com/support/analytics/bin/answer.py?hl=ru&answer=55574
6Аноним07-11-2011 22:35
И до кучи: «Код отслеживания предназначен для считывания данных со страницы после завершения загрузки ее содержимого. Поэтому фрагмент кода должен размещаться на странице непосредственно перед закрывающим тегом /body».
https://www.google.com/support/analyticshelp/bin/answer.py?answer=1012283
7Аноним08-11-2011 09:32
В целом неоспоримо.
Только можно словить проблемы при обработке кастомных целей и других дополнительных функций, так как в таком случае необходимо размещать код отслеживания ранее на странице чем вызов этих функций.
Подробнее про отслеживание тут:
http://www.google.com/support/googleanalytics/bin/topic.py?hl=ru&topic=11004
Ну, и опять же, справка Гугла:
http://www.google.com/support/googleanalytics/bin/answer.py?answer=75129
8Аноним08-11-2011 12:04
Ндя. Писал-писал комментарий, а он куда-то делся.
На самом деле устанавливая код в секцию body есть риск словить некорректную работу кастомных целей и кода отслеживания событий на странице.
Везде кроме приведенных Максимом мест рекомендуется вставлять в head, либо в body, но не в самый конец, а повыше.
Кроме того последние версии кода асинхронные, поэтому не должны тормозить загрузку страницы.
9Аноним08-11-2011 13:35
Насколько я помню, GA всегда и вставлялся в конец body. В любом случае, если такой вариант не устраивает, то прописать код можно и в ушке head.
10Аноним10-11-2011 14:30
Зачем в дефолтном шаблоне четыре type_foreach файла? Если позиционируется, что сайт можно делать с дефолтным шаблоном не перемещая его никуда, только прописав альтернативные стили и компоненты - то нельзя пользоваться type_foreach, потому что а вдруг в следующей версии в дефолтном шаблоне добавится ещё один форич и затрёт то, что сделал я. Или даже мне нужно сделать type_foreach\info-top.php - всё равно или копировать шаблон, или при обновлениях внимательно следить, чтобы именно этот файл не затереть.
11Аноним10-11-2011 19:27
Так сделано для совместимости во всеми шаблонами MaxSite CMS.
12Аноним13-11-2011 14:07
Ещё раз: я имею в виду, что если хочешь использовать type_foreach, приходится делать свой шаблон. Т.е. переименовывать дефолтный. В обязательном порядке, чтобы не затирать своих файлов при обновлении. А если бы весь код type_foreach был в type-файлах (как несколько версий назад) и type_foreach (не _type_foreach) каталог в дефолтном шаблоне был бы пустым, можно было бы не переименовывать дефолтный шаблон, а прямо в нём использовать свои type_foreach. Точно так же как прямо сейчас в нём можно сейчас использовать свои components, custom.
13Аноним13-11-2011 14:13
Простой пример. Допустим, мне нужно поставить два сайта. Для одного в дефолтном шаблоне прописать какие-то стили, а для другого ещё и изменить type_foreach\info-top.php и type_foreach\category-show-rss-text.php. В первом случае я могу прямо в дефолтном шаблоне всё сделать, а во втором обязан переименовать дефолтный шаблон и там уже прописывать стили и делать свой type_foreach. Потому что иначе начинаются сложности с обновлением. Один файл при обновлении точно затрётся, а другой - а вдруг в новой версии добавится и затрёт мои изменения?
14Аноним13-11-2011 14:23
До кучи. Если выключены скрипты, может, стоит спрятать смайлики по умолчанию? Всё равно при выключенных скриптах их нельзя вставить. Только вручную.
15Аноним13-11-2011 15:03
Предполагается так, что в default-шаблоне меняются прежде всего оформление (CSS), компоненты и custom. Type и type_foreach-файлы - то лучше делать отдельный шаблон на основе копии дефолтного.
Поскольку текущий type_foreach-файл info-top.php использует свое оформление, то оно не подходит для старых шаблонов, хотя бы уже по стилям и дополнительным картинкам. Поэтому в default шаблоне type_foreach-файлы используются ровно как и в любом другом шаблоне.