Современная, быстрая и удобная система управления сайтом

Новый Default-шаблон в MaxSite CMS 0.84

Архив записейКомментарии: 2Просмотров: 5425

В MaxSite CMS 0.84 мы обновили дефолтный шаблон. Предыдущий вариант появился в MaxSite CMS 0.54 и за прошедшие полтора года получил достаточно серьезное развитие и оброс массой новых возможностей.

Должен отметить, что в «старом» default-шаблоне впервые появилась концепция компонентов шапки и подвала, были предопределенные файлы, ушки, css-стили и js-скрипты, которые позволяют автоматизировать множество типовых задач вебмастера. Здесь же я предложил css-фреймворк, который содержит базовые стили, «заточенные» под особенности системы (type-файлы, плагины и т.п.).

После того, как я познакомился с LESS, я внедрил его поддержку на уровне ядра MaxSite CMS и разработал механизм «фоновой» компиляции less-файлов в обычный css-файл. Такой вариант позволяет вебмастеру вообще не задумываться о процессе компиляции — всё работает автоматом.

Но, хотя default-шаблон и предлагает очень хорошую функциональность, постепенно я натыкался на некоторые ограничения, которые «тормозили» дальнейшее развитие системы. Именно поэтому был предложен другой вариант построения шаблона, где все существующие ограничения были исключены.

Моей стратегической ошибкой при создании MaxSite CMS было придание default-шаблону особого статуса — его файлы могли использоваться в других шаблонах. Пять лет назад, мне и в голову не могло прийти, что такой вариант «расшаривания» файлов окажется самым узким местом... С другой стороны вариант подключения default-файлов оказался правильным с программной точки зрения, что на сегодняшний момент позволяет без проблем сохранить совместимость со всеми старыми шаблонами MaxSite CMS (после небольшой модификации).

Итак, принципиальное отличие заключено в способе использования «недостающих» файлов шаблонов. Старый вариант предполагал, что при отсутствии какого-либо нужного файла (например type-файл) в шаблоне, он автоматом подключался из default-шаблона.

Новый вариант предполагает, что недостающие файлы будут подключены из специального shared-каталога. То есть мы выделили из шаблона некие «общие» файлы и перенесли их в shared-каталог, полностью «разрубив» связь с default-шаблоном.

Данная возможность появилась в MaxSite CMS 0.80 (с 0.78 в виде тестирования) и за эти полгода шаблоны на shared-каталоге получили такие возможности, о которых я раньше даже и не пытался мечтать. :-)

В MaxSite CMS 0.84 default-шаблон строится тоже на shared-каталоге и из-за этого все остальные шаблоны, которые базировались на «default-схеме» перестанут работать. Чтобы их «оживить» необходимо выполнить несложную модификацию.

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

Кратко пройдусь по основным изменениям.

Лучшая организация файлов и каталогов

Всё, что логически связано должно быть в отдельном каталоге. В старом варианте default некоторые файлы оказались «бесхозными» и в какой-то мере не совсем очевидными для использования. Например в чём отличие между options.ini и options-template.ini? Понятно, что это какие-то опции шаблона, но в чём разница?

В новом варианте для опций существует отдельный каталог options.

Файлы и каталоги нового default

C компонентами такая же ситуация. Раньше все файлы были в куче, теперь каждый компонент в своём подкаталоге. Там же предопределенные options.ini для опций и style.css для стилей.

Аналогично было сделано и для type-файлов. Теперь каждый тип в отдельном каталоге. Такая структура позволила реализовать очень простую и эффективную диспетчеризацию подключаемых файлов. Раньше код index.php (именно здесь выполняется диспетчеризация) был довольно объёмным и запутанным, теперь это несколько строчек.

Компоненты

В новом default-шаблоне аж 27 компонентов! Это три меню, два слайдера, подвалы на 3, 4 или 5 сайдбаров, логотип в шапке, форма поиска и форма логина, название и описание сайта в разных вариантах, ссылки на соц.сети, случайное изображение для шапки или явно указанное, случайная цитата и даже дата. Всё это комбинируется между собой в произвольном порядке и настраивается прямо из админ-панели. В отличие от других систем, в MaxSite CMS выстроить шапку сайта или подвал можно без программирования как в аля-конструкторе.

CSS-стили

В новом варианте сохранилась схема подключения css-файлов шаблона. Типовой вариант предполагает использование css-фреймворка style-all-mini.css, который теперь расположен в shared-каталоге.

Касаемо style-all-mini.css отмечу, что он строится из less-файлов (они в комплекте системы) и в принципе можно собрать свой вариант css-файла. Хотя, на мой взгляд это лишено смысла, поскольку в style-all-mini.css мы убрали некоторые спорные моменты и теперь файл содержит только самый необходимый минимум. Главный плюс использования css-фреймворка в том, что он адаптирован под css-классы MaxSite CMS (плагины, type-файлы, main-шаблоны и т.д.). С другой стороны нет никаких проблем разместить файл style-all-mini.css в своем шаблоне со стилями какого-нибудь бутстрапа. При этом даже не нужно думать о его подключении: это в других системах вебмастер перелопачивает кучу кода — MaxSite CMS сама берет на себя подобную рутину.

Следует также отметить, что Default-шаблон использует адаптивный дизайн, а это значит, что он будет хорошо смотреться на любом размере экрана.

Type-файлы. Type_foreach-файлы

