Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

2024-02-18 00:35

Ссылка на глобальные переменные

Разработка расширений на CMS Cotonti и пользовательских шаблонов требует понимания глобальных системных переменных, которые использутся, могут быть задействованны и/или которые нужно применить.

Массив с переменными $usr

Примеры использования в исходном коде

Cot::$usr['isadmin']
Cot::$usr['name']
(Cot::$usr['id'] > 0)

 

Пример использования в шаблонах

1. Глобально. В любом месте шаблона, условие, в котором доступен контент для пользователя с правами администратора

<!-- IF {PHP.usr.isadmin} -->
<div class="my-class" id="block_content_for_admin">
HTML-код, теги, функции для пользователя с правами администратора
</div>
<!-- ENDIF -->

2. Глобально. В любом месте шаблона, ссылка на собственную страницу пользователя

<a href="{PHP.usr.name|cot_url('users','m=details&amp;u=$this')}">{PHP.L.Profile}</a>


3. Глобально. В любом месте шаблона, приветствие авторизованного пользователя

<!-- IF {PHP.usr.id} > 0 -->
<h3>{PHP.L.You_Are_Logged_As}: {PHP.usr.name}</h3>
<!-- ENDIF -->

 

Перечислены и объяснены наиболее важные из глобальных переменных Котонти

Большинство скриптов Cotonti выполняются в глобальной области видимости, поскольку она исторически построена таким образом. Некоторые переменные достаточно распространены, чтобы их можно было увидеть во многих местах кода. В этой статье рассматриваются наиболее важные глобальные переменные.

    Примечание: это руководство также пригодится разработчикам тем. Вы также можете использовать любую из этих глобальных переменных в качестве тегов глобального шаблона.

Просто запомните синтаксис CoTemplate.

Например, $usr['profile']['user_avatar'] в шаблоне становится {PHP.usr.profile.user_avatar}.

1. Класс фасада Cot

В системе есть несколько перехватчиков, которые запускаются внутри системных функций, поэтому включение некоторых файлов расширений выполняется в области действия функции.  Исторически сложилось так, что в качестве обычной практики для доступа к некоторым системным переменным использовалось ключевое слово global. Но это не всегда хорошо. Так был введен класс Cot facade.

Начиная с версии 0.9.15 все основные глобальные переменные, такие как ($cfg, $usr, $db, $id, $strucutre и т.д.), могут быть доступны через класс cot facade. Поэтому вам не нужно использовать глобальное ключевое слово, вместо этого используйте прямой класс cot. Пример

if ( cot::$cfg['plugin']['comments']['enabled'] )
{
  // some code
}

Полный список доступных переменных в facade: $cache, $cfg, $cot_extrafields, $db, $db_x, $env, $L, $out, $R, $structure, $sys, $usr.

Вот список стандартных ключей, которые есть в этом массиве:

    $usr['id'] - уникальный номер пользователя в базе данных;
    $usr['name'] - имя пользователя (логин) пользователя;
    $usr['maingrp'] - идентификатор основной группы, к которой принадлежит пользователь, значение grp_id таблицы groups;
    $usr['ip'] - IP-адрес текущего пользователя;
    $usr['lang'] - языковые предпочтения пользователя. Другой глобальный $lang является сокращением для этого;
    $usr['theme'] - настройки темы пользователя;
    $usr['scheme'] - настройки цветовой схемы пользователя;
    $usr['timezone'] - смещение часового пояса пользователя в часах;
    $usr['timezonename'] - название часового пояса пользователя;
    $usr['lastvisit'] - временная метка для последнего действия пользователя на сайте;
    $usr['lastlog'] - временная метка последнего входа пользователя в систему;
    $usr['level'] - значение уровня основной группы пользователя;
    $usr['profile'] - массив, предоставляющий доступ ко всем полям в таблице users, описанным ниже.

Вы можете использовать $usr['profile'] для получения необработанных значений полей профиля пользователя, включая дополнительные поля. Он содержит их с префиксом "user_". Например, вот стандартные:

    $usr['profile']['user_birthdate'] - дата рождения пользователя в формате даты MySQL. Вы можете отобразить ее, используя комбинацию функций cot_date2stamp() и cot_date();
    $usr['profile']['user_country'] - содержит 2-значный код страны ISO пользователя, если указан;
    $usr['profile']['user_email'] - адрес электронной почты пользователя;
    $usr['profile']['user_gender'] - один символ для обозначения пола пользователя: "M" для мужчины, "F" для женщины или "U" для неизвестного;
    $usr['profile']['user_hideemail'] - значение true, если пользователь предпочитает, чтобы его электронная почта оставалась конфиденциальной (по умолчанию), или значение false, если ее можно отобразить;
    $usr['profile']['user_logcount'] - количество входов пользователя в систему;
    $usr['profile']['user_regdate'] - временная метка для даты и времени регистрации пользователя;
    $usr['profile']['user_text'] - текст подписи пользователя.

