Forum categories

Теги товара в шаблоне market.list.tpl - списки товаров блок LIST_ROW

Эта таблица описывает теги, которые формируются для каждого товара внутри цикла <!-- BEGIN: LIST_ROW --> в шаблоне списка магазина.

Привет , ты много пропустил
webitproff
Telegram for messages
@webitproff
webitproff • 2026-09-05 08:24 #1

Справочник тегов LIST_ROW_* для блока товара в market.list.tpl

Ниже перечислены все теги, которые формируются для каждого товара внутри цикла <!-- BEGIN: LIST_ROW --> в шаблоне списка магазина.

Основная часть тегов создаётся функцией cot_generate_markettags(), вызываемой с параметрами: cot_generate_markettags($item, 'LIST_ROW_', $itemListTruncateText, Cot::$usr['isadmin'], false, '', $backUrl). Внутри функции все ключи массива не имеют префикса; префикс 'LIST_ROW_' добавляется при возврате. Дополнительные теги, такие как {LIST_ROW_OWNER}, {LIST_ROW_ODDEVEN} и другие, назначаются отдельно в цикле market.list.php после вызова функции.

Для каждого тега указан фрагмент исходного кода (до добавления префикса), тип данных и пример вывода. Примеры приведены условно и могут отличаться в зависимости от данных.

ТегНазначениеТип данныхИсточник (код функции) и пример вывода
{LIST_ROW_URL}URL страницы товараstring (URL)
'URL' => $item_data['fieldmrkt_pageurl'],

Пример:

/market/cat/alias
{LIST_ROW_ID}Идентификатор товараint
'ID' => $item_data['fieldmrkt_id'],

Пример:

123
{LIST_ROW_TITLE}Название товара (экранированное)string (HTML-экранированный)
'TITLE' => htmlspecialchars($item_data['fieldmrkt_title'], ENT_COMPAT, 'UTF-8', false),

Пример:

Название товара
{LIST_ROW_METATITLE}Мета-заголовок товара (экранированный)string (HTML-экранированный)
'METATITLE' => htmlspecialchars($item_data['fieldmrkt_metatitle'], ENT_COMPAT, 'UTF-8', false),

Пример:

Мета-заголовок
{LIST_ROW_BREADCRUMBS}Хлебные крошки товара (категория + название)string (HTML)
'BREADCRUMBS' => $breadcrumbs,

где $breadcrumbs = cot_breadcrumbs(array_merge($pagepath, $pageLink), $pagepath_home)
Пример:

