Добро пожаловать на сайт SEDBY

Переменные окружения

  • 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 доступен глобально и позволяет точно определять необходимые локации.


Новый комментарий

Ваш комментарий будет доступен для редактирования 10 минут
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость