Как получить и вывести в шаблон никнейм или ссылку на профиль пользователя в 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 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-09-07 15:27

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Page published: 2026-09-07 15:03
  • Last update: 2026-09-07 15:04

Similar pages

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