Категории форума

Суффикс _NAME в экстраполях Cotonti

Специально, вдруг кто будет задаваться вопросом, что это такое и для чего. Это пользовательский "атрибут" имени экстраполей для вывода назавания страны, а не ее двухзначного кода в ваших полях

webitproff
webitproff • 16.08.2026 13:49 #583

Суффикс _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 в шаблоне, это почти всегда означает, что соответствующий плагин специально создал его для удобного вывода названия (страны или другого значения).

Узнать больше об экстраполях (магические дополнительные пользовательский поля) в Котонти 

 

🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.