<a href="...">Категория</a> / Название
{LIST_ROW_BREADCRUMBS_ITEM}Полные хлебные крошки: Главная → Market → категория → товарstring (HTML)
'BREADCRUMBS_ITEM' => cot_breadcrumbs(array_merge([[cot_url('index'), Cot::$L['Main']], [[cot_url('market'), Cot::$L['market_Market']]], cot_structure_buildpath('market', $item_data['fieldmrkt_cat']), [htmlspecialchars($item_data['fieldmrkt_title'], ENT_QUOTES, 'UTF-8')]), $pagepath_home, false),

Пример:

Главная > Market > Категория > Товар
{LIST_ROW_ALIAS}Алиас товара (часть URL)string
'ALIAS' => $item_data['fieldmrkt_alias'],

Пример:

my-product
{LIST_ROW_PCOD}Код товара (артикул)string
'PCOD' => $item_data['fieldmrkt_pcod'],

Пример:

ART-001
{LIST_ROW_STATE}Числовой статус товара (0/1/2)int
'STATE' => $item_data['fieldmrkt_state'],

Пример:

0
{LIST_ROW_STATUS}Машинное имя статуса (published/pending/draft)string
'STATUS' => $item_data['fieldmrkt_status'],

где $item_data['fieldmrkt_status'] = cot_market_status($item_data['fieldmrkt_state'])
Пример:

published
{LIST_ROW_LOCAL_STATUS}Локализованное название статусаstring
'LOCAL_STATUS' => $L['market_status_' . $item_data['fieldmrkt_status']],

Пример:

Опубликован
{LIST_ROW_CAT}Код категории товараstring
'CAT' => $item_data['fieldmrkt_cat'],

Пример:

electronics
{LIST_ROW_CAT_URL}URL категорииstring (URL)
'CAT_URL' => $cat_url,

Пример:

/market/electronics
{LIST_ROW_CAT_TITLE}Название категории (экранированное)string (HTML-экранированный)
'CAT_TITLE' => $catTitle,

Пример:

Электроника
{LIST_ROW_CAT_PATH}Хлебные крошки категорииstring (HTML)
'CAT_PATH' => $catpath,

Пример:

<a href="...">Электроника</a>
{LIST_ROW_CAT_PATH_SHORT}Краткая ссылка на категориюstring (HTML)
'CAT_PATH_SHORT' => cot_rc_link($cat_url, $catTitle),

Пример:

<a href="/market/electronics">Электроника</a>
{LIST_ROW_CAT_DESCRIPTION}Описание категорииstring
'CAT_DESCRIPTION' => $catDescription,

Пример:

Описание категории
{LIST_ROW_CAT_ICON}HTML-код иконки категории (если есть)string (HTML) | пусто
'CAT_ICON' => !empty($structure['market'][$item_data['fieldmrkt_cat']]['icon']) ? cot_rc('img_structure_cat', ['icon' => ..., 'title' => ..., 'desc' => ...]) : '',

Пример:

<img src="icon.png" ...>
{LIST_ROW_CAT_ICON_SRC}Путь к иконке категорииstring | пусто
'CAT_ICON_SRC' => isset($structure['market'][$item_data['fieldmrkt_cat']]['icon']) ? $structure['market'][$item_data['fieldmrkt_cat']]['icon'] : '',

Пример:

/images/icons/electronics.png
{LIST_ROW_DESCRIPTION}Краткое описание товара (экранированное)string (HTML-экранированный)
'DESCRIPTION' => $itemDescription,

где $itemDescription = (isset($item_data['fieldmrkt_desc']) && $item_data['fieldmrkt_desc'] !== '') ? htmlspecialchars($item_data['fieldmrkt_desc']) : '';
Пример:

Краткое описание
{LIST_ROW_TEXT}Полный текст товара (обработанный парсером)string (HTML)
'TEXT' => $text,

где $text = cot_parse($item_data['fieldmrkt_text'], $cfg['market']['marketmarkup'], $item_data['fieldmrkt_parser']);
Пример:

<p>Обработанный текст</p>
{LIST_ROW_TEXT_SHORT}Краткий текст (обрезанный, без HTML)string
'TEXT_SHORT' => cot_cutstring(strip_tags($item_data['fieldmrkt_text']), 250),

Пример:

Это укороченный текст на 250 символов без html тегов
{LIST_ROW_TEXT_CUT}Текст после обрезки по разделителю morestring (HTML)
'TEXT_CUT' => $text_cut,

где $text_cut = cot_cut_more_market($text);
Пример:

<p>Текст до разделителя</p>
{LIST_ROW_TEXT_IS_CUT}Флаг, был ли текст обрезанboolean
'TEXT_IS_CUT' => $cutted,

где $cutted = mb_strlen($text) > mb_strlen($text_cut);
Пример:

true
{LIST_ROW_DESCRIPTION_OR_TEXT}Описание или полный текст, если описание пустоеstring (HTML)
'DESCRIPTION_OR_TEXT' => $itemDescription !== '' ? $itemDescription : $text,

Пример:

Описание или полный текст
{LIST_ROW_DESCRIPTION_OR_TEXT_CUT}Описание или обрезанный текстstring (HTML)
'DESCRIPTION_OR_TEXT_CUT' => $itemDescription !== '' ? $itemDescription : $text_cut,

Пример:

Описание или обрезанный текст
{LIST_ROW_MORE}Ссылка «Подробнее», если текст обрезанstring (HTML) | пусто
'MORE' => ($cutted) ? cot_rc('list_more', ['page_url' => $item_data['fieldmrkt_pageurl']]) : '',

Пример:

<a href="...">Подробнее</a>
{LIST_ROW_AUTHOR}Имя автора товараstring
'AUTHOR' => (isset($item_data['fieldmrkt_author']) && $item_data['fieldmrkt_author'] != '') ? htmlspecialchars($item_data['fieldmrkt_author']) : '',

Пример:

Иван
{LIST_ROW_OWNER_ID}ID владельца товараint
'OWNER_ID' => $item_data['fieldmrkt_ownerid'],

Пример:

123
{LIST_ROW_OWNER_NAME}Имя владельца (из SQL JOIN с пользователями)string
'OWNER_NAME' => (isset($item_data['user_name']) && $item_data['user_name'] != '') ? htmlspecialchars($item_data['user_name']) : '',

Пример:

Имя пользователя
{LIST_ROW_COSTDFLT}Цена в валюте по умолчанию, отформатированнаяstring
'COSTDFLT' => (floor($item_data['fieldmrkt_costdflt']) != $item_data['fieldmrkt_costdflt']) ? number_format($item_data['fieldmrkt_costdflt'], '2', '.', ' ') : number_format($item_data['fieldmrkt_costdflt'], '0', '.', ' '),

Пример:

1 234.56
{LIST_ROW_COST_USD}Цена в долларах как число с плавающей точкойfloat
'COST_USD' => (float)$item_data['fieldmrkt_cost_usd'],

Пример:

12.5
{LIST_ROW_COST_USD_RAW}Цена в долларах строкой без лишних нулейstring
'COST_USD_RAW' => rtrim(rtrim(number_format((float)$item_data['fieldmrkt_cost_usd'], 2, '.', ''), '0'), '.'),

Пример:

12.5
{LIST_ROW_COST_USD_FORMATTED}Цена в долларах, отформатированная с двумя знаками и пробелом-разделителем тысяч (если > 0)string | пусто
'COST_USD_FORMATTED' => $item_data['fieldmrkt_cost_usd'] > 0 ? number_format($item_data['fieldmrkt_cost_usd'], 2, '.', ' ') : '',

Пример:

12.50
{LIST_ROW_CREATED}Дата создания (отформатированная)string
'CREATED' => cot_date($date_format, $item_data['fieldmrkt_date']),

где $date_format = 'datetime_medium'
Пример:

05.09.2026 12:30
{LIST_ROW_UPDATED}Дата обновления (отформатированная)string
'UPDATED' => cot_date($date_format, $item_data['fieldmrkt_updated']),

Пример:

05.09.2026 14:00
{LIST_ROW_CREATED_STAMP}UNIX timestamp созданияint
'CREATED_STAMP' => $item_data['fieldmrkt_date'],

Пример:

1725535800
{LIST_ROW_UPDATED_STAMP}UNIX timestamp обновленияint
'UPDATED_STAMP' => $item_data['fieldmrkt_updated'],

Пример:

1725539400
{LIST_ROW_HITS}Количество просмотровint
'HITS' => $item_data['fieldmrkt_count'],

Пример:

42
{LIST_ROW_ADMIN}HTML-блок админ-действий (если есть права)string (HTML) | пусто
'ADMIN' => $admin_rights ? cot_rc('list_row_admin', ['unvalidate_url' => $unvalidate_url, 'edit_url' => $edit_url]) : '',

Пример:

<div class="admin">...</div>
{LIST_ROW_ADMIN_EDIT}Ссылка «Редактировать»string (HTML) | пусто
'ADMIN_EDIT' => ($admin_rights || $usr['id'] == $item_data['fieldmrkt_ownerid']) ? cot_rc_link($edit_url, $L['Edit']) : '',

Пример:

<a href="...">Редактировать</a>
{LIST_ROW_ADMIN_EDIT_URL}URL редактированияstring (URL) | пусто
'ADMIN_EDIT_URL' => ($admin_rights || $usr['id'] == $item_data['fieldmrkt_ownerid']) ? $edit_url : '',

Пример:

/market/m=edit&id=123
{LIST_ROW_ADMIN_UNVALIDATE}Ссылка смены статуса (утвердить/снять)string (HTML) | пусто
'ADMIN_UNVALIDATE' => $admin_rights ? cot_rc_link($unvalidate_confirm_url, $L['Putinvalidationqueue'], 'class="confirmLink"') : '',

(для товара в очереди: cot_rc_link($validate_confirm_url, $L['Validate']))
Пример:

<a href="..." class="confirmLink">Утвердить</a>
{LIST_ROW_ADMIN_UNVALIDATE_URL}URL смены статусаstring (URL) | пусто
'ADMIN_UNVALIDATE_URL' => $admin_rights ? $unvalidate_confirm_url : '',

Пример:

/admin/market/validate&id=123&x=...
{LIST_ROW_ADMIN_DELETE}Ссылка «Удалить» с подтверждениемstring (HTML) | пусто
'ADMIN_DELETE' => $admin_rights ? cot_rc_link($delete_confirm_url, $L['Delete'], 'class="confirmLink"') : '',

Пример:

<a href="..." class="confirmLink">Удалить</a>
{LIST_ROW_ADMIN_DELETE_URL}URL удаленияstring (URL) | пусто
'ADMIN_DELETE_URL' => $admin_rights ? $delete_confirm_url : '',

Пример:

/market/m=edit&a=update&delete=1&id=123
{LIST_ROW_ADMIN_CLONE}Ссылка «Клонировать» (если есть право записи)string (HTML) | пусто
'ADMIN_CLONE' => cot_auth('market', 'any', 'W') ? cot_rc_link($clone_url, $L['market_clone']) : '',

Пример:

<a href="...">Клонировать</a>
{LIST_ROW_ADMIN_CLONE_URL}URL клонированияstring (URL) | пусто
'ADMIN_CLONE_URL' => cot_auth('market', 'any', 'W') ? $clone_url : '',

Пример:

/market/m=add&c=cat&clone=123
{LIST_ROW_OWNER}HTML-ссылка на профиль владельцаstring (HTML)

Назначается отдельно:
 

$t->assign(['LIST_ROW_OWNER' => cot_build_user($item['fieldmrkt_ownerid'], $item['user_name'])]);

Пример:

<a href="/users/123">Имя</a>
{LIST_ROW_ODDEVEN}Класс чётности строки (odd/even)string
'LIST_ROW_ODDEVEN' => cot_build_oddeven($jj)

Пример:

odd
{LIST_ROW_NUM}Порядковый номер на текущей страницеint
'LIST_ROW_NUM' => $jj

Пример:

3
{LIST_ROW_ABS_NUM}Абсолютный номер с учётом пагинацииint
'LIST_ROW_ABS_NUM' => $jj + $d

Пример:

28
{LIST_ROW_OWNER_*}Пользовательские теги владельца (например, LIST_ROW_OWNER_NAME, LIST_ROW_OWNER_ID)различные

Назначаются через:
 

$t->assign(cot_generate_usertags($item, 'LIST_ROW_OWNER_'));

Пример:

LIST_ROW_OWNER_NAME = "Имя"

Примечания

  • Все перечисленные теги доступны только внутри цикла <!-- BEGIN: LIST_ROW --> ... <!-- END: LIST_ROW --> шаблона.
  • Основная часть тегов (все, кроме {LIST_ROW_OWNER}, {LIST_ROW_ODDEVEN}, {LIST_ROW_NUM}, {LIST_ROW_ABS_NUM} и LIST_ROW_OWNER_*) формируется функцией cot_generate_markettags(). Внутри функции ключи не имеют префикса, но при возврате к каждому ключу добавляется префикс, переданный вторым аргументом (в данном случае 'LIST_ROW_').
  • Теги {LIST_ROW_OWNER}, {LIST_ROW_ODDEVEN}, {LIST_ROW_NUM}, {LIST_ROW_ABS_NUM} и LIST_ROW_OWNER_* назначаются уже после вызова cot_generate_markettags() непосредственно в цикле файла market.list.php.
  • Источник данных — массив $item, полученный из SQL-запроса с объединением таблиц cot_market и cot_users (для получения имени владельца).

Разница между {LIST_ROW_COST_USD}, {LIST_ROW_COST_USD_RAW} и {LIST_ROW_COST_USD_FORMATTED}

Все три тега используют одно и то же поле БД fieldmrkt_cost_usd, но отличаются форматированием:

  • {LIST_ROW_COST_USD} — возвращает значение как float без изменений (например, 12.5). Используйте для математических операций или когда нужна сырая числовая величина.
  • {LIST_ROW_COST_USD_RAW} — возвращает строку, в которой число отформатировано с двумя знаками после запятой, но затем удалены завершающие нули и точка (если число целое). Например, из 12.50 получится 12.5, а из 12.0012. Подходит для вывода цены без лишних десятичных знаков.
  • {LIST_ROW_COST_USD_FORMATTED} — возвращает строку, отформатированную через number_format($value, 2, '.', ' ') (два знака после запятой и пробел как разделитель тысяч), но только если цена больше нуля. Если цена равна нулю, возвращается пустая строка. Используйте для красивого отображения цены с гарантированными двумя десятичными знаками.

Таким образом, COST_USD — это число, COST_USD_RAW — «чистовая» строка без нулей, COST_USD_FORMATTED — строго отформатированная строка с двумя знаками и пробелами.

This post was edited by webitproff (2026-09-05 08:30, 2 hours ago)
🗿

🧙‍♂️ Well met, good traveler! Fate has guided your steps to our humble realm. Here, wise sages and masters of the coding craft ⚒️📜 gather to unravel the mysteries of the code ✨⚙️, share their knowledge, and add new chapters to our chronicles.
⬅️ To the left lie ancient scrolls 📚 filled with forgotten wisdom. ⬆️ Straight ahead, friendly folk offer counsel 💬 to those in need. ➡️ To the right, you may become a chronicler ✍️ yourself, sharing your craft and leaving words of wisdom for those yet to come.
📝 Delay no longer—tell us the name by which you are known, complete the rite of registration 🛡️, and join our fellowship!
🏰 Our brotherhood holds no secret initiation, yet many halls remain closed to wandering guests, for some knowledge 💎 is reserved for those who choose to walk this path beside us.