Переменные окружения
Популярные запросы: Open Graph, плагин Reading Time, тема Quebec, плагин Telegram, набор иконок Analogue
- 178 просмотров +1
- 17 декабря, 2025
- Обновлено: 9 января, 2026
- admin
- Время чтения: 4 минуты
При создании расширения или формировании логики в TPL-шаблоне Cotonti Siena важным моментом является определение текущего местоположения или локации пользователя. В зависимости от того, где находится посетитель сайта, можно выполнять какие-либо действия (или запрещать их выполнение), модифицировать внешний вид сайта – ограничений здесь действительно немного.
Главное в этой истории – научиться понимать и правильно определять эту самую локацию. Этим и займемся.
Массив переменных окружения
Cotonti Siena представляет собой компактное ядро с набором расширений. Каждая пользовательская локация, не исключая главную страницу, фактически представляет собой модуль или плагин. Даже админка является своего рода расширением.
Таким образом, можно считать, что определение локации подчиняется неким общим правилам, которые связаны с набором глобальных переменных окружения из массива $env.
Основных переменных три:
$env[‘type’]– определяет тип расширения (‘module’ или ‘plug’);$env[‘ext’]– определяет код расширения (‘index’, ‘forums’ или ‘thanks’);$env[‘location’]– описание локации расширения.
Переменная $env[‘type’] принимает только два значения – module или plug. Исторически сложилось так, что вместо полного plugin в Cotonti используется сокращение plug. При этом в разных ситуациях можно встретить и полное слово. Например, в функции расширений cot_plugin_active(). Это иногда приводит к досадным опечаткам, но со временем привыкаешь.
Возможно, к версии Cotonti 1 эта практика будет исправлена, и плагины глобально будут упоминаться только как plugin.
Описание переменных окружения
Элемент массива $env[‘ext’] содержит код расширения – самый важный элемент для определения локации. Поскольку данный код является для системы уникальным, его вполне достаточно для определения локации.
Значение $env[‘ext’] также содержит глобальная переменная $e.
В документации переменная $env[‘location’] описывается как “строка с текстовым описанием локации пользователя, например, “Home page”’. Возможно, когда-то это было так, но по мере развития концепции расширений данный элемент массива $env “перерос себя”, превратившись в служебный контейнер для кода подраздела расширения. Например, для модуля страниц он может содержать значение ‘list’ для разделов и ‘pages’ для страниц.
Таким образом, с использованием массива переменных окружения $env можно достаточно точно понять, где находится посетитель. Однако и его может быть недостаточно. Так, в том же модуле Page используется глобальная переменная $m, которая штатно может принимать следующие значения:
- add – для локации добавления страницы,
- edit – для локации редактирования страницы,
- counter – для подгружаемого через fetch() счетчика посещений.
В модуле Users их больше:
- main – список аккаунтов пользователей,
- details – детали аккаунта,
- edit – редактирования аккаунта,
- passrecover – локация восстановления пароля,
- profile – профиль (настройки аккаунта),
- register – локация регистрации нового аккаунта.
Поскольку управление локациями производится из главного файла расширения (например, page.php или forums.php), актуальный перечень переменных окружения необходимо брать именно оттуда.
И еще, если локация формируется с помощью переменной $m, набор переменных окружения для нее может меняться. Например, для раздела страниц переменная location будет определена как ‘list’:
Cot::$env['location'] = 'list';
Справочный список переменных окружения
Для общего понимания картины приведем неполный список переменных окружения для наиболее часто используемых “коробочных” модулей.
| Расширение | $env['type'] |
$env['ext'] aka $e |
$env['location'] |
$m |
|---|---|---|---|---|
| Index | module | index | home | |
| Page | module | page | list | |
| Page | module | page | pages | main add edit [counter] |
| Users | module | users | users | main details edit passrecover profile register |
Применительно к плагинам из дистрибутива данный список будет небольшим. В основном, в нем будут задействованы переменные type и ext для тех плагинов, которые имеют локации. Например:
| Расширение | $env['type'] |
$env['ext'] aka $e |
$env['location'] |
$m |
|---|---|---|---|---|
| Recent Items | plug | recentitems | ||
| Who's Online | plug | whosonline |
Заключение
Каждое расширение Cotonti Siena, формирующее собственную локацию (или локации), имеет свои переменные окружения, с помощью которых можно определить, где в данный момент находится пользователь. Например,
<!-- IF {PHP.env.ext} == 'users' AND {PHP.m} == 'passrecover' -->
<p>
Я восстанавливаю пароль!
</p>
<!-- ENDIF -->
Конечно, только этими переменными список привязок к локации не ограничивается. Существуют коды разделов $c, алиасы $al и ID $id страниц и множество других переменных, которые можно использовать в качестве идентификаторов местоположения посетителя сайта. О них в следующих публикациях.
В предыдущем посте я рассказывал о том, как реализовать счетчик ежедневных просмотров страницы.
Полезная статья. Прописывать элементы type, ext и location полезная практика, поскольку массив $env доступен глобально и позволяет точно определять необходимые локации.
Новый комментарий
Ошибка
Выполнено