Сравнение MaxSite CMS и Albireo CMS

25-03-2025Время чтения ~ 8 мин.Albireo Framework / CMS 77

При разработке Albireo CMS я ориентируюсь на MaxSite CMS, поскольку итоговая цель — сделать так, чтобы Albireo CMS могла выполнять всё то, что есть в MaxSite CMS. Конечно сравнивать системы «в лоб» не совсем корректно, но я ориентируюсь на конечные задачи пользователя.

В качестве сравнения я использую именно MaxSite CMS по той причине, что в ней сразу есть всё то, что требуется для современного сайта. Поэтому сравнивать например с WordPress не имеет смысла — эта система совершенно «голая».

Различие по принципу работы

Albireo CMS — это файлы и база SQLite, а MaxSite CMS — это база MySQL. В этом плане MaxSite CMS всегда будет выигрывать по скорости, особенно если на сайте много сотен/тысяч записей. Albireo CMS требуется каждый раз обсчитывать все файлы записей и это один из основных «тормозов» системы (но я думаю над этим вопросом).

«Магическое число» для Albireo CMS начинается от 1000 файлов. Скорее всего после тысячи файлов/записей придётся думать о том, как структурировать записи так, чтобы уменьшить их количество. Тут на помощь может прийти поддержка мультисайтинга: можно выделить из общего сайта отдельные разделы и разместить их как отдельный сайт. При этом «ядро», шаблоны могут быть общими. То есть вопрос решается, другое дело, что всё-таки за этим нужно следить.

Степень свободы

В Albireo CMS практически нет никаких ограничений. Это касается и адресов страниц, типов данных, выполнения php-кода, подключения CSS и JS и многого другого. MaxSite CMS в этом плане намного «скромнее»: адреса привязаны к типам данных, для выполнения php-кода, требуется включать плагин, а для подключения сторонних библиотек, требуются небольшие манипуляции, например для подключения в HEAD или в конце BODY.

Можно сказать, что MaxSite CMS — это типовой представитель семейства систем, которые взяли за основу идеологию WordPress. Отсюда, собственно и все ограничения. Albireo CMS имеет совершенно другую идеологию.

Структуры данных

Принципиальное отличие Albireo CMS от других систем в том, что здесь нет предопределенных типов данных (рубрики, метки, главная, статичные страницы, блоговые и т.п.). В MaxSite CMS (и всех прочих аля-WordPress систем) существует деление на типы страниц, то есть система всегда требует определить тип страницы, а уже потом предлагает способ её вывода.

В Albireo CMS ничего подобного нет. Здесь основа — адрес и соответствующий ему php-файл. Если сильно утрировать, то Albireo CMS представляет собой роутинг, который связывает входящий URL и его handler — php-файл. Всё остальное — некая обвязка, «мясо», которое делает обработку страницы простым и удобным.

Именно поэтому в Albireo CMS можно использовать произвольные адреса для абсолютно любых страниц. Деление на рубрики, метки и т.п. — это всё условность.

Если, скажем, мне нужно сделать страницу рубрики, то я просто делаю php-файл как обычную страницу с желаемым адресом, где размещаю простой код для получения записей.

То есть в Albireo CMS всё идёт от страницы и произвольных URL, а в других системах всё идет от типа данных, которые завязываются на предопределенные шаблоны URL.

Устройство шаблонов

В MaxSite CMS (и других аля-WordPress) шаблон строится от типа данных: один вывод для рубрик, другой для главной и т.п. Конкретно в MaxSite CMS схема шаблона базируется на main-файле, который представляет собой модульную сетку, которая подключает разные части шаблона: компоненты, циклы вывода записей, header-заголовки и т.д. Также в MaxSite CMS есть возможность «вклиниваться» в цикл вывода записей через type_foreach-файлы, что несколько упрощает структуру шаблона.

В Albireo CMS используется другой принцип, который больше согласуется с принципами верстки сайтов. Есть layout-файл, внутри которого происходят все остальные подключения. Таким образом меняя layout-файл мы можем построить любое количество модульных сеток, а также произвольную логику прочих подключений. Более того можно вообще отключить вывод чего-либо и использовать код страницы в «чистую».