Итак, если вы добавили дополнительное поле в таблицу users, которое называется "first_name", то к нему можно получить доступ как к $usr['profile']['user_first_name'] в $usr global.

3. Настройки текущего пользователя

Есть несколько глобальных параметров, содержащих текущие значения настроек отображения для каждого пользователя для текущего запроса:

    $lang - текущий код языка;
    $theme - название текущей темы;
    $scheme - название текущей цветовой схемы.

4. Переменные конфигурации

Все переменные конфигурации доступны через $cfg global. Он имеет несколько уровней вложенности:

    $cfg['option_name'] - одна из основных настроек;
    $cfg['module_name']['option_name'] - настройка для конкретного модуля;
    $cfg['plugin']['plugin_name']['option_name'] - настройка плагина.

5. Среда расширения

Массив $env содержит информацию о текущем выполняемом расширении (модуле или плагине) и информацию о статусе запроса:

    $env['type'] - 'module' для модулей или 'plug' для плагинов;
    $env['ext'] - код расширения, например "форумы";
    $env['местоположение'] - строка, содержащая текстовое описание местоположения пользователя на сайте, например "Домашняя страница";
    $env['status'] - статус повторного ответа HTTP, например "200 OK";

6. Системные переменные

Существуют временные системные переменные, которые используются в нескольких местах, и их повторное вычисление было бы пустой тратой ресурсов.  Такие переменные могут содержаться в глобальном массиве $sys. Вот некоторые из его общего содержимого:

    $sys['now'] - целочисленная временная метка для текущего времени в UTC, такая же, как при вызове функции time() для UTC (даты Cotonti хранятся в UTC, а часовые пояса применяются непосредственно перед их отображением);
    $sys['site_id'] - некоторая строка, уникальная для сайта и используемая в качестве его идентификатора (эти данные являются общедоступными);
    $sys['parser'] - код для плагина синтаксического анализа по умолчанию или синтаксического анализатора, выбранного для текущих данных;
    $sys['xk'] - содержит текущее значение токена защиты CSRF, используемого в формах;
    $sys['noindex'] - установите значение TRUE, если текущая страница не должна индексироваться поисковыми системами;

Следующие переменные связаны с определением текущего URL-адреса и его частей во время выполнения:

    $sys['scheme'] - схема URL-адреса, например 'http' или 'https';
    $sys['secure'] - флаг, который является истинным для используемого протокола HTTPS;
    $sys['host'] - полная часть URL-адреса хоста, например 'my.example.com';
    $sys['домен'] - домен 2-го уровня URL-адреса, например 'example.com';
    $sys['порт'] - порт, отличный от 80, содержащий запятую, например ':8080';
    $sys['site_uri'] - относительный путь к корневому каталогу сайта на сервере с косой чертой в конце. Например, если вы запустите Cotonti в 'example.com/cotonti/', то этот путь будет '/cotonti/';
    $sys['abs_url'] - абсолютный URL-адрес корневого каталога сайта, например, 'http://my.example.com/cotonti/'. Обычно это то же самое, что $cfg['mainurl'] с косой чертой, но на сайтах, использующих несколько поддоменов, это будет отличаться от $cfg['mainurl'] при доступе из поддомена;
    $sys['canonical_url'] - используется для получения и установки канонического URL для текущей страницы (используется в заголовке html);
    $sys['uri_curr'] - содержит текущую часть URI запроса URL, например '/cotonti/foo?bar=baz';

   
7. Выходные переменные

