Froggy-BLC (Book-Like CMS) #
λ++
λ λ
λ λ
Структура и подход
- 📚 Книга по C++ — статьи становятся разделами, главами и параграфами.
- 🧭 Гайды и статьи — древовидная структура служит навигацией.
- 📸 Личный сайт — каждая категория может быть разделом: рецепты, котик, заметки и т. д.
- 🕓 Блог — каждый день — это статья; год, месяц, неделя — уровни структуры (С возможностью публикации вступлений и предисловий).
🔧 Используемые компоненты

- 🔍 Simple HTML DOM — лёгкая библиотека для парсинга и модификации HTML-фрагментов с возможностью поиска элементов по CSS-селекторам. Используется в Шаблонах и Сниппетах.
- 📱 PHP Mobile Detect — определяет тип устройства (мобильное/планшет/десктоп) по заголовкам User-Agent. Служит для адаптации шаблонов и CSS без использования JavaScript.
- 🧼 HTMLPurifier — библиотека для глубокой фильтрации и нормализации HTML. Гарантирует соответствие XHTML 1.1 и защищает от XSS-атак, обрезая опасные теги и атрибуты.
- ✍️ CKEditor 4 — визуальный редактор, интегрированный в систему с жёсткой настройкой допустимого HTML. Обеспечивает удобное редактирование контента с учётом пользовательских прав.
- 🌈 Highlight.js — библиотека JavaScript для подсветки синтаксиса в блоках кода. Работает на клиентской стороне и поддерживает десятки языков программирования, конфигурации и разметки.
- 📝 RevisionMe — встраиваемая форма обратной связи для отправки замечаний, предложений или исправлений. Позволяет читателям мгновенно сообщать об опечатках, фактических неточностях и других мелочах, не покидая страницы. Упрощает редакторский процесс и повышает качество контента.
- 🖼️ Lightbox — лёгкий JavaScript-плагин для увеличенного просмотра изображений. Позволяет удобно открывать картинки в модальном окне с затемнением фона. Используется в статьях и галерее, автоматически активируется для всех элементов изображений.
Характеристики
- Файловая архитектура — не требует базы данных. Это делает систему переносимой.
- Поддержка до 8 000 статей — благодаря оптимизациям и кешированию промежуточных данных.
- Комментарии в виде дерева — как в LiveJournal, что даёт живость и логическую связность обсуждениям.
- Экономия ресурсов — продуманные решения по минимизации потребления оперативной памяти и CPU.
- Fail-safe поведение — защита от потери данных при авариях, особенно в файловых операциях.
- Поддержка мобильных устройств — автоматическая адаптация шаблонов под смартфоны.
Кеширование и производительность
Безопасность и надёжность
HTTP-Only Cookies
- HTTP-Only — что не даёт возможности украсть их через JavaScript, даже при XSS-взломе,
- Same-Site — нет возможности украсть их в атаке через подставленный Фрейм.
🔐 Сессии, привязанные к IP
🧂 Уникальное хэширование с динамической солью
📛 Защита от утечек и XSS в случае сбоев
📂 Fail-Safe файловые операции
ignore_user_abort(true)), что сводит к минимуму риск повреждения данных при сбоях, обрывах соединения и конфликтном доступе. Это особенно важно для CMS, построенной без СУБД. Даже если запись завершится с ошибкой — БД не пострадает, так-как запись шла в новый файл, а все файловые операции в системе — снабжены исключениями и безопасной остановкой при ошибках открытия/чтения/записи.🔒 Защита от Повторов Капчи и Её Обхода
🅰️ Типографика и «Кавычкер»
" и " → «…» с учётом вложенности HTML-тегов (стек), корректно обрабатывая void/self-closing теги (<br />, <hr />). При этом содержимое <code> заранее защищается плейсхолдерами (например " -- " и кавычки) и восстанавливается после типографирования — примеры кода не ломаются.🌐 Человекопонятные URL'ы (Human-Readable URLs)
Apache mod_rewrite путём разбора QUERY_STRING, что позволяет формировать чистые, читаемые адреса без необходимости использования .htaccess или специальных серверных модулей. Такой подход обеспечивает совместимость даже с нестандартными или ограниченными хостингами.- 🔒 Стабильность: работает независимо от веб-сервера и его настроек.
- 🛡️ Безопасность: не требует серверных переадресаций или уязвимых конфигураций.
- 👁️🗨️ Удобство: адреса легко читаются, копируются и передаются.
🗺️ Генерация sitemap.txt и sitemap.xml
- 📄 sitemap.txt — простой текстовый список всех ссылок на статьи. Этот формат поддерживается такими поисковиками, как Bing, и легко читается человеком. Каждая строка содержит отдельный URL. Генерация происходит при обновлении кэша структуры сайта.
- 🧩 sitemap.xml — расширенная XML-версия карты сайта, совместимая с Google и другими поисковыми системами. Помимо ссылок, содержит дату последнего изменения. Эта карта создаётся динамически и содержит CSS-стиль для человекопонятного отображения.
🔗 Постоянные ссылки (Permalinks)
🛠️ Панель Инструментов
- 🖨️ Версия для печати: ссылка с иконкой открывает оптимизированный для печати вариант статьи, без навигации и отвлекающих элементов.
- 📁 Список Файлов: позволяет просматривать загруженные на сайт документы. Каждый файл сопровождается кнопкой 🔗 для автоматического копирования ссылки, которую можно вставить в текст статьи или комментарий.
- 🖼️ Галерея: аналогично списку файлов, здесь отображаются изображения. Их ссылки также легко копируются одним нажатием.
Гибкость применения
- для технических энциклопедий и документации,
- для ведения дневника или блога,
- для небольших порталов с гайдами и советами,
- для проектов, которым важна автономность и предсказуемость поведения без серверных СУБД.
🎨 Поддержка шаблонов оформления и 🧩 модулей (Addons)
- 🎨 Шаблоны (Templates)
Шаблоны представляют собой полноценные макеты сайта, определяющие структуру и стили всех страниц. Они расположены в папке/TEMPLATES/и могут включать шапку, подвал, навигацию и динамические блоки. Это позволяет быстро сменить дизайн без изменения содержимого статей или логики системы. - 🧩 Модули (Addons)
Система поддерживает независимые расширения (дополнения), которые размещаются в папке/ADDONS/. Каждый модуль может подключаться к определённым хукам.
⚙️ Управление кэшем ресурсов
Формат данных и безопасность HTML-контента
📄 XHTML без обёртки
<html>, <head>, <body>. В результате данные представляют собой чистый структурированный фрагмент контента, пригодный для встраивания в шаблоны. (Без корневых тегов структуры страницы.)🚫 Защита от XSS
- Удаляются потенциально опасные теги, такие как
<script>,<iframe>,<style>,<object>и др. - Удаляются атрибуты, содержащие JavaScript (например
onclick,onerror,onmouseoverи пр.) - Оставляются только безопасные элементы контента: заголовки, абзацы, списки, таблицы, изображения, цитаты, ссылки, разделители и блоки кода.
- Все теги приводятся к строгому XHTML-1.1 с самозакрывающимися элементами, где это применимо.
👥 Разграничение доступа к HTML
- Гости могут писать только текстовые комментарии.
- Зарегистрированные пользователи и Админы могут использовать расширенный набор тегов для оформления комментариев: вставка таблиц, изображений, разделителей, а также публикация блоков кода с подсветкой синтаксиса.
🎥 Видео, цитаты и спойлеры
- Цитаты — с визуальным оформлением и указанием источника или автора;
- «Фоторамки» — рамка изображения с подписью, при наличии описания в alt=« »
- Спойлеры — сворачиваемые блоки для скрытия длинного текста или ответов;
- Шаблоны Clear и Nobr
- Счётчик Загрузок «Download»
- Инфобоксы — семантически правильные цветные блоки для выделения дополнительной информации, например:
- 🔵 Инфо — для кратких пояснений и дополнений;
- 🟢 Нотация — для примечаний к содержимому или особенностям использования;
- 🟡 Предупреждение — мягкая пометка об осторожности;
- 🔴 Риск — подчёркивает, что действия выполняются на ваш страх и риск.
- HTML-вставки — изображения, ссылки, таблицы, горизонтальные линии, списки и т. д.
🧠 Поддержка кода с подсветкой
✍️ Интеграция с настроенным CKEditor 4
- Удалены кнопки вставки Форм и экспорта в PDF.
- Встроены кастомные пресеты вставки цитат и блоков спойлеров.
- Добавлена кнопка вставки кода с выбором языка для подсветки синтаксиса.
- Интегрированы стили элементов форматирования и разметки.
- Размер Шрифта указывается в em.
- Уникальный конфиг редактора, расширяющий возможности, нацеленный на простоту и исключающий ошибки работы.
Вывод
Froggy-BLC — это пример минималистичного и в то же время мощного подхода к управлению знаниями и контентом. Она объединяет философию KISS, надёжность файловых структур и логичную древовидную модель представления данных.
Лицензии используемых Компонентов

