Лёгкая многоязычная CMS на PHP без внешних зависимостей: свой шаблонизатор, пользователи и роли, хранилище в JSON или MySQL, админ-панель, редактор переводов.
- Скопируйте файлы на сервер и дайте PHP право записи в
data/,log/,cache/,config/lang/иconfig/config.inc.php. - Проверьте
config/config.inc.php(хранилищеjsonилиmysql, при MySQL укажите доступы). - Откройте
/create-admin.phpи создайте первого администратора. - Сразу удалите
create-admin.php— кнопкой «Удалить файл» в красном баннере или вручную по FTP. - Войдите на сайте и откройте админку:
/?page=index.htm&isAdmin.
Это панель первого запуска. Она работает без входа в систему: пока файл лежит на сервере, любой посетитель может создать себе администратора. Что умеет: создавать, редактировать и удалять пользователей и администраторов, менять роль и пароль, показывает полный список с ролями. Удалите её сразу после настройки.
Публичная регистрация на сайте создаёт только обычных пользователей (user). Роль admin выдаётся только из админ-панели или через create-admin.php.
- PHP 8.1+, расширения
json,session(для MySQL —pdo_mysql) - Apache или nginx + PHP-FPM
- Перед публикацией прочитайте SECURITY.md: папки
data,log,config,includes,cache,templatesдолжны быть закрыты от прямого доступа (для Apache это делают готовые.htaccess, для nginx правила в SECURITY.md).
- Шаблонизатор
{{...}}с кэшем и сжатием, несколько тем (сайт и админка) - Роли
admin/user, пароли в bcrypt, защита входа от перебора - Хранилище JSON (без БД) или MySQL — переключается настройкой
storage - Языки ru, en, de, ka; редактор переводов в админке с автопереводом
- Админка: панель с загрузкой CPU и памяти, пользователи, настройки, журнал, переводы, очистка кэша
| Параметр | Назначение |
|---|---|
storage |
json или mysql (доступы к базе — в блоке mysql) |
adminEmail |
адрес администратора |
validLanguages, defaultLanguage |
доступные языки и язык по умолчанию |
tplDir, tplAdminDir |
темы сайта и админки |
tplForceCompile |
компилировать шаблоны при каждом запросе (на боевом сайте выключить) |
lifeTime |
сессия: 0 до закрытия браузера, -1 бессрочно, число — часы |
Большинство настроек меняется в админке, раздел «Настройки».
index.php точка входа
ajax.php AJAX-обработчик (пользователи, настройки, переводы)
create-admin.php первый запуск: создание администратора (удалить после настройки!)
stats.php CPU и память для панели (только администратор)
config/ конфиг и словари (config/lang)
includes/ ядро: пользователи, шаблонизатор, переводы, БД, логгер
templates/<тема>/ шаблоны
assets/ CSS, JS, изображения
data/ log/ cache/ данные, журнал, кэш шаблонов (создаются сами)
Страница выбирается так: ?page=имя.htm (файл в templates/<тема>/).
{{template includes/header.htm}} подшаблон
{{$variable}} вывод переменной (не экранируется! для данных пользователей используйте htmlspecialchars)
{{t('Текст')}} перевод
{{if $user->isLoggedIn()}} ... {{else}} ... {{/if}}
{{loop $items $item}} ... {{/loop}}
{{php echo 'Hello'; }} PHP-код
Полный справочник: templates/demo/template_syntax.htm.
Фразы оборачиваются в t('Ключ'). Непереведённые попадают в список в админке («Переводы») — выберите фразу, заполните языки (есть автоперевод) и сохраните. Новый язык: добавьте код в validLanguages и создайте config/lang/<код>.json.
GNU GPL v3 — см. LICENSE. Сторонние компоненты (например, matthiasmullie/minify) распространяются под своими лицензиями. Программа поставляется без гарантий.