Формирование имени покупателя
Как RadicalMart собирает строку имени из имени, отчества и фамилии, и как изменить порядок вывода через языковые константы Joomla.
Общий принцип
Метод
UserHelper::nameToString()
Для формирования строки используется helper RadicalMart. Метод принимает данные покупателя и возвращает обычную строку, собранную из непустых частей имени. Полное подключение показано ниже в примере вызова.
Данные
array, JSON, Registry
Входные данные могут быть массивом, JSON-строкой или объектом Registry. Метод использует только ключи first_name, second_name и last_name.
Формула
language constants
Порядок частей имени задаётся языковой константой. Поэтому порядок можно менять через переопределения языка Joomla отдельно для сайта и админки, не меняя PHP-код.
Поля имени
-
Имя покупателя. Если значение непустое, в постфикс формулы добавляется буква F.
-
Отчество. Если значение непустое, в постфикс формулы добавляется буква S.
-
Фамилия. Если значение непустое, в постфикс формулы добавляется буква L.
-
Постфикс строится в фиксированном порядке first_name, second_name, last_name. Порядок ключей во входном массиве на постфикс не влияет.
Пример вызова
array input
<?php
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
$data = [
'first_name' => 'Иван',
'second_name' => 'Иванович',
'last_name' => 'Петров',
];
$name = UserHelper::nameToString($data);
// Петров Иван Иванович
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
$data = [
'first_name' => 'Иван',
'second_name' => 'Иванович',
'last_name' => 'Петров',
];
$name = UserHelper::nameToString($data);
// Петров Иван Иванович
Как выбирается формула
1. Собирается постфикс
F / S / L
Метод смотрит, какие из трёх ключей непустые. Например, имя + фамилия дают постфикс FL, а полные имя + отчество + фамилия дают FSL.
2. Ищется точная константа
COM_RADICALMART_USER_NAME_FORMULA_*
Если существует константа с таким постфиксом, используется она. Для полного набора данных это COM_RADICALMART_USER_NAME_FORMULA_FSL.
3. Есть fallback
COM_RADICALMART_USER_NAME_FORMULA
Если специальной константы нет, используется базовая формула COM_RADICALMART_USER_NAME_FORMULA. Из неё всё равно берутся только непустые значения.
Формулы, которые уже есть
ru-RU и en-GB
COM_RADICALMART_USER_NAME_FORMULA="first_name,second_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_FS="first_name,second_name"
COM_RADICALMART_USER_NAME_FORMULA_FL="first_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_SL="second_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_FSL="last_name,first_name,second_name"
COM_RADICALMART_USER_NAME_FORMULA_FS="first_name,second_name"
COM_RADICALMART_USER_NAME_FORMULA_FL="first_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_SL="second_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_FSL="last_name,first_name,second_name"
Примеры результата
Иван + Иванович + Петров
FSL
Используется COM_RADICALMART_USER_NAME_FORMULA_FSL = last_name,first_name,second_name. Результат: Петров Иван Иванович.
Иван + Петров
FL
Используется COM_RADICALMART_USER_NAME_FORMULA_FL = first_name,last_name. Результат: Иван Петров.
Иван + Иванович
FS
Используется COM_RADICALMART_USER_NAME_FORMULA_FS = first_name,second_name. Результат: Иван Иванович.
Иванович + Петров
SL
Используется COM_RADICALMART_USER_NAME_FORMULA_SL = second_name,last_name. Результат: Иванович Петров.
Только одно поле
F, S или L
Если отдельной константы для одного поля нет, сработает базовая формула. Метод пройдёт по ней и добавит только непустое значение.
Пустые данные
empty
Если все три значения пустые или отсутствуют, результатом будет пустая строка.
Переопределение языка
Переопределяйте константы через стандартные языковые переопределения Joomla. Если имя показывается и на сайте, и в панели управления, создайте переопределение для обоих клиентов: Site и Administrator.
Пример: всегда Имя Фамилия для полного имени
language override
COM_RADICALMART_USER_NAME_FORMULA_FSL="first_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_FL="first_name,last_name"
COM_RADICALMART_USER_NAME_FORMULA_FL="first_name,last_name"
Менять только порядок
формула
В значении константы указываются ключи данных через запятую: first_name, second_name, last_name. Текстовые разделители внутри формулы не используются; части имени соединяются пробелом.
Добавлять только существующие ключи
без произвольных полей
Метод проверяет только три ключа. Email, телефон, название компании и другие данные в строку имени этим методом не попадут.
Учитывать неполные данные
fallback
Если вы меняете только COM_RADICALMART_USER_NAME_FORMULA_FSL, неполные имена будут продолжать работать по формулам FS, FL, SL или по fallback.
Примеры для разработчика
Массив, JSON или Registry
input variants
<?php
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
use Joomla\Registry\Registry;
$nameFromArray = UserHelper::nameToString($contacts);
$nameFromJson = UserHelper::nameToString('{"first_name":"Иван","last_name":"Петров"}');
$nameFromRegistry = UserHelper::nameToString(new Registry($contacts));
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
use Joomla\Registry\Registry;
$nameFromArray = UserHelper::nameToString($contacts);
$nameFromJson = UserHelper::nameToString('{"first_name":"Иван","last_name":"Петров"}');
$nameFromRegistry = UserHelper::nameToString(new Registry($contacts));
Вывод в своём шаблоне
escape output
<?php
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
$name = UserHelper::nameToString($contacts);
echo HTMLHelper::_('string.truncate', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'), 120);
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\Component\RadicalMart\Administrator\Helper\UserHelper;
$name = UserHelper::nameToString($contacts);
echo HTMLHelper::_('string.truncate', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'), 120);
Где используется
Создание покупателя
customer save
Если для нового покупателя не задано имя Joomla-пользователя, RadicalMart может сформировать его из контактных полей через nameToString().
Список заказов
administrator orders
В списках заказов имя контакта выводится из данных заказа через этот helper, если не используется кастомный layout покупателя.
Список покупателей
administrator customers
В списке покупателей имя из контактов может использоваться как отображаемое имя, а при его отсутствии показывается имя Joomla-пользователя.