Поэтому в Albireo CMS все модули фактически изолированы и не связаны между собой. Здесь просто нет необходимости в сложном обслуживающем коде: если нужно выстрелить в ногу, то проблем не будет.

Кроме того, default-шаблон Albireo CMS очень легко расширяется без его изменений — в этом случае свои файлы располагаются в произвольном месте, не затрагивая сам шаблон.

Также в Albireo CMS есть отдельный общий каталог ресурсов, где хранятся дистрибутивы сторонних библиотек и шрифты. Это сильно упрощает их поддержку и обслуживание.

Admin-панель

Админки, конечно разные. В MaxSite CMS опции хранятся в базе MySQL, а значит большая часть админки — это именно обслуживание опций. В Albireo CMS все опции располагаются в отдельных php-файлах, поэтому в ней просто нет необходимости в подобных страницах.

Редактор Albireo CMS — это простой textarea, где можно редактировать любые файлы системы. Если нужно поменять опцию, то просто открываем файл и вносим изменения.

Плагины

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

Я считаю, что такая схема работы плагинов крайне ущербная, поскольку тянет за собой множество других «плохих решений». В MaxSite CMS, конечно уже нет возможности что-то менять, поэтому плагины — это неотъемлемая часть системы. Но в Albireo CMS нет плагинов от слова «вообще».

Формально есть несколько events (событий), которые срабатывают в функции вывода файла. Это примерно тоже, что и в php-фреймворках событие start. Оно нужно для того, чтобы выполнить некое действие, в частности подсчитать статистику.

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

Плагины MaxSite CMS

Ниже я привожу плагины MaxSite CMS и их «замена» в Albireo CMS с комментариями.

Это описание будет интересно пользователям MaxSite CMS.

Вначале плагины, которые предназначены для работы с текстом.

  • bbcode — Конвертирует тэги BBCode в HTML. Я считаю, что это уже неактуально.
  • faq — ЧАВО на сайте. Можно использовать стандартный DETAILS.
  • forms — Произвольные формы. Лучше использовать обычные html-формы.
  • lightbox — Лайтбоксы в Albireo CMS — есть.
  • parser_default, parser_markdown, parser_simple — есть TextSimple и ParseDown, но вообще можно подключить любую функцию по работе с текстом.
  • protect_pre — защита PRE/CODE - есть нативная поддержка в Albireo CMS.
  • psevdocode — произвольные замены. В Albireo CMS это делается через произвольные функции.
  • shjs — Подсветка кода. Есть через highlight.js
  • ushki — Ушки. Нет потребности.
  • auth_content — В Albireo CMS можно скрывать любые части текста.
  • editor_trumbowyg — визуальнй редактор. В Albireo CMS никогда не будет.
  • internal_links и perelinks — перелинковка. Не думаю, что это актуально сегодня.
  • popup — всплывающее окно. В Albireo CMS нет.
  • random_gal — Галерея из файлов. Заменяется простым php-кодом.
  • run_php — выполнение PHP. В Albireo CMS — нативное выполнение PHP.
  • multipage — разбиение на страницы пагинации. В Albireo CMS можно сделать отдельными страницами, где указывается иерархия.
  • smiles — Смайлики в тексте. Конечно на вынос.
  • spoiler — Заменяется DETAILS.
  • tabs — Это проще сделать через AlpineJS под свою верстку и дизайн.

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

  • addzakl — Закладки на соц.сервисы. Не уверен что это вообще актуально.
  • comment_button — кнопки к комментированию. В Albireo CMS из «коробки».
  • comment_smiles — Смайлики. Точно не будет.
  • loginza_auth — Авторизация Логинзы. Не требуется.
  • captcha и mkj_sc — Капчи. Пока думаю.
  • pagination, pagination2 и paginator — пагинации. Уже в комплекте.
  • rater — Рейтинг записи. Пока думаю.
  • tweetmeme_com — Блок от Твиттера. Кажется уже не актуально.

