Как получить и вывести в шаблон никнейм или ссылку на профиль пользователя в Cotonti

В этой инструкции показано, как получить имя и ссылку на профиль владельца любой сущности (страницы, товара, записи и т.д.) и передать их в шаблон в виде трёх готовых тегов

Универсальная инструкция: получение и вывод данных владельца в Cotonti

В этой инструкции показано, как получить имя и ссылку на профиль владельца любой сущности (страницы, товара, записи и т.д.) и передать их в шаблон в виде трёх готовых тегов:

  • {XXX_OWNER} — готовая HTML-ссылка на профиль с именем владельца.
  • {XXX_OWNER_URL} — чистый URL профиля (без тега <a>).
  • {XXX_OWNER_NAME} — просто никнейм владельца.

Инструкция универсальна и подходит для любого модуля или плагина Cotonti.

1. Подготовка PHP-файла

1.1. Подключите пространство имён

В начале вашего PHP-файла (после defined('COT_CODE')) добавьте:

use cot\users\UsersRepository;

1.2. Получите ID владельца

Предположим, у вас есть массив $item с данными сущности, в котором хранится ID владельца. Название поля может быть разным (например, page_ownerid, prd_ownerid, fieldmrkt_ownerid и т.п.). Замените {ENTITY}_OWNERID на реальное имя поля.

$ownerId = isset($item['{ENTITY}_ownerid']) ? (int)$item['{ENTITY}_ownerid'] : 0;

1.3. Получите информацию о владельце

Используйте UsersRepository::getInstance()->getById() для получения данных пользователя. Если владелец не найден, подставьте значение по умолчанию (например, «Удалён»).

$ownerInfo = null;
if ($ownerId > 0) {
 $ownerInfo = UsersRepository::getInstance()->getById($ownerId);
}
$ownerName = ($ownerInfo && isset($ownerInfo['user_name'])) ? $ownerInfo['user_name'] : Cot::$L['Deleted'];

1.4. Сформируйте три переменные для шаблона

$ownerLink = cot_rc_link(
 cot_url('users', [
 'm' => 'details',
 'id' => $ownerId,
 'u' => htmlspecialchars($ownerName)
 ]),
 htmlspecialchars($ownerName)
);
$ownerUrl = cot_url('users', [
 'm' => 'details',
 'id' => $ownerId,
 'u' => htmlspecialchars($ownerName)
]);
$ownerNamePlain = htmlspecialchars($ownerName);

1.5. Передайте переменные в шаблон

Если вы используете массив $itemedit_array или прямой вызов $t->assign(), добавьте следующие ключи:

$t->assign([
 '{PREFIX}_OWNER' => $ownerLink,
 '{PREFIX}_OWNER_URL' => $ownerUrl,
 '{PREFIX}_OWNER_NAME'=> $ownerNamePlain,
]);

Где {PREFIX} — это префикс вашего модуля (например, MARKETEDIT_FORM, PAGE_ROW, PRD_EDIT и т.п.). Используйте тот префикс, который уже применяется для других тегов в вашем шаблоне.

2. Использование в шаблоне (TPL)

В вашем .tpl-файле вы можете использовать теги следующим образом:

<!-- Готовая ссылка на профиль с именем -->
<p>{PREFIX_OWNER}</p>
<!-- Только URL профиля -->
<a href="{PREFIX_OWNER_URL}" target="_blank">Открыть профиль</a>
<!-- Только никнейм -->
<span>{PREFIX_OWNER_NAME}</span>

Вы можете комбинировать эти теги по своему усмотрению, например:

<div class="owner-info">
 Владелец: <a href="{PREFIX_OWNER_URL}" class="owner-link">{PREFIX_OWNER_NAME}</a>
</div>

3. Альтернативный вариант без UsersRepository

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

$ownerName = Cot::$db->query(
 "SELECT user_name FROM " . Cot::$db->users . " WHERE user_id = ?",
 $ownerId
)->fetchColumn();
if (!$ownerName) {
 $ownerName = Cot::$L['Deleted'];
}