В deafult-шаблоне нет type-файлов, поскольку используются стандартные возможности shared-каталога. Но на этом моменте я бы всё-таки остановился. Раньше type-файлы были в одном каталоге «в куче». Это создавало разного рода проблемы, теперь же каждый type-файл находится в своём каталоге и это даёт возможность выделить из type-файла некие «модули» (units). Например главная страница в MaxSite CMS может выводиться несколькими способами:

  • лента последних записей
  • одиночная или указанные записи
  • последняя запись
  • записи из указанных рубрик
  • блоки рубрик: записи разбиваются по рубрикам
  • top-запись
  • произвольный текст

Плюс эти варианты в разных комбинациях и зависимость от прочих настроек (например выводить описание description).

Теперь все эти варианты разбиты по отдельным unit-файлам для типа home, что упрощает их понимание и поддержку. Раньше — это было куча сложного и запутанного кода (а как по другому-то?).

Что касается type_foreach-файлов, то они остались, но пришлось убрать их заготовки, поскольку их очень много (около сотни) и такое количество сложно поддерживать в актуальном состоянии. Поэтому единственный вариант, где можно посмотреть type_foreach-файл — открыть нужный type-файл.

Хотя про type_foreach-файлы стоит упомянуть об одной интересной возможности — создания произвольных info-top для любой записи или типа данных (type). Напомню, что любая запись состоит из инфо-блока (заголовок, дата, рубрика и т.д.), текста записи и нижнего инфо-блока (стандартно — пустой). Бывают задачи, когда для одних записей следует выводить полную информацию, для других — краткую, например только заголовок и дату. Теперь для info-top предусмотрен специальный одноименный каталог, где можно разместить разные варианты вывода инфо-блока (Шаблон заголовка записи). В Default предусмотрены два варианта: «Рубрика и заголовок» и «Только заголовок». Оба этих варианта выбираются при редактировании записей.

Шаблоны заголовков записи

Но и это еще не всё. Для info-top можно предусмотреть вывод в зависимости от типа данных. Для этого предназначены файлы info-top-ТИП.php, например info-top-page.php будет работать только для одиночных записей, а info-top-home.php — для главной страницы. Данные возможности позволяют практически произвольно менять инфо-блоки под любые задачи блогера.

Шаблонизатор Page_out

Я о нем уже рассказывал, теперь он стандартно подключается из shared-каталога и доступен по-умолчанию.

Для того, чтобы оценить преимущество нового варианта, достаточно открыть type_foreach/info-top.php в старом и новом default-шаблоне. C Page_out код стал гораздо читабельнее и проще.

Отмечу, что Page_out вовсю используется и в компонентах.

Создание миниатюр через Thumb

Библиотека Thumb также автоматом подключается и используется в шаблонах MaxSite CMS. Обзор возможностей я уже делал несколько раньше, поэтому лишь кратко обрисую что это даёт рядовому блогеру.

В редактировании любой записи есть дополнительное поле «Изображение записи». В Загрузках выбираем нужный файл и загружаем на сайт. Скопируем готовый адрес изображения в это поле. Всё. Дальше MaxSite CMS автоматически сделает подгонку изображения под нужный размер и разместит миниатюру в тексте записи.

При этом можно задать произвольные размеры и css-класс, который используется для дизайна или выравнивания (left, right). Замечу, что в отличие от других CMS, у нас создается честное изображение — готовый файл миниатюры. После того, как файл создан Thumb будет мгновенно отдавать его адрес, минуя дорогостоящие для сервера операции.

Профили оформления

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

Профили оформления

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

В шаблоне D2, который является рабочим каркасом для новых шаблонов присутствует профиль design-sky.css, демонстрирующий возможность смены цветов шаблона.

В будущем я планирую включить в Default-шаблон несколько вариантов цветовых схем шаблона.

Main-шаблоны (шаблон вывода)

Пожалуй, это самая лучшая вещь, которая есть в shared-шаблонах — возможность менять модульную сетку сайта.

В default предусмотрено три варианта:

  • Обычный (сайдбар справа)
  • Левый сайдбар
  • Без сайдбара

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

Более того, вариант вывода можно указать и для любой записи:

Выбор шаблона вывода у записи

Сами файлы расположены в каталоге main, при том, что файл main/main.php является основным (когда другой вариант не выбран), а в подкаталогах находятся прочие шаблоны вывода.

Где и как это использовать? Ну вариант с разным расположением сайдбара ясен и ёжику, а вот можно сделать main-файл, где исключить вывод шапки, подвала и сайдбара — в итоге получаем main-шаблон, где выводится только текст записи — типичная landing page.

Отдельно отмечу, что main-шаблоны могут не только указываться в настройках (шаблона или записи), но и можно задать их под каждый type-файл (тип данных).

WEB-стандарты

Еще одной особенностью shared-шаблонов является использование HTML 5 разметки. С точки зрения SEO — это неплохой плюс.

Кроме этого мы отказались от поддержки браузеров Internet Explorer. Версии 9 и 10 проверяются только «чтобы не развалилось и было похоже». Уже просто надоело оглядываться на этого «уродца» и мы решили, что если кто-то и пользуется IE, то пусть это будут его проблемы.

При этом мы стали гораздо смелее использовать CSS 3, что открывает совершенно замечательные возможности при верстке сайтов.

Что в итоге

В своей работе по созданию сайтов, мне часто приходится следить за новыми шаблонами, отслеживать тенденции и изучать возможности сложных premium-шаблонов. Мне всегда интересно сравнить как можно реализовать какую-то «фишку» на MaxSite CMS. Например смена цветов — это css-профили оформления, а смена модульной сетки — main-шаблон. Таким образом постепенно накапливаются готовые решения, которые постепенно предлагаются как типовые возможности MaxSite CMS и становятся доступны всем её пользователям. Например в виде нового default-шаблона.

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

1Apokal08-05-2013 06:00

Это просто круто, респект тебе! Удачи и дальнейшего развития!

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

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

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