Froggy-BLC (Book-Like CMS) #
λ λ
Froggy-BLC — это уникальная система управления сайтом, ориентированная на строгую и логичную древовидную структуру как статей, так и комментариев. Её философия близка к устройству книги по C++, но с гибкостью, позволяющей использовать систему как для технической документации, так и для персонального блога или домашнего сайта. Froggy-BLC — Академическая разработка.
Структура и подход

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

Система Froggy-BLC построена на принципе лёгкости и автономности, но при этом использует несколько тщательно отобранных сторонних компонентов, чтобы усилить функциональность без излишней зависимости от фреймворков. Все компоненты интегрированы с учётом производительности и безопасности.
- 🔍 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-плагин для увеличенного просмотра изображений. Позволяет удобно открывать картинки в модальном окне с затемнением фона. Используется в статьях и галерее, автоматически активируется для всех элементов изображений.
Эти компоненты выбраны за их стабильность, открытый исходный код и возможность тонкой настройки. Каждый из них выполняет строго ограниченную задачу, соответствуя философии минимализма и контроля, лежащей в основе Froggy-BLC.
Характеристики
- Файловая архитектура — не требует базы данных. Это делает систему переносимой.
- Поддержка до 10 000 статей — благодаря оптимизациям и кешированию промежуточных данных.
- Комментарии в виде дерева — как в LiveJournal, что даёт живость и логическую связность обсуждениям.
- Экономия ресурсов — продуманные решения по минимизации потребления оперативной памяти и CPU.
- Fail-safe поведение — защита от потери данных при авариях, особенно в файловых операциях.
- Поддержка мобильных устройств — автоматическая адаптация шаблонов под смартфоны.
Кеширование и производительность
Система активно использует промежуточное кеширование HTML и метаданных. Это снижает нагрузку при чтении, особенно при больших объёмах. Обновление кеша происходит при действиях администратора (добавление, редактирование, удаление), что делает повседневный просмотр быстрым и надёжным.
Безопасность и надёжность
Froggy-BLC демонстрирует нестандартно вдумчивый подход к безопасности, особенно в области работы с сессиями, хэшированием и защитой от сбоев.
🔐 Сессии, привязанные к IP
Система использует жёсткую привязку сессии к IP-адресу, что снижает вероятность сессионных атак типа session hijacking. Пользовательская сессия становится недействительной при смене IP, что повышает надёжность на уровне авторизации. Такая мера особенно уместна в среде с фиксированными или доверенными IP.
🧂 Уникальное хэширование с динамической солью
В системе реализован кастомный механизм солёного хэширования паролей, построенный на SHA-512 с XOR-добавкой, зависящей от имени пользователя. Это усложняет перебор, исключает возможность повторного хэша для одинаковых паролей и защищает от предсказуемых rainbow-таблиц.
📛 Защита от утечек и XSS в случае сбоев
Даже при возникновении DeadLock-ситуаций или аварийных остановках, Froggy-BLC умеет корректно завершать операции и не теряет промежуточные данные. Более того, при выводе HTML-сообщений об ошибках (интерфейс восстановления данных) исключается внедрение вредоносного кода — благодаря экранированию.
📂 Fail-Safe файловые операции
Работа с файлами сопровождается Сегментированными Чтением/Записью в Копию Базы Данных, блокировками, тайм-аутами, контролем прерываний (через ignore_user_abort(true)
), что сводит к минимуму риск повреждения данных при сбоях, обрывах соединения и конфликтном доступе. Это особенно важно для CMS, построенной без СУБД. Даже если запись завершится с ошибкой — БД не пострадает, так-как запись шла в новый файл, а все файловые операции в системе — снабжены исключениями и безопасной остановкой при ошибках открытия/чтения/записи.
🔒 Защита от Повторов Капчи и Её Обхода
Система Froggy-BLC реализует защиту от отключения и повторного прохождения CAPTCHA, исключая возможность многократной отправки одной и той же капчи или её обхода. Проверка выполняется строго один раз — при успешном вводе, капча сохраняется в список повторов и становится недействительной.
Сессионный код капчи жёстко привязывается к IP-адресу пользователя, что значительно снижает риск автоматического обхода с использованием внешних сервисов или прокси-сетей.
Кроме того, при авторизации зарегистрированных пользователей капча автоматически отключается, чтобы не мешать удобной отправке Комментариев. Это делает систему более дружелюбной для постоянных посетителей, не снижая уровень безопасности для анонимного комментирования.
🌐 Человекопонятные URL'ы (Human-Readable URLs)
🔧 Froggy-BLC использует эмуляцию Apache mod_rewrite
путём разбора QUERY_STRING
, что позволяет формировать чистые, читаемые адреса без необходимости использования .htaccess
или специальных серверных модулей. Такой подход обеспечивает совместимость даже с нестандартными или ограниченными хостингами.
- 🔒 Стабильность: работает независимо от веб-сервера и его настроек.
- 🛡️ Безопасность: не требует серверных переадресаций или уязвимых конфигураций.
- 👁️🗨️ Удобство: адреса легко читаются, копируются и передаются.
🗺️ Генерация sitemap.txt и sitemap.xml
Система Froggy-BLC автоматически создаёт два вида карт сайта, которые помогают поисковым системам быстрее и точнее индексировать ваш контент:
- 📄 sitemap.txt — простой текстовый список всех ссылок на статьи. Этот формат поддерживается такими поисковиками, как Bing, и легко читается человеком. Каждая строка содержит отдельный URL. Генерация происходит при обновлении кэша структуры сайта.
- 🧩 sitemap.xml — расширенная XML-версия карты сайта, совместимая с Google и другими поисковыми системами. Помимо ссылок, содержит дату последнего изменения. Эта карта создаётся динамически и содержит XSLT-стиль для человекопонятного отображения.
Карты сайта обновляются автоматически при изменении или добавлении статей, обеспечивая актуальность информации для поисковых ботов. Это улучшает SEO и снижает вероятность пропуска страниц при индексации.
🔗 Постоянные ссылки (Permalinks)
Все статьи в системе Froggy-BLC снабжаются уникальными постоянными ссылками (permalinks), которые остаются неизменными даже при изменении заголовков или структуры контента.
Эти ссылки автоматически включаются в страницы, как закладки (Bookmarks).
Благодаря такой структуре URL, Froggy-BLC обеспечивает устойчивость адресов для копирования.
Эти ссылки так же легко копируются нажатием 🔗 в верхней части страницы, в текстовом пути, над статьёй.
🛠️ Панель Инструментов
Панель инструментов в Froggy-BLC — это удобный набор функций, размещённый в виде наглядных иконок в верхней части страницы. Она обеспечивает быстрый доступ к ряду полезных возможностей:
- 🖨️ Версия для печати: ссылка с иконкой открывает оптимизированный для печати вариант статьи, без навигации и отвлекающих элементов.
- 📁 Список Файлов: позволяет просматривать загруженные на сайт документы. Каждый файл сопровождается кнопкой 🔗 для автоматического копирования ссылки, которую можно вставить в текст статьи или комментарий.
- 🖼️ Галерея: аналогично списку файлов, здесь отображаются изображения. Их ссылки также легко копируются одним нажатием.
🔐 Редакторы и Администраторы имеют возможность загружать небольшие безопасные файлы (например, PDF, TXT) и изображения (JPG, PNG, GIF, WEBP) через встроенный интерфейс. Все загруженные материалы проходят проверку расширения и фильтрацию, исключающую потенциально опасные форматы.
📎 Эти инструменты делают публикацию материалов в системе максимально удобной, а ссылки — стабильными и безопасными для использования на страницах сайта.
Гибкость применения
Froggy-BLC — это не просто CMS. Это конструктор смысловых структур. Она идеально подойдёт:
- для технических энциклопедий и документации,
- для ведения дневника или блога,
- для небольших порталов с гайдами и советами,
- для проектов, которым важна автономность и предсказуемость поведения без серверных СУБД.
🎨 Поддержка шаблонов оформления и 🧩 модулей (Addons)
Froggy-BLC предоставляет мощную и при этом простую систему оформления и расширения возможностей:
- 🎨 Шаблоны (Templates)
Шаблоны представляют собой полноценные макеты сайта, определяющие структуру и стили всех страниц. Они расположены в папке/TEMPLATES/
и могут включать шапку, подвал, навигацию и динамические блоки. Это позволяет быстро сменить дизайн без изменения содержимого статей или логики системы. - 🧩 Модули (Addons)
Система поддерживает независимые расширения (дополнения), которые размещаются в папке/ADDONS/
. Каждый модуль может подключаться к определённым хукам.
Такой подход разделяет оформление, функциональность и контент, упрощая поддержку, настройку и расширение сайта.
⚙️ Управление кэшем ресурсов
В системе реализован автоматический сброс кэша для JavaScript и CSS файлов при их обновлении. Это позволяет гарантировать, что пользователи всегда загружают актуальные версии скриптов и стилей без необходимости вручную очищать браузерный кэш.
Формат данных и безопасность HTML-контента
Froggy-BLC использует особый подход к обработке и хранению данных, опирающийся на фильтрованный XHTML 1.1 как внутренний формат представления контента.
📄 XHTML без обёртки
Система сохраняет только внутреннее содержимое HTML-документа, отбрасывая внешние теги вроде <html>
, <head>
, <body>
. В результате данные представляют собой чистый структурированный фрагмент контента, пригодный для встраивания в шаблоны. (Без корневых тегов структуры страницы.)
🚫 Защита от XSS
Перед сохранением контент проходит жёсткую фильтрацию HTML:
- Удаляются потенциально опасные теги, такие как
<script>
,<iframe>
,<style>
,<object>
и др. - Удаляются атрибуты, содержащие JavaScript (например
onclick
,onerror
,onmouseover
и пр.) - Оставляются только безопасные элементы контента: заголовки, абзацы, списки, таблицы, изображения, цитаты, ссылки, разделители и блоки кода.
- Все теги приводятся к строгому XHTML-1.1 с самозакрывающимися элементами, где это применимо.
Это гарантирует, что даже при публикации HTML от пользователей система остаётся устойчивой к XSS-атакам.
👥 Разграничение доступа к HTML
Права на публикацию HTML-контента тонко разделены:
- Гости могут писать только текстовые комментарии.
- Зарегистрированные пользователи и Админы могут использовать расширенный набор тегов для оформления комментариев: вставка таблиц, изображений, разделителей, а также публикация блоков кода с подсветкой синтаксиса.
🎥 Видео, цитаты и спойлеры
Система поддерживает встраиваемые шаблоны для популярных видеосервисов (YouTube, Dailymotion, Vimeo), которые автоматически преобразуются в безопасные фреймы. Также доступны:
- Цитаты — с визуальным оформлением и указанием источника или автора;
- "Фоторамки" — рамка изображения с подписью, при наличии описания в alt=" "
- Спойлеры — сворачиваемые блоки для скрытия длинного текста или ответов;
- Инфобоксы — семантически правильные цветные блоки для выделения дополнительной информации, например:
- 🔵 Инфо — для кратких пояснений и дополнений;
- 🟢 Нотация — для примечаний к содержимому или особенностям использования;
- 🟡 Предупреждение — мягкая пометка об осторожности;
- 🔴 Риск — подчёркивает, что действия выполняются на ваш страх и риск.
- HTML-вставки — изображения, ссылки, таблицы, горизонтальные линии, списки и т.д.
🧠 Поддержка кода с подсветкой
Система поддерживает сниппеты различных типов кодов для подсветки синтаксиса (HTML, CSS, JavaScript, C++, Python, Bash, конфиги, markdown и т.д.). Это делает Froggy-BLC особенно удобной для технических блогов, гайдов и книг.
✍️ Интеграция с настроенным CKEditor 4
Froggy-BLC включает в себя тонко настроенную версию CKEditor 4 — визуального редактора, адаптированного под требования гибкости движка. Редактор ограничен только безопасными элементами и атрибутами, совместимыми с внутренним XHTML-подформатом системы.
Ключевые особенности настройки:
- Удалены кнопки вставки Форм и экспорта в PDF.
- Встроены кастомные пресеты вставки цитат и блоков спойлеров.
- Добавлена кнопка вставки кода с выбором языка для подсветки синтаксиса.
- Интегрированы стили элементов форматирования и разметки.
- Размер Шрифта указывается в em.
- Уникальный конфиг редактора, расширяющий возможности, нацеленный на простоту и исключающий ошибки работы.
Таким образом, CKEditor в Froggy-BLC не просто редактор, а интегрированная часть системы с соблюдением её философии чистоты разметки и семантики.
Вывод
Froggy-BLC — это пример минималистичного и в то же время мощного подхода к управлению знаниями и контентом. Она объединяет философию KISS, надёжность файловых структур и логичную древовидную модель представления данных.
Если вы ищете систему, в которой всё под контролем, где структура данных наглядна — Froggy-BLC станет вашим надёжным выбором.
Лицензии используемых Компонентов
- 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)
Свободное использование, модификация и распространение при сохранении уведомления об авторских правах.