Система Управления Контентом "Ёжик"
Версия 2.26.1402
Полноценная "админка" для управления любым содержимым и настройками сайта. Отобразит статистику просмотров, логи посещения, позволит сделать бэкапы, управлять пользователями и пр.
Каждая страница сайта - отдельный файл. Система поймёт разметку PHP, Markdown, HTML, JSON или простой текст. Все настойки страницы хранятся в ней же, в обычных комментариях PHP.
"Ёжик" - это flat-file система. Всё хранится в файлах. Любые данные можно редактировать в обычном "Блокноте" (или через Админ-панель). Админка позволяет ещё и немного редактировать изображения.
Так же как Админ-панель, страницы поддерживают варианты вывода на нескольких языках. Модули и шаблоны содержат файлы "языковых констант". Вы можите сами создавать и делиться переводами.
Присутствует полноценное комментирование с "лайками" и модерацией. Модуль комментариев понимает разметку Markdown. Каждый комментарий хранится в отдельном файле.
Система позволяет самостоятельно регистрироваться новым пользователям. Предусмотренны "роли" и "разрешения" для них. Ведётся учёт активности и возможность забанить неугодных.
Создание zip-архива сайта одной кнопкой. Все удалённые через Админ-панель страницы, автоматически сохраняются в бэкап, для последующего восстановления. Это ещё одно приимущество flat-file система
К любой странице можно добавить метки (теги), чтобы связывать контент не только по категориям/рубрикам. Метки можно группировать. Так же, как и у страниц, поддерживаются различные языки.
В любом месте (на странице ли, или в шаблоне) можно прописать вывод модуля. Уже созданы наиболее востребованные - "Меню", различные "Галлереи", вывод "Тегов" и "Комментариев", модуль "Лайков".
Единственная "дверь" в систему. Проверяется запрос, и если некорректный - доступа нет. Пользовательские пароли система не хранит. Только хеши, которые меняются при каждом обращении.
PHP - язык больших возможностей. Система не требует изучения сторонних шаблонизаторов или фреймворков. Единственное дополнение - это нативный JavaScript, т.к. без него никуда.
Вы вправе менять под свои нужды любой файл системы. Ищите недочёты. Делитесь наработками со всеми. Единственное ограничение - не требовать оплаты. Можно только - вежливо попросить ☺.
"Ёжик" построен на базе Albireo Framework.
Немного кастомизирован и сильно переделан, ещё до появления Albireo CMS.
Главное отличие от Albireo CMS - "Ёжик" бесплатен., как это и разрешалось лицензией MIT для Albireo Framework
MAX не позволяет даже полноценно попробовать/оценить систему перед покупкой. Только обещания, что будет "так и эдак". ☺
Осторожно !
Все статьи на сайте украинского националиста (на Русском языке ☺), с 2014 года содержат скрытый текст с оскорблением Русской нации или Российского президента.
Не глупый человек. Надеюсь он не со зла ...
Следующие особенности унаследованы:
Роутинг «мечты»
Любая страница может иметь любой адрес. То есть, что указано в файле страницы, так и будет работать. Не нужно нигде ничего подстраивать или править другие файлы: просто указал адрес в файле страницы и он сразу работает. Перекладывайте файл в любую папку - это не важно - URL страницы не изменится, пока вы его не измените.
Если «жесткого» адреса страницы недостаточно, то используйте дополнительное поле slug-pattern, где можно использовать регулярные выражения. Так, как это принято в «больших» фреймворках.
REST
Роутинг должен учитывать не только адрес, но и http-метод отправки. Браузеры поддерживают только POST и GET, а значит, чтобы оправить например AJAX, приходится использовать обычный POST, только внутри его поместить поле с именем метода. Это современный, фактически ставший стандартом, способ работы с REST.
"Ёжик" тоже это поддерживает. Например есть страница с формой. Она отправляет обычный POST-запрос на этот же адрес (url). Обработчик запроса размещаем в файле с тем же адресом (url), только указываем ещё и метод.
Причем метод вообще без разницы какой использовать, можно придумать любое своё название ☺.
«Умный» кэш
Обычно кэш имеет время жизни. Скажем 15 минут. Через это время кэш устаревает и его нужно строить заново. Но на деле может оказаться, что данные в кэше вполне себе валидные и время его жизни никак не связано с устареванием данных. Такой способ работы с кэшем используется тотально, то есть вообще везде — оценка по времени его жизни.
В "Ёжике" всё по другому. Есть каталог pages, и система смотрит когда было последнее изменение в этом каталоге, и если запрашиваемый кэш старее, то отмечает его невалидным.
Это означает очень простую вещь — можно вообще не задумываться о кэше как таковом. Изменили содержание страницы — кэш автоматом перестроится. Если изменений не будет три года, то кэш прекрасно будет работать всё это время без обновления.
Демонстрационные данные для CMS "Ёжик"
Что бы понять, насколько "Ёжик" хорош (или неприемлим) - подглядите, как устроены демо-данные. Там же есть и документация.
Установка на локальный сервер - обычная разархивация. Когда попробуете, и станет всё понятно, и захочется пользовать "Ёжика" - просто скопируйте всё на хостинг.
Здесь не рассматриваю вопросы "КАК правильно ?" или "ЧЕМ лучше ?". Себя считаю делитантом по многим вопросам. Интернет огромен, а Мир удивителен - ищу информацию, пробую, делюсь.
"Ежли чё - заходи, подмогну."
P.S.
Пользую "Linux Mint" уже более 15 лет. Значения слов, типа "виндаус", "бесплатная-прога", "есть-кряк" - не понимаю. Чего и всем желаю ☺.
В примерах используется:
CSS немного кастомизированный, или сильно урезанный.
О демо-данных (что есть)
- Четыре раздела сайта с разными цветовыми стилями оформления.
- Скрытый (корпоративный) раздел, с под-разделами (департаментами).
- Сайт мультиязычный - "RU" и немного "EN" ☺.
- Разные разметки шаблонов - шапки, подвалы, боковые меню или без них.
- Страницы с тремя типами содержимого - "Обычный", "Markdown" или "Данные (по шаблону)".
- Модули "Меню", "Хлебные крошки", "Комментарии", "Теги (метки)", "Галлереи" и пр.
- Варианты страниц с модулями в разной комбинации.
- Парсером Markdown выбран "PHP CommonMark".
- Несколько пользователей с различными привилегиями (разрешениями).
- "Парочка" шаблонов для страниц с содержимым "Данные (по шаблону)".
- Служебные страницы (не попадающие в "карту сайта") - 404, с методами POST, AJAX и пр.
- Редактором страниц в Админ-панели, оставлен умолчальный - CodeMirror v.5
- Куча изображений в каталоге загрузок.
- Возможность быстро создать 1000 (тысячу) страниц - для теста производительности.
- Во всех шаблонах подключен JavaScript bs5_lightbox.js для создания лайтбоксов, который использует плагины Modal и Carousel от Bootstrap v.5. Таблица стилей небольшая - в файле custom.css. В разделе Записная книжка есть небольшой документ с пояснениями и примерами.
- Почти во всех шаблонах подключены JavaScript и CSS-таблица от PrismJS v1.29.0 для красивого оформления кода в тэге
<pre>...</pre> - Применены вариативные шрифты с урезанным набором символов (для уменьшения размера файла). В коллекции около пятнадцати шрифтов.
- Небольшая объясняловка, как кастомизировал CSS Botstrap. Внедрил загрузку шрифтов, обрезал сетку до шести, изменил цветовую карту и пр.
- Модуль Меню - по сути сборщик "ссылок_на_страницы" с выбранными параметрами. Можно использовать как "меню", или "самое популярное", или "ещё в рубрике", или "новые записи", или ... и т.д. и т.п
Замер производительности
На кажой странице, в левом нижнем углу, небольшая плашка выводит три параметра
0.00682 s • 993.28 K • XXL
- время, которое потратил PHP для обработки данных
- память, которую затратил PHP для обработки данных
- метка контрольной точки сетки Bootstrap
Замер памяти производится так же, как и в PHP Debug Bar и отличается от метода, предложенного MAXом в Albireo Framework и Albireo CMS
Если производить замер методом Albireo CMS, то получится примерно следующее:
0.00682 s • 662.28 K • XXL
Если производить замер методом Albireo Framework, то получится примерно следующее:
0.00682 s • 331.28 K • XXL
Учитывайте это при прочтении статей на сайте MAXа ☺
и не забудьте отключить "режим отладки" - в Админ-панели во вкладке "Конфигурация сайта".
Заинтересованным
Сайтостроительством занимаюсь переодически. Это хобби. Потому, для развития проекта, есть сильная необходимость в заинтересованных и увлечённых специалистах (особенно по JavaScript).
Призываю всех желающих присоединяться steller21@yandex.ru