Эти переменные используются для создания глобальных тегов для вывода их в нескольких шаблонах. Они собраны в массив $out. Вот некоторые стандартные элементы:

    $out['uri'] - часть URI текущего URL, допустимая для HTML, например. '/index.php?foo=bar&amp;boo=baz';
    $out['notices_array'] - массив уведомлений персональной панели пользователя;
    $out['copyright'] - выводит ссылку "Powered by Cotonti";
    $out['meta_contenttype'] - MIME-тип документа, по умолчанию используется "text/html";
    $out['logstatus'] - отображает статус входа пользователя в систему в виде строкового сообщения;
    $out['список пользователей'] - отображает список онлайн-пользователей;
    $out['subtitle'] - устанавливает переменную часть тега head <title>. Например, если вы установите для него значение 'Apples', полный заголовок будет выглядеть примерно так: "Яблоки - Фрукты - Мой классный садовый участок".;
    $out['meta_desc'] - задает мета-описание страницы;
    $out['meta_keywords'] - задает мета-ключевые слова страницы;
    $out['meta_lastmod'] - задает дату последнего изменения страницы;
    $out['adminpanel'] - отображает ссылку на панель администрирования для зарегистрированных администраторов;
    $out['loginout_url'] - URL-адрес для выхода текущего пользователя из системы;
    $out['loginout'] - HTML-ссылка для выхода текущего пользователя из системы;
    $out['profile'] - HTML-ссылка на настройки профиля текущего пользователя;
    $out['guest_username'] - форма ввода имени пользователя для гостей;
    $out['guest_password'] - ввод пароля пользователя для гостей;
    $out['guest_cookiettl'] - флажок "запомнить меня" для гостей;
    $out['guest_register'] - ссылка на регистрацию для гостей;

8. Дерево структуры

Доступ ко всему дереву категорий сайта, управляемому в разделе Администрирование / Структура, осуществляется через $structure global. Оно имеет подпись:

$structure['module_name']['category_code']

Где 'module_name' - это код модуля, такой как 'page', а 'category_code' - это код категории, такой как 'articles'. Возвращаемый элемент представляет собой ассоциативный массив, содержащий ключи:

    'path' -
    the dot separated path of the codes from structure root, such as / разделенный точками путь к кодам из корня структуры, например'goods.electronics.blenders';
    
    'tpath' - a path consisting of category titles instead, e.g. 'Goods - Electronics - Blenders' - путь, состоящий из названий категорий, например "Товары - Электроника - Блендеры".;
    
    'rpath' - raw path property of the category, e.g. 'goods.1.3' - свойство необработанного пути к категории, например 'goods.1.3';;
    
    'id' - integer identifier - целочисленный идентификатор;
    
    'title' - category title название категории;
    
    'desc' - category descriptionописание категории';
    
    'icon' - category icon path, if present; путь к значку категории, если он присутствует;
    
    'locked' - whether category accepts adding new items; - разрешает ли категория добавлять новые элементы;
    
    'count' - number of items contained. - количество содержащихся элементов.

Дополнительные поля структуры также доступны через $structure. Например, если вы добавили дополнительное поле с кодом "специальность", то оно доступно как

$structure['module_name']['category_code']['specialty']

или чтоб проще для понимания и наглядности

$structure['имя_модуля']['код категории']['специальность']

9. Доступ к базе данных и кэшу

Есть две другие довольно важные глобальные переменные:

    $db - экземпляр класса CotDB, используемый для запроса базы данных, смотрите ссылку на класс CotDB и PDO для получения дополнительной информации;
    $cache - экземпляр класса Cache, смотрите документацию Cache API для получения дополнительной информации.

10. Другие глобальные списки

Есть еще несколько глобальных коллекций, о которых стоит упомянуть разработчикам расширений:

/**
 * Contains information about user groups, you'd better find yourself in system/common.php file
 */
$cot_groups = array();
 
/**
 * Registry for captcha functions
 */
$cot_captcha = array();
 
/**
 * Registry for hash functions
 */
$cot_hash_funcs = array('md5', 'sha1', 'sha256');
 
/**
 * Array of custom cot_import() filter callbacks
 */
$cot_import_filters = array();
 
/**
 * Custom e-mail send callbacks
 */
$cot_mail_senders = array();
 
/**
 * Custom parser functions registry
 */
$cot_parsers = array();
 
/**
 * Parameters to be automatically appended to all URLs if present
 */
$cot_url_appendix = array();
 
/**
* List of installed (active) plugins. Where keys is a plugin name and value is boolean (TRUE/FALSE).
*/
$cot_plugins_active = array();
 
/**
* List of installed (active) modules. Where keys is a module name and value is boolean (TRUE/FALSE).
*/
$cot_modules = array();

Author: Trustmaster & Macik

перевод с английского: webitproff

This post was edited by Administrator (2024-03-02 19:18, 2 years ago)
Account