- Simple HTML DOM
Лицензия: MIT License
Автор: S.C. Chen
Свободное использование, модификация и распространение при сохранении уведомления об авторских правах. - PHP Mobile Detect
Лицензия: MIT License
Авторы: Victor Stanciu и Serban Ghita
Можно использовать в любых проектах, включая коммерческие, без ограничений. - HTMLPurifier
Лицензия: LGPL v2.1 или новее
Автор: Edward Z. Yang
Разрешено коммерческое использование. Изменения в библиотеке должны быть доступны при распространении. - CKEditor 4
Лицензия: GPL, LGPL или MPL (на выбор)
Разработка: CKSource
Для использования в закрытых проектах рекомендуется LGPL или коммерческая лицензия. - Highlight.js
Лицензия: BSD 3-Clause License
Автор: Ivan Sagalaev и сообщество
Можно использовать в любых проектах, включая проприетарные. Требуется сохранить уведомление об авторстве. - Материалы из Stack Overflow и учебников
Лицензия: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Разрешено копирование и перераспространение при условии указания авторства и распространения на тех же условиях. - RevisionMe (форма обратной связи)
Сервис: revisionme.com
Назначение: виджет для отправки замечаний и предложений по содержимому сайта (исправление ошибок, опечаток и пр.)
Лицензия: используется как SaaS-сервис, согласно Terms of Service - Лицензия самой Системы Froggy-BLC
Лицензия: MIT License
Автор: Святослав Тимофеев (Trust / Set440 / Paulter Gates)
Свободное использование, модификация и распространение при сохранении уведомления об авторских правах.