Как создать свою страницу в Sngine: от идеи до реализации
Итак, ты строишь свою соцсеть — крутую, стильную, непохожую на других. И вдруг понимаешь — нужна страница «Правила клуба», «Мемы дня» или «Секретная комната для админов». А в админке Sngine только простые статические страницы (о нас, контакты, каталог… скукота!).
Не грусти! Мы сейчас сделаем такую страницу, что пользователи ахнут. И сделаем это с улыбкой, без занудства.
👉 Всё, что нам понадобится — пара файлов, 10 минут и капелька энтузиазма.
Три кита кастомной страницы
Любая кастомная страница в Sngine держится на трёх слонах:
| Слон | Что делает | Имя в программировании |
|---|---|---|
| 🐘 PHP-файл | Управляет логикой, проверяет доступ, говорит системе, что делать | Контроллер |
| 🎨 Template-файл | Показывает красоту (HTML, CSS, кнопочки) | Представление (View) |
| 🔧 .htaccess | Делает URL красивыми: mysite.com/mypage вместо mysite.com/mypage.php |
Маршрутизатор |
Каждого слона приручим по очереди.
Шаг 1: Рождаем PHP-файл (Контроллер)
Идём в корневую папку твоего сайта (там где index.php и папка content). Создаём там файл, например, test_page.php.
🧙♂️ Совет: называй файлы на английском и без пробелов —
party_rules.php,secret_room.php.
Открываем файл в редакторе (Notepad++, VS Code — что любишь) и вставляем такой код-скелет:
<?php
// 1. Подключаем загрузчик Sngine (без него всё сломается)
require('bootloader.php');
// 2. Хочешь, чтобы страницу видели только залогиненные пользователи?
// Раскомментируй следующую строку:
// user_access();
// 3. Устанавливаем заголовок и описание страницы (для вкладки браузера и SEO)
page_header("Моя офигенная страница", "Здесь описание для поисковиков");
// 4. Говорим системе, какой шаблон использовать
page_footer("test_page");
?>
Что тут важно:
-
user_access()— если раскомментируешь, неавторизованных гостей вежливо (или не очень) попросят на выход. Хочешь открытую страницу — убери или закомментируй. -
page_header("Заголовок", "Описание")— первый параметр виден на вкладке браузера, второй — в сниппетах поисковиков. -
page_footer("test_page")— а вот это имя шаблона. Запомни его — оно нам нужно для шага №2.
✅ PHP-слона накормили. Идём дальше.
Шаг 2: Создаём шаблон (Представление) — магия Smarty
Sngine любит Smarty — это такой умный шаблонизатор, который отделяет логику от красоты. Не пугайся фигурных скобок, это просто.
-
Иди в папку твоей темы. Если тема по умолчанию, путь такой:
content/themes/default/templates/ -
Создай там файл с именем, которое ты передал в
page_footer()— в нашем примереtest_page.tpl. Расширение обязательно .tpl. -
Вставь в него базовую структуру:
{include file='_head.tpl'}
{include file='_header.tpl'}
<!-- А вот тут начинается твоё творчество -->
<div class="container mt-4">
<div class="card">
<div class="card-body">
<h1 class="card-title">Привет, это моя супер-страница!</h1>
<p class="card-text">Тут может быть любой HTML, видео, кнопки — что душа пожелает.</p>
<a href="{$system['system_url']}" class="btn btn-primary">На главную</a>
</div>
</div>
</div>
<!-- Конец твоего творчества -->
{include file='_footer.tpl'}
🎨 Лайфхак: Внутри
.tplты можешь использовать все переменные Smarty из системы. Например,{$system['system_url']}подставит адрес твоего сайта. А если захочешь вывести имя текущего пользователя —{$user->_data['user_fullname']}(но это уже высший пилотаж).
Сохрани файл. Визуальная часть готова!
Шаг 3: Дружим с .htaccess (красивые URL)
Сейчас твоя страница доступна по адресу:
https://my-site.ru/test_page.php
Но мы же не ищем лёгких путей? Сделаем как у людей: https://my-site.ru/testpage
-
Открой файл
.htaccessв корне сайта.

-
Найди блок с правилами Rewrite (обычно начинается с
RewriteEngine On). -
Добавь своё правило ПЕРЕД правилами для профилей (там где
RewriteRule ^/([a-zA-Z0-9_-]+)$).
Пример:
RewriteEngine On
# Моё новое правило
RewriteRule ^testpage$ test_page.php [L,QSA]
# Остальные стандартные правила Sngine
RewriteRule ^profile/(.*)$ index.php?ref=profile&url=$1 [L,QSA]
RewriteRule ^post/(.*)$ index.php?ref=post&url=$1 [L,QSA]
# ... и так далее
Теперь по адресу /testpage будет открываться твоя страница.
⚠️ Важно: Правило должно быть до правил профилей, иначе Sngine подумает, что
testpage- это имя пользователя и попробует открыть профиль.
Если .htaccess пугает — ничего страшного. Можно пользоваться прямым адресом с .php. Но красивые URL — это признак мастера.
Полезные плюшки и лайфхаки
🍔 Хлебные крошки (навигация)
Добавь в .tpl после {include file='_header.tpl'}:
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{$system['system_url']}">Главная</a></li>
<li class="breadcrumb-item active">Моя страница</li>
</ol>
🔒 Разные уровни доступа В PHP-файле можно проверять не только авторизацию, но и роль:
if(!$user->_is_logged) {
redirect('/');
}
if($user->_data['user_group'] != 1) { // 1 = админ
page_header("Доступ запрещен");
die('Только для админов, извините');
}
📦 Использование БД в кастомной странице Если нужно достать данные из базы (например, список последних 10 постов), добавь в PHP-файл:
$db = database();
$latest_posts = $db->query("SELECT * FROM posts ORDER BY post_id DESC LIMIT 10")->fetchAll();
$smarty->assign('latest_posts', $latest_posts);
А в .tpl потом выводи через {foreach $latest_posts as $post}.
Что делать, если что-то пошло не так
| Проблема | Скорее всего… | Решение |
|---|---|---|
| Белый экран | Ошибка в PHP или забыл require('bootloader.php') |
Проверь синтаксис, включи отладку в config.php |
| Не видит шаблон | Имя в page_footer() и имя файла .tpl не совпадают |
Сделай их идентичными (регистр важен!) |
| 404 ошибка после правки .htaccess | Правило написано неверно или стоит после профильных правил | Перемести своё правило в начало |
| «Smarty error: undefined variable» | Пытаешься вывести переменную, которую не передал | Передай её через $smarty->assign('имя', значение) в PHP |
И главное — не паникуй. Sngine довольно дружелюбен, а ошибки — это просто приключения.
Заключение: ты — творец!
Поздравляю! Теперь ты умеешь создавать кастомные страницы в Sngine. Это как получить волшебную палочку — ограничения только в твоей фантазии.
- Хочешь отдельную страницу с конкурсом? Легко.
- Галерею мемов? Без проблем.
-
Секретный чат для администраторов? Запросто (только не забудь про
user_access()и проверку роли).
Иди и твори, повелитель соцсетей! А если сделаешь что-то совсем крутое — возвращайся, расскажем всем.