Суффикс _NAME в экстраполях Cotonti (кастомизация)
Общие сведения
В стандартном ядре Cotonti не существует автоматической генерации суффикса _NAME для всех типов экстраполей. Однако этот суффикс используется в пользовательских плагинах (например, xtradbrowusers) для предоставления дополнительной информации, обычно для поля типа country.
В контексте экстраполей_NAME обозначает локализованное (человекочитаемое) название значения, в отличие от _VALUE, которое содержит «сырое» значение (код, идентификатор).
Где формируется _NAME?
1. В стандартных функциях ядра
В файле system/extrafields.php в функциях cot_build_extrafields(), cot_import_extrafields() и cot_build_extrafields_data() нет обработки суффикса _NAME. Эти функции не генерируют теги — они лишь возвращают строку для формы или форматированное значение для вывода.
В файле system/functions.php в функции cot_generate_usertags() для экстраполей пользователей (Cot::$extrafields[Cot::$db->users]) создаются только три тега:
{PREFIX_FIELD}— форматированное значение (cot_build_extrafields_data),{PREFIX_FIELD_TITLE}— название поля,{PREFIX_FIELD_VALUE}— сырое значение из БД.
Суффикс _NAME здесь отсутствует. Даже для экстраполя типа country стандартная генерация не добавляет _NAME.
2. В пользовательских плагинах (на примере xtradbrowusers)
В плагине xtradbrowusers (файлы users.details.tags.php, users.loop.php, usertags.php) в цикле обработки экстраполей есть условие:
if ($exfld['field_type'] === 'country') {
// ... загрузка языкового файла стран
$t->assign('PREFIX_XTRA_' . $tag . '_NAME', isset($cot_countries[$value]) ? $cot_countries[$value] : $value);
}Здесь $value — код страны (например, ru, ua, us), а $cot_countries — массив, загруженный из языкового файла countries.lang.php, где ключи — коды стран, значения — локализованные названия.
Таким образом, для поля country создаётся тег _NAME, который содержит название страны на текущем языке, например, "Россия", "Украина", "США".
Для каких типов полей используется _NAME?
В представленном коде _NAME добавляется только для типа country. Для других типов (select, radio, checklistbox, input, textarea и т.д.) суффикс _NAME не используется.
Однако теоретически разработчик плагина может добавить _NAME для любого типа, если ему нужно вывести дополнительное «название» значения (например, для select — локализованную подпись варианта). Но это уже будет индивидуальное решение плагина.
Примеры использования в шаблонах
Для поля country (экстраполе)
Предположим, экстраполе называется x300_country. Плагин формирует теги:
{USERS_DETAILS_XTRA_X300_COUNTRY}— код страны (например,cn) или отформатированное значение черезcot_build_extrafields_data(для country оно возвращает сам код).{USERS_DETAILS_XTRA_X300_COUNTRY_VALUE}— всегда код страны (cn).{USERS_DETAILS_XTRA_X300_COUNTRY_TITLE}— название поля.{USERS_DETAILS_XTRA_X300_COUNTRY_NAME}— локализованное название страны (Китай).
В шаблоне можно вывести:
<!-- IF {USERS_DETAILS_XTRA_X300_COUNTRY_VALUE} -->
<strong>{USERS_DETAILS_XTRA_X300_COUNTRY_TITLE}:</strong>
{USERS_DETAILS_XTRA_X300_COUNTRY_NAME} <!-- покажет "Украина" -->
<!-- ENDIF -->Для стандартного поля country (не экстраполе)
У пользователей есть штатное поле user_country. В функции cot_generate_usertags() оно обрабатывается отдельно и создаёт тег {COUNTRY} через cot_build_country(), который уже возвращает название страны (или флаг, если настроено). Специфического суффикса _NAME для стандартного поля нет.
Взаимодействие с _VALUE
_VALUE— всегда «сырое» значение, хранящееся в базе (код, timestamp, число и т.д.). Используется для проверок, сравнений или в атрибутах._NAME— дополнительное, обычно локализованное представление значения, удобное для отображения пользователю.
Оба суффикса не являются обязательными и зависят от реализации плагина или ядра.
Вывод
Суффикс _NAME в контексте экстраполей Cotonti:
Не входит в стандартный набор тегов, генерируемых ядром.
Добавляется вручную в плагинах, чаще всего для типа
country, чтобы получить локализованное название страны.Содержит человекочитаемое значение, в отличие от
_VALUE, которое хранит код или идентификатор.Может быть расширен разработчиками для других целей, но это уже индивидуальная реализация.
Таким образом, если вы видите тег с _NAME в шаблоне, это почти всегда означает, что соответствующий плагин специально создал его для удобного вывода названия (страны или другого значения).
Узнать больше об экстраполях (магические дополнительные пользовательский поля) в Котонти