То есть из этой группы для Albireo CMS я ещё делаю (неспешно) рейтинги star и like для записей.

Следующая группа плагинов — это виджеты. Некоторые из них достаточно специфичные, поэтому не актуальны для Albireo CMS. Создание виджета для Albireo CMS несколько проще, чем в MaxSite CMS, поскольку виджеты — это отдельный каталог. Поэтому виджеты в Albireo CMS это просто php-файл и произвольный конфиг-файл сайдбара. Для виджета нет необходимости к чему-либо цепляться.

  • any_file — произвольный файл. Не актуально.
  • category — рубрики. Уже есть.
  • last_comments — Последние комментарии. В Albireo CMS это отдельная страница сайт/last-comments
  • last_pages и last_pages_unit — последние записи. Уже есть.
  • links — Ссылки. Есть универсальный favorites, где указываются произвольные ссылки.
  • login_form — Форма логина. Есть.
  • search_form — Форма поиска. Поскольку в Albireo CMS нет своего поиска, то возможен поиск через гугл.
  • tagclouds — Метки. Уже есть.
  • text_block — Произвольный блок. Уже есть.
  • authors — авторы. Не актуально.
  • calendar — календарь. Не уверен, что это нужно, поскольку есть отдельная карта сайта.
  • catclouds — облако рубрики. Не знаю нужен ли.
  • events — события. Слишком специфичен.
  • favorites — Ссылки. Уже есть.
  • page_comments — самое комментируемое. Пока думаю.
  • page_parent — связанные страницы. Очень специфично.
  • page_views — самое читаемое. Пока думаю.
  • random_pages — случайные записи. Есть как универсальный pages.
  • randomtext — случайные фразы. Думаю, что это не актуально.
  • rss_get — работа с RSS. Уже не актуально.
  • tabs — табы. Достаточно сложен, чтобы сделать универсальным.
  • top_commentators — топ комментаторов. Не актуально.
  • samborsky_polls — голосование. Уже есть.

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

  • meta_robots — Позволяет задать meta-тэг robots для любых адресов сайта.
  • open_graph — Протокол Open Graph
  • range_url — «Правильные» URL сайта
  • redirect — Редиректы
  • sitemap — Карта сайта
  • xml_sitemap — sitemap.xml

Все эти возможности уже есть Albireo CMS прямо из «коробки». Причём есть возможность управлять всей секцией HEAD и добавлять в неё любые другие данные. Например есть favicon, counter, которые удобно размещаются в сниппетах.

Итого

Если сравнивать системы по функционалу, то можно сказать, что Albireo CMS не так сильно уступает MaxSite CMS. Здесь важный момент ещё в том, что многие плагины в MaxSite CMS делались в то время, когда верстка была достаточно сложна. Поэтому и требовался какой-то способ упростить использование.

Современные возможности уже позволяют использовать готовые библиотеки или нативный код. Простой пример — плагин popup я вряд ли когда то будут реализовывать для Albireo CMS, поскольку есть простой код, который добавляется через copy/paste за 10 секунд см. «Модальные окна в Alpine.js». И это касается огромного количества сторонних разработок. Скажем меня всё подмывает добавить построение диаграмм через Mermaid, но с другой стороны, всё что нужно сделать, так это получить ссылку на svg-изображение и вставить на сайте. Что может быть проще?

Похожие записи
Комментарии (1) RSS
1 Віктор 2025-03-27 16:35:49

Роки три тому експерементував з Альбірео та вкладеними папками, коли створювалася тематична, а в неї закидувалися окремі сторінки у міру їх написання. Таким чином виникала ієрархія, яка відображалася на сторінці розділу з витягнутими slug, title і description для інформативності. Спосіб нехитрий, але легко реалізуємий в рамках цього фреймворку. Більше тоді бентежило відображення дерева в боковому меню.

З перерахованого вище не вистачає (як на мене) перемикання стилю теми типу "світла-темна", але то таке..

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