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

7 ноября 2011 г. Просмотров: 1498 RSS 15
MaxSite CMS » Создание своего сайта

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

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru friendfeed.com google.com yandex.ru
Комментариев: 15
  1. Спасибо за статью! Очень понравилась идея с my_ ... удобно, я как раз переделывал компонент и не хотел затирать старый, а тут просто подставил my_ и получилось и старый и новый вариант. Вообще с новым Default границ в создании шаблонов нет. Спасибо Max!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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

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

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

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

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

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

  10. 2011-11-10 в 16:30:54 | Аноним#10

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

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

  12. 2011-11-13 в 16:07:53 | Аноним#12

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

  13. 2011-11-13 в 16:13:43 | Аноним#13

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

  14. 2011-11-13 в 16:23:59 | Аноним#14

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

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

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

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

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена

Имя и сайт используются только при регистрации

Зарегистрируйтесь, чтобы получать уведомления о новых комментариях по email.

Авторизация Войти через loginza

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