Статья

Как создать свою страницу в 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 — это такой умный шаблонизатор, который отделяет логику от красоты. Не пугайся фигурных скобок, это просто.

  1. Иди в папку твоей темы. Если тема по умолчанию, путь такой: content/themes/default/templates/

  2. Создай там файл с именем, которое ты передал в page_footer() — в нашем примере test_page.tpl. Расширение обязательно .tpl.

  3. Вставь в него базовую структуру:

{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

  1. Открой файл .htaccess в корне сайта.

htaccess-768x220.png

  1. Найди блок с правилами Rewrite (обычно начинается с RewriteEngine On).
  2. Добавь своё правило ПЕРЕД правилами для профилей (там где 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() и проверку роли).

Иди и твори, повелитель соцсетей! А если сделаешь что-то совсем крутое — возвращайся, расскажем всем.

Закрыт