Как приручить время в Sngine: Весёлый гайд по смене часового пояса
- 1. Почему ваша соцсеть живёт в прошлом (или будущем)
- 2. Магия «2 часа назад» — как Sngine обманывает время
- 3. Где живут настройки: два тайных убежища
- 4. Меняем часовой пояс: пошаговый квест
- Шаг 1. Находим свой часовой пояс
- Шаг 2. Лезем в functions.php
- Шаг 3. Пляшем с core.js
- Шаг 4. Очищаем кэш
- Шаг 5. Проверяем
- 5. Полезные плюшки от профи (и чуть-чуть от меня)
- 6. Финальный аккорд: запускаем соцсеть мечты
1. Почему ваша соцсеть живёт в прошлом (или будущем)
Итак, Вы установили Sngine, настроили логотип, добавили первых друзей (кота и соседа), и вдруг замечаете: посты уходят в завтра, комментарии приходят из вчера, а сервер, кажется, завис где-то на Бермудах.
Спокойствие. Это не баг, а фича времени. Просто Sngine по умолчанию живёт в UTC - универсальном координированном времени, которое хорошо для ракет и спутников, но странно для «ВКонтакте с шашлыками».
💡 Весёлый факт: UTC не меняется на летнее/зимнее время. Оно как очень ответственный сотрудник — всегда на месте. Но ваши пользователи хотят видеть «Ольга ответила 5 минут назад», а не «Ольга ответила в 02:34 UTC».
2. Магия «2 часа назад» — как Sngine обманывает время
В отличие от жёстких систем, Sngine — хитрец. Он не говорит «опубликовано в 14:00 по Москве». Он говорит: «опубликовано 2 часа назад» — прямо как Вконтакте или все модные ребята, которые запрещены быть упомянутыми.
Как это работает? Очень умно:
- Серверная часть (PHP) смотрит на UTC.
- Фронтенд (JavaScript) тоже смотрит на UTC.
- А потом JS вычисляет разницу между временем поста и часовым поясом браузера пользователя.
Поэтому вам не нужно менять системное время сервера! Вы просто скажете Sngine: «Слушай, я тут из Москвы (или с Камчатки, или даже с Марса) — поставь-ка мой пояс по умолчанию».
3. Где живут настройки: два тайных убежища
Всего два файла — и вы повелитель времени.
| Файл | Что делает |
|---|---|
includes/functions.php |
Глобальный PHP-пояс для всего бэкенда |
includes/assets/js/sngine/core.js |
JS-настройка для красивых относительных дат |
Без паники, они простые как лопата.
4. Меняем часовой пояс: пошаговый квест
Шаг 1. Находим свой часовой пояс
Загляните в официальный список PHP:
👉 https://www.php.net/manual/en/timezones.php
Примеры для России и не только:
-
Europe/Moscow— Москва, Питер, Волгоград (UTC+3) -
Europe/Samara— Самара (UTC+4) -
Asia/Yekaterinburg— Екатеринбург (UTC+5) -
Asia/Novosibirsk— Новосибирск (UTC+7) -
Asia/Vladivostok— Владивосток (UTC+10) -
America/New_York— для друга из США -
Asia/Dubai— для нефтяного магната
Шаг 2. Лезем в functions.php
Открываете файл includes/functions.php. Ищете строку, похожую на:
date_default_timezone_set('UTC');
Заменяете 'UTC' на ваш пояс, например:
date_default_timezone_set('Europe/Moscow');
⚠️ Важно: если этой строки нет — добавьте её в самое начало файла, после
<?php.
Шаг 3. Пляшем с core.js
Файл: includes/assets/js/sngine/core.js.
Ищете внутри слово utcOffset. Будет что-то вроде:
utcOffset: 0
Меняете на нужное смещение в часах от UTC. Например, для Москвы (UTC+3):
utcOffset: 3
Для Нью-Йорка (зимой UTC-5):
utcOffset: -5
📌 Лайфхак: смещение можно не трогать, если вы хотите, чтобы время определялось автоматически по браузеру пользователя. Но если все ваши пользователи из одного региона — лучше задать явно.
Шаг 4. Очищаем кэш
Сделайте вот что:
- Очистите кэш в админке Sngine (Админ-панель → Инструменты → Уборщик мусора → Удаление скомпилированных файлов шаблонов).
-
Перезагрузите веб-сервер (Apache или Nginx) — обычно через
sudo systemctl restart nginxили через панель хостинга. - Откройте ваш сайт в режиме инкогнито (чтобы старые JS-файлы не кэшировались браузером).
Шаг 5. Проверяем
Создайте тестовый пост и посмотрите, сколько времени прошло. Если всё правильно — будет написано «только что» или «1 минуту назад». Если нет — не ругайтесь, просто вернитесь к шагу 2.
5. Полезные плюшки от профи (и чуть-чуть от меня)
Вот что можно ещё сделать, чтобы время работало как швейцарские часы (даже если вы не в Швейцарии):
| Проблема | Решение |
|---|---|
| Посты скачут при летнем времени | Sngine не поддерживает DST автоматически. Но если задать utcOffset с учётом сезона — будет ок. Лучше оставить автоопределение по браузеру. |
| Сервер в одном часовом поясе, а все пользователи в другом | Не меняйте functions.php на пользовательский! Оставьте UTC. Меняйте только core.js или вообще ничего не меняйте — JS сам подтянет пояс. |
| Хочу показывать абсолютное время (14:30) вместо «2 часа назад» | Это уже изменение логики шаблонов. Но зачем? «2 часа назад» — это душевнее. |
Бонус-совет: если вы только начинаете — не мучайтесь с часовыми поясами на сервере. Оставьте везде UTC и настройте только фронтенд. Пользователи увидят своё время автоматически.
6. Финальный аккорд: запускаем соцсеть мечты
Поздравляю! Теперь вы знаете о часовых поясах в Sngine больше, чем 80% новичков. Ваша соцсеть больше не будет писать «пост из будущего», а друзья не запутаются, когда вы «были в сети».
И помните: своя соцсеть — это круто. Вы сами решаете правила, внешний вид и даже течение времени. А если что-то пошло не так — просто верните UTC и выпейте чай. Время подождёт. 😉
🚀 На посошок: Sngine — отличный старт для вашего проекта. Не бойтесь экспериментировать, читайте документацию и добавляйте фишки, о которых молчат в больших соцсетях. Например, возможность ставить «лайк» вчерашним постам. Хотя нет, это уже машина времени.
Удачи, повелитель времени и властелин своей вселенной!