Итак, новая версия системы и перед тем, как вы будете обновлять свой сайт, нужно будет предварительно удалить или переименовать старый Default-шаблон. Если ваш сайт работает на Default-шаблоне, то лучше сделайте его копию, а только потом обновляйтесь. Это связано с тем, что в MaxSite CMS 108 довольно существенно обновился Default-шаблон, поэтому если обновлять поверх старого, то это приведёт к жуткой смеси файлов. :-)
Самое главное в этой версии, как вы уже поняли — это новый шаблон. Старый вариант базировался на моём шаблоне MF, только достаточно старой версии. Новая версия также базируется на MF, только самой последней версии — 12-й (я скоро сделаю её анонс).
Конечно же, новый Default-шаблон не будет иметь всех многочисленных блоков и модулей MF, но «ядро» и часть файлов у них общие.
Что принципиально отличает новый Default от старого?
В первую очередь это то, что он базируется на новейшем css-фреймворке Berry 4.1. Больше не будет игр с морально устаревшим Bootstrap. В Berry CSS модульный подход в Sass, который позволяет разделять стили по модулям, а также настройки в виде отдельных конфигурационных sass-файлов. До перехода к «модульному Sass» остаётся не так много времени (1 октября 2021 года), но у нас же уже всё к этому готово.
Шаблон теперь поддерживает темизацию дизайна. В ней только одна тема, но желающие могут сделать свою, просто скопировав дефолтную и через конфигурацию настроить цвета. После этого она переключается в админ-панели.
Аналогично можно менять css-стили главного меню. Сейчас там три варианта, которые подходят под разные шапки.
Эти вещи оценят те, кто делает шаблоны на заказ. Можно просто выделить тему дизайна отдельно, сохранив дефолтную: шаблон один, а дизайнов может быть несколько.
Компоненты шапки и подвала. Я их добавил из MF, сохранив нумерацию (header6, header7 и header11). Они подобраны так, чтобы показать разные возможности настроек через админ-панель. Это достаточно типовые варианты для любого сайта.
Новые компоненты module1/2 используются для размещения модулей юнитов в виде обычных компонентов. Эта фишка была только в MF, теперь доступна всем пользователям системы. Например можно взять произвольный блок Berry CSS и разместить в шапке или подвале. Обычно модули размещаются только для главной (например в виде лендинга), теперь же модули можно размещать и в шапке, и в подвале, и в тексте записи.
Для размещения в тексте произвольного модуля можно использовать новый шорткодmodule
. Также будет доступен шорткодinclude
с помощью которого можно подключать любой php-файл шаблона.
Особенностью MF (и нового Default) в том, что он использует модульный подход: можно наращивать возможности шаблона/сайта путём простого добавления модулей. В каталоге custom
могут размещаться дополнительные файлы, мета-опции для записей, просто опции шаблона, а также собственные плагины.
Шаблоны MF и Default нужно рассматривать как конструктор.
В комплект я специально включил плагин demo, который показывает как можно создать плагин шаблона.
Также новый плагин (он в custom-каталоге) — new_module с помощью которого можно быстро поставить любой модуль юнитов. По сути он делает копию модуля из каталога store в каталог modules, только можно указать другое имя модуля.
Каталог store — это хранилище модулей юнитов. Их довольно много, но в целом это всего лишь заготовки. Перед использованием модуль нужно скопировать в modules — именно отсюда MaxSite CMS его подключает. В исходном модуле обычно демо-данные, поэтому модуль (в modules) правится уже под свою задачу.
Также в комплект я включил сервисную страницу ваш-сайт/mfstore. На ней располагаются скриншоты всех доступных модулей из store и кнопка для быстрого копирования модуля в modules. То есть будет доступно два способа установки модуля: через mfsrore и через плагин в админке new_module.
Наверное стоит ещё отметить, что в комплект я добавил страницу ваш-сайт/cart для вывода корзины. Эта страница лишь заготовка, поскольку пока сложно понять какой ей нужен дизайн.
Что касается дизайна Default-шаблона, то он повторяет стили из MF, поскольку я не вижу смысла их разделять. Для создания нового цвета/дизайна делается новая тема, которая работает самостоятельно.
В качестве иконочного шрифта используется FontAwesome 5 — это css-профиль fontawesome5-lazy.css
. Но, кроме это всегда будет доступен шрифт IM. Это сильно усечённый вариант FontAwesome, который содержит только самые востребованные иконки: стрелки, соц.сети, служебные символы. IM-шрифт очень небольшой, поэтому загружается всегда отдельным файлом и это позволяет отрисовывать иконки на сайте намного быстрей, чем ждать загрузки FontAwesome. Поэтому предпочтительней использовать IM-шрифт, а если иконки нет, то уже FontAwesome.
Базовый шрифт OpenSans, в качестве дополнительного используется RobotoSlab. Для OpenSans предусмотрены несколько начертаний жирности: 300, 400, 600, 700 и 800. Сейчас модно их использовать в дизайне, так что используя этот шрифт, можно пользоваться классами Berry: t-bold300
и т.п.
Под капотом
Berry CSS 4.1 для тех кто сам работает с css-стилями через Sass. Да будет только такая схема — модульность по полной. Так что изучайте, пробуйте. Поскольку команда Sass решительно настроена именно на такой подход, то рано или поздно вся вёрстка будет через use/forward
. Изначально непривычно, но потом проблем не возникает, тем более, что я даю уже готовый инструмент с примерами и готовой структурой.
Плюс здесь очень большой — обновление и поддержка стилей происходит строго по модулям, что позволяет использовать их изолированно, без влияния друг на друга.
AlpineJS включена в комплект шаблона и подключается всегда (асинхронно). Я её рассматриваю как замену jQuery. Процесс длительный, поэтому обе библиотеки доступны в шаблоне, но код с AlpineJS получается красивым и компактным.
Также включена библиотека anime.js (различная анимация), но для её использования нужно самостоятельно подключить. Ну и несколько других js-файлов, которые могут использоваться в компонентах.
Из обязательных файлов, я наконец-то решился удалить modernize, поскольку она использовалась только для того, чтобы определить сенсорный экран (touch). По факту это не всегда работает и проблема не в JS, а в том, что до сих пор нет нормального API браузеров, поэтому я использовал простой js-код, который сейчас очень распространён. С учётом современных браузеров — это должно работать корректно.
Несколько моментов, связанных с генерацией миниатюр. В info-top-файлах приходилось прописывать размеры миниатюр вручную. И часто это приводило к большому «зоопарку» размеров, а значит и к бОльшему количеству файлов изображений. Сейчас появилась опция (шаблона) Размеры миниатюр, где задаются две пары размеров:
640/480, 800/600
Первая группа (640/480) это ширина и высота миниатюры для случаев, где предполагаются узкие колонки, например в 3-колоночном выводе.
Вторая группа (800/600) уже для широких колонок, например одна или две. Таким образом в info-top-файле достаточно решить какие именно будут колонки (узкие или широкие) и получить set/get-переменные для использования в коде. Приводить примеры не буду, просто посмотрите в php-файлах, как это используется.
Главное здесь то, что настройки вынесены на уровень админки и пользователь сможет сам настроить размеры миниатюр без правки php-файлов.
Также появился новый type_foreach-файл favicon.php
, где можно разместить код фавиконки например от этого html-генератора. Он будет выводиться вместо стандартного png-файла.
Изменения в MaxSite CMS
Кратенько опишу и изменения по самой системе с прошлой версии. :-)
Новая опция, где можно выбрать режим загрузки jQuery. О проблемах jQuery я уже несколько раз писал — и это один из первых шагов. Можно выбрать загрузку в HEAD, в конце BODY или вообще не загружать (то есть это ложится на сам шаблон).
В инсталяторе были разные фиксы, связанные с безопасностью. Существующих пользователей MaxSite CMS они не затрагивают. Также был ещё один фикс безопасности — xss-атака через svg-код. Достаточно специфичная вещь, но я это пофиксил.
Для юнита формируется уникальный хэш-ID в $UNIT_UID
. В частности его можно использовать для кэширования вывода юнита.
Исправлена максимальная дата публикации. В 2008 году я ограничил дату до 2020 года, поскольку это казалось очень далёким будущим. Ан-нет — вот оно и наступило. :-) Теперь максимальная дата считается как текущая + 10 лет.
Были переделки для PHP 8. Можно смело пользоваться.
Новая функция mso_urldir()
, которая принимает текущий каталог, а на выходе его url-адрес. Может использоваться в компонентах.
Новая функция mso_add_preload()
для формирования link rel="preload"
. За её счёт можно организовать предзагрузку файлов без блокировки рендеринга страницы и выполнения js-кода.
Были правки по функциям перевода, а также обновлён английский.
В плагине Ушки новая функция ushki_get_all_names()
через которую можно получить список всех ушек. Может использовать в ini-опциях.
В ini-файлах можно использовать замену %CURRENTDIR%
или php-переменную $COMPONENT
которые хранят последний компонент текущего каталога ini-файла. Это позволяет в ini-файлах привязывать опции к текущему каталогу, без необходимости править код файла.
Ну вот, пожалуй и все основные изменения. Ещё раз напомню — перед MaxSite CMS обновлением удалите или переименуйте старый default-шаблон. Все замечания и предложения вы можете оставлять на нашем форуме. Ну и подписывайтесь на telegram-канале. :-)
Комментариев: 3 RSS
1Артём07-05-2021 15:23
Прекрасная новость перед праздниками! Ура!
2Андрей07-05-2021 20:38
Спасибо, Максим!
Продолжаете всех нас радовать.
3Сега25-05-2021 20:40
Большое спасибо!!!