Остальные шаги (формирование ссылок и передача в шаблон) остаются теми же.

4. Пример из модуля MarketPro

В файле market.edit.php было:

use cot\users\UsersRepository;
// ...
$owner_info = null;
if (!empty($item['fieldmrkt_ownerid'])) {
 $owner_info = UsersRepository::getInstance()->getById((int)$item['fieldmrkt_ownerid']);
}
$owner_name = ($owner_info && isset($owner_info['user_name'])) ? $owner_info['user_name'] : Cot::$L['Deleted'];
// В массиве $itemedit_array:
$itemedit_array = [
 // ...
 'MARKETEDIT_FORM_OWNER' => cot_rc_link(
 cot_url('users', ['m' => 'details', 'id' => $item['fieldmrkt_ownerid'], 'u' => htmlspecialchars($owner_name)]),
 htmlspecialchars($owner_name)
 ),
 'MARKETEDIT_FORM_OWNER_URL' => cot_url('users', ['m' => 'details', 'id' => $item['fieldmrkt_ownerid'], 'u' => htmlspecialchars($owner_name)]),
 'MARKETEDIT_FORM_OWNER_NAME' => htmlspecialchars($owner_name),
 // ...
];

В шаблоне market.edit.tpl используется {MARKETEDIT_FORM_OWNER_URL} и {MARKETEDIT_FORM_OWNER_NAME}.

5. Важные замечания

  • Безопасность: всегда экранируйте имя пользователя с помощью htmlspecialchars() для предотвращения XSS.
  • Обработка отсутствующего пользователя: всегда проверяйте, что пользователь существует, иначе подставляйте значение по умолчанию (например, «Удалён»).
  • Префиксы: убедитесь, что префикс тегов (PREFIX_) совпадает с тем, что используется в вашем шаблоне для остальных полей.
  • Производительность: UsersRepository::getInstance()->getById() кэширует результат, поэтому многократные вызовы в пределах одного запроса не приведут к лишним запросам к БД.

Следуя этой инструкции, вы сможете легко добавить вывод информации о владельце в любой модуль Cotonti.

3 минут чтения Sodium Carbonate

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

webitproff

Оффлайн

Sodium Carbonate

Последняя авторизация: 07.09.2026 15:27

Обо мне кратко
Поддержка и разработка веб-проектов на CMF Cotonti: приватные мессенджеры через сайт, открытые и закрытые небольшие социальные сети, торговые площадки и маркетплейсы, портал биржи фриланса и услуг, каталоги товаров оптовых поставщиков, дропшиппинг-платформы, интернет-магазины и многое другое.
Смотреть разработки и скачать
Публичное портфолио моих работ и разработок
Телеграм для сообщений
@webitproff
Телеграм-канал
@s/aBuyFILE
  • Страница размещена: 07.09.2026 15:03
  • Последнее обновление: 07.09.2026 15:04

Похожие страницы

Cotonti или более комфортная платформа: наш выбор
1 Cotonti безусловно проигрывает многим аналогам по насыщенности дистрибутива наворотами, однако при этом сохраняет
LESS mixins или примеси LESS в Cotonti
2 Независимо от сложности проекта, всегда хочется сверстать тему красиво, быстро, просто и понято. Для этого можно (и
CVS-Tools для Cotonti. Импорт и экспорт из CVS или Excel файла
3 Как выполнить экспорт товаров или статей в Cotonti CMS и после выполнить импорт из CVS или Excel файла в базу данных
Товар недоступен, устарел или его нет в наличии
4 Давайте детально рассмотрим, как с точки зрения SEO быть в случае если товары по каким-либо причинам становятся
Хэштеги или метки для постов в блоге
5 Ведение блога – это важная часть контентной маркетинговой стратегии. Качественный блог отличают не только семантичная