MaxSite.org 11 лет
Блог вебмастера о сайтостроении
Внимание! Данная запись отмечена как устаревшая и может содержать неточную или неактуальную информацию!

Дополнительные возможности шаблона Default

MaxSite CMS / Общие вопросыПросмотров: 9409 (130)

В основной практике возможностей работы с 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

Для блогера:

  1. Настройка оформления доступна через CSS-стили, как через админ-панель, так и через дополнительные и заменяющие css-файлы.
  2. Можно использовать комбинации css-профилей для мелких изменений (например шрифт), так и готовые «темы» оформления.
  3. Произвольная комбинация блоков шаблона с помощью компонентов.
  4. Большой выбор предустановленных ушек, которые позволяют добавлять свои блоки в различные части шаблона.

Для вебмастера:

  1. Готовый каркас для нового шаблона.
  2. Готовое функциональное наполнение. Можно не заниматься сложным программированием. При соблюдении несложных правил именования файлов, система сама разберётся что и где нужно вывести.
  3. Отделение модульной сетки сайта от его наполнения. Гораздо проще отладить один блок, чем переверстывать весь шаблон.
  4. Готовые базовые CSS-стили: reset, default, plugins и helpers - все доступны «из коробки».
  5. Простой механизм добавления своих стилей.
  6. Произвольная «подстройка» частей шаблона под свои нужны.
  7. Свои файлы в одном месте - каталоге custom. Запутаться сложно.

Комментариев: 15 RSS

1Александр Шиллинг07-11-2011 21:17

Спасибо за статью! Очень понравилась идея с my_ ... удобно, я как раз переделывал компонент и не хотел затирать старый, а тут просто подставил my_ и получилось и старый и новый вариант. Вообще с новым Default границ в создании шаблонов нет. Спасибо Max!

П.С. классно было бы, если бы сделать для своих стилей main-menu.css что-то типа my_main-menu.css (конечно можно хранить их в папки с плагином, но если плагин или шаблон обновлять не удобно)

2Avdenago07-11-2011 22:45

google_analytics и body_end выводятся перед закрывающим BODY

Должен заметить, что код Аналитикса размещается в секции , а не в .

3MAX07-11-2011 23:06

Это ошибочное замечание. Код GA должен размещаться перед закрывающим BODY.

4Avdenago07-11-2011 23:25

А как же официальная позиция?

https://www.google.com/support/analyticshelp/bin/answer.py?answer=1008080&hl=ru&utm_id=ad

ну или хотя бы так?

http://clip2net.com/s/1iGMo

Максим обладает тайным знанием?

5MAX07-11-2011 23:32

Официальная позиция довольно однозначна: «Обычно мы рекомендуем помещать код отслеживания Google Analytics на страницах непосредственно перед закрывающим тегом /BODY, чтобы посетители могли быстро загрузить страницу даже при низкой скорости соединения.»

http://www.google.com/support/analytics/bin/answer.py?hl=ru&answer=55574

6MAX07-11-2011 23:35

И до кучи: «Код отслеживания предназначен для считывания данных со страницы после завершения загрузки ее содержимого. Поэтому фрагмент кода должен размещаться на странице непосредственно перед закрывающим тегом /body».

https://www.google.com/support/analyticshelp/bin/answer.py?answer=1012283

7Avdenago08-11-2011 10:32

В целом неоспоримо.

Только можно словить проблемы при обработке кастомных целей и других дополнительных функций, так как в таком случае необходимо размещать код отслеживания ранее на странице чем вызов этих функций.

Подробнее про отслеживание тут:

http://www.google.com/support/googleanalytics/bin/topic.py?hl=ru&topic=11004

Ну, и опять же, справка Гугла:

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

http://www.google.com/support/googleanalytics/bin/answer.py?answer=75129

8Avdenago08-11-2011 13:04

Ндя. Писал-писал комментарий, а он куда-то делся.

На самом деле устанавливая код в секцию body есть риск словить некорректную работу кастомных целей и кода отслеживания событий на странице.

Везде кроме приведенных Максимом мест рекомендуется вставлять в head, либо в body, но не в самый конец, а повыше.

Кроме того последние версии кода асинхронные, поэтому не должны тормозить загрузку страницы.

9MAX08-11-2011 14:35

Насколько я помню, GA всегда и вставлялся в конец body. В любом случае, если такой вариант не устраивает, то прописать код можно и в ушке head.

10Аноним10-11-2011 15:30

Зачем в дефолтном шаблоне четыре type_foreach файла? Если позиционируется, что сайт можно делать с дефолтным шаблоном не перемещая его никуда, только прописав альтернативные стили и компоненты - то нельзя пользоваться type_foreach, потому что а вдруг в следующей версии в дефолтном шаблоне добавится ещё один форич и затрёт то, что сделал я. Или даже мне нужно сделать type_foreach\info-top.php - всё равно или копировать шаблон, или при обновлениях внимательно следить, чтобы именно этот файл не затереть.

11MAX10-11-2011 20:27

Так сделано для совместимости во всеми шаблонами MaxSite CMS.

12Аноним13-11-2011 15:07

Ещё раз: я имею в виду, что если хочешь использовать type_foreach, приходится делать свой шаблон. Т.е. переименовывать дефолтный. В обязательном порядке, чтобы не затирать своих файлов при обновлении. А если бы весь код type_foreach был в type-файлах (как несколько версий назад) и type_foreach (не _type_foreach) каталог в дефолтном шаблоне был бы пустым, можно было бы не переименовывать дефолтный шаблон, а прямо в нём использовать свои type_foreach. Точно так же как прямо сейчас в нём можно сейчас использовать свои components, custom.

13Аноним13-11-2011 15:13

Простой пример. Допустим, мне нужно поставить два сайта. Для одного в дефолтном шаблоне прописать какие-то стили, а для другого ещё и изменить type_foreach\info-top.php и type_foreach\category-show-rss-text.php. В первом случае я могу прямо в дефолтном шаблоне всё сделать, а во втором обязан переименовать дефолтный шаблон и там уже прописывать стили и делать свой type_foreach. Потому что иначе начинаются сложности с обновлением. Один файл при обновлении точно затрётся, а другой - а вдруг в новой версии добавится и затрёт мои изменения?

14Аноним13-11-2011 15:23

До кучи. Если выключены скрипты, может, стоит спрятать смайлики по умолчанию? Всё равно при выключенных скриптах их нельзя вставить. Только вручную.

15MAX13-11-2011 16:03

Предполагается так, что в default-шаблоне меняются прежде всего оформление (CSS), компоненты и custom. Type и type_foreach-файлы - то лучше делать отдельный шаблон на основе копии дефолтного.

Поскольку текущий type_foreach-файл info-top.php использует свое оформление, то оно не подходит для старых шаблонов, хотя бы уже по стилям и дополнительным картинкам. Поэтому в default шаблоне type_foreach-файлы используются ровно как и в любом другом шаблоне.

Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

О сайте

Здесь вы получите самую полную информацию о создании сайтов на MaxSite CMS.