Справочник по глобальным переменным
Большинство скриптов в Cotonti работают в глобальной области, так как система была изначально построена с этим подходом. Некоторые переменные достаточно часто встречаются в разных частях кода. Эта статья охватывает самые важные глобальные переменные.
Примечание: данный справочник также полезен для разработчиков тем. Вы можете использовать любую из этих глобальных переменных как глобальные теги шаблонов. Просто помните о синтаксисе CoTemplate. Например, переменная $usr['profile']['user_avatar'] в шаблоне будет заменена на {PHP.usr.profile.user_avatar}.
1. Класс фасада Cotonti
В системе есть хуки, которые срабатывают внутри системных функций, так что подключение некоторых файлов расширений выполняется в области функции. Исторически для доступа к системным переменным использовалась конструкция global. Однако это не всегда удобно. Поэтому был введён класс фасада Cotonti.
С версии 0.9.15 все основные глобальные переменные, такие как $cfg, $usr, $db, $id, $structure и другие, можно получить через класс фасада Cotonti. Таким образом, вам не нужно использовать ключевое слово global, достаточно использовать сам класс Cot вместо него.
Пример:
if ( cot::$cfg['plugin']['comments']['enabled'] ) { // какой-то код }
Полный список доступных переменных через фасад: $cache, $cfg, $cot_extrafields, $db, $db_x, $env, $L, $out, $R, $structure, $sys, $usr.
2. Профиль текущего пользователя
Переменная $usr представляет текущего пользователя и является одной из самых популярных среди глобальных переменных.
Вы можете отличить зарегистрированных пользователей от гостей, проверив значение $usr['id']:
if ($usr['id'] > 0) { // Пользователь зарегистрирован } else { // Это гость }
Вот список стандартных ключей этого массива:
$usr['id'] - уникальный номер пользователя в базе данных.
$usr['name'] - имя пользователя (логин).
$usr['maingrp'] - идентификатор основной группы пользователя, значение grp_id в таблице групп.
$usr['ip'] - IP-адрес текущего пользователя.
$usr['lang'] - предпочтение языка пользователя. Существует также глобальная переменная $lang, являющаяся сокращением.
$usr['theme'] - предпочтение темы пользователя.
$usr['scheme'] - предпочтение цветовой схемы пользователя.
$usr['timezone'] - смещение часового пояса пользователя в часах.
$usr['timezonename'] - название часового пояса пользователя.
$usr['lastvisit'] - метка времени последней активности пользователя на сайте.
$usr['lastlog'] - метка времени последнего входа пользователя.
$usr['level'] - уровень основной группы пользователя.
$usr['profile'] - массив, предоставляющий доступ ко всем полям в таблице пользователей, подробности ниже.
Вы можете использовать $usr['profile'] для получения значений полей профиля пользователя, включая дополнительные поля. Все они имеют префикс user_. Например, стандартные поля:
$usr['profile']['user_birthdate'] - дата рождения пользователя в формате MySQL.
$usr['profile']['user_country'] - двухбуквенный код страны пользователя в формате ISO.
$usr['profile']['user_email'] - электронная почта пользователя.
$usr['profile']['user_gender'] - пол пользователя: 'M' для мужчины, 'F' для женщины или 'U' для неопределённого.
$usr['profile']['user_hideemail'] - true, если пользователь предпочитает, чтобы его email оставался приватным (по умолчанию) или false, если его можно отображать.
$usr['profile']['user_logcount'] - количество входов пользователя.
$usr['profile']['user_regdate'] - метка времени регистрации пользователя.
$usr['profile']['user_text'] - текст подписи пользователя.
Если вы добавили дополнительное поле в таблицу пользователей, например "first_name", то оно будет доступно как $usr['profile']['user_first_name'].
3. Настройки текущего пользователя
Есть несколько глобальных переменных, которые содержат текущие значения настроек отображения для конкретного пользователя на текущий запрос:
$lang - текущий код языка.
$theme - текущая тема.
$scheme - текущая цветовая схема.
4. Конфигурационные переменные
Все конфигурационные переменные доступны через глобальную переменную $cfg. Она имеет несколько уровней вложенности:
$cfg['option_name'] - одно из основных настроек.
$cfg['module_name']['option_name'] - настройка для конкретного модуля.
$cfg['plugin']['plugin_name']['option_name'] - настройка для плагина.
5. Среда расширения
Массив $env содержит информацию о текущем расширении (модуле или плагине), а также статус запроса:
$env['type'] - 'module' для модулей или 'plug' для плагинов.
$env['ext'] - код расширения, например, 'forums'.
$env['location'] - строковое описание местоположения пользователя на сайте, например, 'Главная страница'.
$env['status'] - HTTP-статус ответа, например, '200 OK'.
6. Системные переменные
Есть временные системные переменные, которые используются в нескольких местах, и их пересчитывать каждый раз было бы нерационально. Эти переменные содержатся в глобальном массиве $sys. Вот некоторые из них:
$sys['now'] - метка времени текущего момента в UTC.
$sys['site_id'] - строка, уникальная для сайта, используется как его идентификатор.
$sys['parser'] - код для выбранного парсера.
$sys['xk'] - текущий токен CSRF-защиты, используется в формах.
$sys['noindex'] - если установлено в TRUE, текущая страница не будет индексироваться поисковыми системами.
Переменные, связанные с определением текущего URL и его частей:
$sys['scheme'] - схема URL, например, 'http' или 'https'.
$sys['secure'] - флаг, TRUE для HTTPS.
$sys['host'] - полный хост URL, например, 'my.example.com'.
$sys['domain'] - домен второго уровня URL, например, 'example.com'.
$sys['port'] - порт, если он отличается от 80.
$sys['site_uri'] - относительный путь от корня сайта на сервере.
$sys['abs_url'] - абсолютный URL до корня сайта.
$sys['canonical_url'] - канонический URL для текущей страницы.
$sys['uri_curr'] - текущий URI запроса.
7. Переменные вывода
Эти переменные используются для создания глобальных тегов, которые можно выводить в разных шаблонах. Они собираются в массиве $out. Вот некоторые стандартные элементы:
$out['uri'] - URI части текущего URL.
$out['notices_array'] - массив уведомлений пользователя.
$out['copyright'] - выводит ссылку "Powered by Cotonti".
$out['meta_contenttype'] - MIME-тип документа.
$out['logstatus'] - отображает статус входа пользователя.
$out['userlist'] - список онлайн-пользователей.
$out['subtitle'] - устанавливает часть тега <title>.
$out['meta_desc'] - устанавливает мета-описание страницы.
$out['meta_keywords'] - устанавливает мета-ключевые слова страницы.
$out['meta_lastmod'] - устанавливает дату последнего изменения страницы.
$out['adminpanel'] - ссылка на панель администратора для вошедших администраторов.
$out['loginout_url'] - URL для выхода пользователя.
$out['loginout'] - HTML-ссылка для выхода пользователя.
$out['profile'] - ссылка на настройки профиля текущего пользователя.
$out['guest_username'] - поле для ввода имени пользователя для гостей.
$out['guest_password'] - поле для ввода пароля для гостей.
$out['guest_cookiettl'] - флажок "запомнить меня" для гостей.
$out['guest_register'] - ссылка на регистрацию для гостей.
8. Дерево структуры
Всё дерево категорий сайта, управляемое через раздел "Администрирование / Структура", доступно через глобальную переменную $structure. Его структура выглядит так
$structure['module_name']['category_code']
Где 'module_name' — это код модуля, например, 'page', а 'category_code' — это код категории, например, 'articles'. Возвращаемый элемент — это ассоциативный массив, содержащий ключи:
'path' - путь из кодов категорий.
'tpath' - путь из названий категорий.
'rpath' - путь в сыром виде.
'id' - идентификатор категории.
'title' - название категории.
'desc' - описание категории.
'icon' - путь к иконке категории.
'locked' - если категория заблокирована для добавления новых элементов.
'count' - количество элементов в категории.
Дополнительные поля структуры также доступны через $structure.
9. Доступ к базе данных и кешу
Есть две важные глобальные переменные:
$db - экземпляр класса CotDB, используемый для выполнения запросов к базе данных.
$cache - экземпляр класса Cache, используемый для работы с кешем.
10. Другие глобальные списки
Некоторые другие глобальные коллекции, которые могут быть полезны разработчикам расширений:
$cot_groups - информация о группах пользователей.
$cot_captcha - реестр функций CAPTCHA.
$cot_hash_funcs - реестр хеш-функций.
$cot_import_filters - массив пользовательских фильтров для cot_import().
$cot_mail_senders - пользовательские функции для отправки почты.
$cot_parsers - реестр пользовательских функций парсера.
$cot_url_appendix - параметры, добавляемые ко всем URL, если они присутствуют.
$cot_plugins_active - список активных плагинов.
$cot_modules - список активных модулей.