Content Management System "Ёжик"
Version 2.26.1402
A fully functional admin panel for managing any website content and settings. It displays view statistics, visitor logs, allows you to create backups, manage users, and more.
Each website page is a separate file. The system will understand PHP, Markdown, HTML, JSON, or plain text. All page settings are stored within the page, in regular PHP comments.
"Ёжик" - is a flat-file system. Everything is stored in files. Any data can be edited in a standard Notepad (or through the Admin Panel). The admin panel also allows you to edit images a little.
Just like the Admin Panel, pages support multiple language output options. Modules and templates contain "language constants" files. You can create and share your own translations.
Full commenting with "likes" and moderation is available. The comment module understands Markdown markup. Each comment is stored in a separate file.
The system allows new users to register independently. Roles and permissions are provided for them. Activity is tracked, and the ability to ban unwanted users is also available.
Create a ZIP archive of your website with one click. All pages deleted through the Admin Panel are automatically saved in a backup for later restoration. This is another advantage of the flat-file system.
Tags can be added to any page to link content beyond categories. Tags can be grouped. Just like pages, different languages are supported.
You can define a module output anywhere (either on a page or in a template). The most popular ones have already been created: "Menu," various "Galleries," "Tags" and "Comments" output, and a "Likes" module.
The only "door" into the system. Requests are verified, and if invalid, access is denied. The system doesn't store user passwords. Only hashes are stored, which change with each request.
PHP is a language with great potential. The system doesn't require learning third-party templating engines or frameworks. The only addition is native JavaScript, as it's indispensable.
You have the right to modify any file in the system to suit your needs. Look for flaws. Share your developments with everyone. The only limitation is not to require payment. You can only politely ask ☺.
"Ёжик" is built on the Albireo Framework.
Slightly customized and heavily redesigned, even before the Albireo CMS appeared.
The main difference from Albireo CMS - "Ёжик" is free., as permitted by the MIT license for the Albireo Framework
MAX doesn't even allow you to fully try out or evaluate the system before purchasing. Just promises that it will be "this way and that way". ☺
Carefully !
On the website of Ukrainian nationalist, all articles (in Russian ☺), since 2014, contain hidden text insulting the Russian nation or the Russian president.
Not a stupid person. I hope he doesn't mean any harm ...
The following features are inherited:
Dream Routing
Any page can have any URL. That is, what is specified in the page file will work that way. There's no need to tweak anything or edit other files: just specify the URL in the page file, and it works right away. Move the file to any folder—it doesn't matter—the page URL won't change until you change it. If a hardcoded page URL isn't enough, use the additional slug-pattern field, which allows you to use regular expressions. Just like in the "large" frameworks.
REST
When routing, you should consider not only the address, but also the HTTP sending method. Browsers only use the POST and GET methods, which means that to edit, for example, using AJAX, you need to use a regular POST request, but place a field with the method name inside it. This is a modern, practically standard, way of working with REST.
"Ёжик" also supports this. For example, there is a page with a form. It sends a regular POST request to this is the same address (URL). The request handler is placed in a file with the same address (URL), we only specify the method.
It doesn't matter which method is used; you can come up with any name ☺.
Smart Cache
Typically a cache has a lifetime. Say, 15 minutes. After this time, the cache becomes outdated and needs to be rebuilt. But in reality, the data in the cache may be perfectly valid, and its lifetime has nothing to do with data expiration. This method of working with cache is used universally, that is, everywhere—evaluation based on its lifetime.
In "Ёжик," everything is different. There is a directory pages, and the system looks at the last change in this directory, and if the requested cache is older, it marks it as invalid.
This means a very simple thing - you don't have to think about the cache as such at all. Change the page content—the cache will automatically rebuild itself. If there are no changes for three years, the cache will work perfectly all this time without updating.
Демонстрационные данные для 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