Теги шаблона market.add.tpl — детальная таблица
Ниже перечислены все теги, назначаемые в шаблоне формы добавления товара модулем Market PRO. Для каждого тега указаны назначение, логическая последовательность формирования, а также источник: строка локализации, поле в БД, функция импорта или функция генерации HTML.
| Тег | Назначение | Источник (локализация / импорт / БД / функция) |
|---|---|---|
{MARKETADD_PAGETITLE} | Заголовок страницы «Добавить товар» | Локализация: Cot::$L['market_addtitle'] |
{MARKETADD_BREADCRUMBS} | Хлебные крошки | Функция cot_breadcrumbs($breadcrumbs, Cot::$cfg['homebreadcrumb']); $breadcrumbs формируется из структуры категорий и языковой строки market_addtitle |
{MARKETADD_SUBTITLE} | Подзаголовок страницы | Локализация: Cot::$L['market_addsubtitle'] |
{MARKETADD_ADMINEMAIL} | Ссылка на email администратора | Конфигурация: 'mailto:' . Cot::$cfg['adminemail'] |
{MARKETADD_FORM_SEND} | URL отправки формы | Функция cot_url('market', 'm=add&a=add&c=' . $c); $c — код категории из GET |
{MARKETADD_FORM_CAT} | Выпадающий список категорий (стандартный) | Функция cot_selectbox_structure('market', $ritem['fieldmrkt_cat'], 'ritemmarketcat'); данные категорий из Cot::$structure['market'] |
{MARKETADD_FORM_CAT_SHORT} | Список категорий, с фильтром по уже выбранной родительской/текущей | Та же функция, но с параметром $c: cot_selectbox_structure(..., 'ritemmarketcat', $c) |
{MARKETADD_FORM_CAT_S2} | Select2-список категорий (полный) | Функция cot_market_selectbox_structure_select2('market', $ritem['fieldmrkt_cat'], 'ritemmarketcat') |
{MARKETADD_FORM_CAT_SHORT_S2} | Select2-список с фильтром по уже выбранной родительской/текущей | cot_market_selectbox_structure_select2(..., 'ritemmarketcat', $c) |
{MARKETADD_FORM_META_H1} | Поле ввода H1 | cot_inputbox('text', 'ritemmarketmetah1', $ritem['fieldmrkt_metah1'], ['maxlength' => '255']); импорт: cot_import('ritemmarketmetah1', 'POST', 'TXT', 255); БД: fieldmrkt_metah1 |
{MARKETADD_FORM_META_TITLE} | Поле ввода мета-title | cot_inputbox('text', 'ritemmarketmetatitle', $ritem['fieldmrkt_metatitle'], ...); импорт: cot_import('ritemmarketmetatitle', ...); БД: fieldmrkt_metatitle |
{MARKETADD_FORM_META_DESC} | Поле ввода мета-description | cot_textarea('ritemmarketmetadesc', $ritem['fieldmrkt_metadesc'], 2, 64, ...); импорт: cot_import('ritemmarketmetadesc', ...); БД: fieldmrkt_metadesc |
{MARKETADD_FORM_ALIAS} | Поле ввода алиаса | cot_inputbox('text', 'ritemmarketalias', $ritem['fieldmrkt_alias'], ...); импорт: cot_import('ritemmarketalias', ...); БД: fieldmrkt_alias |
{MARKETADD_FORM_TITLE} | Основное название товара | cot_inputbox('text', 'ritemmarkettitle', $ritem['fieldmrkt_title'], ...); импорт: cot_import('ritemmarkettitle', ...); БД: fieldmrkt_title |
{MARKETADD_FORM_DESCRIPTION} | Краткое описание | cot_textarea('ritemmarketdesc', $ritem['fieldmrkt_desc'], 2, 64, ...); импорт: cot_import('ritemmarketdesc', ...); БД: fieldmrkt_desc |
{MARKETADD_FORM_OWNER} | Имя владельца (текущего пользователя) | cot_build_user(Cot::$usr['id'], Cot::$usr['name']); данные из Cot::$usr |
{MARKETADD_FORM_OWNER_ID} | ID владельца | Cot::$usr['id'] |
{MARKETADD_FORM_DATE} | Выбор даты публикации | cot_selectbox_date(Cot::$sys['now'], 'long', 'ritemmarketdate'); импорт: cot_import_date('ritemmarketdate', ...); БД: fieldmrkt_date |
{MARKETADD_FORM_TEXT} | Основное текстовое поле | cot_textarea('ritemmarkettext', $ritem['fieldmrkt_text'], 24, 120, '', 'input_textarea_editor'); импорт: cot_import('ritemmarkettext', 'POST', 'HTM'); БД: fieldmrkt_text |
{MARKETADD_FORM_PARSER} | Выбор парсера разметки | cot_selectbox(Cot::$cfg['market']['marketparser'], 'ritemmarketparser', $parser_list, $parser_list, false); импорт: cot_import('ritemmarketparser', ...); БД: fieldmrkt_parser |
{MARKETADD_FORM_COSTDFLT} | Цена в валюте по умолчанию | cot_inputbox('text', 'ritemmarketcostdflt', $ritem['fieldmrkt_costdflt'], 'size="10"'); импорт: cot_import('ritemmarketcostdflt', 'POST', 'NUM'); БД: fieldmrkt_costdflt |
{MARKETADD_FORM_COSTUSD} | Цена в долларах США | cot_inputbox('text', 'ritemmarketcostusd', $ritem['fieldmrkt_cost_usd'], 'size="10"'); импорт: cot_import('ritemarketcostusd', 'POST', 'NUM'); БД: fieldmrkt_cost_usd |
{MARKETADD_FORM_<ИМЯ_ДОП_ПОЛЯ>} | Значение дополнительного поля | Динамически: cot_build_extrafields('ritemmarket' . $exfld['field_name'], $exfld, $data); импорт: cot_import_extrafields('ritemmarket' . $exfld['field_name'], ...); БД: fieldmrkt_<имя_поля> |
{MARKETADD_FORM_<ИМЯ_ДОП_ПОЛЯ>_TITLE} | Название дополнительного поля | cot_extrafield_title($exfld, 'market_') — использует локализацию $L['market_<имя>_title'] или описание поля |
{MARKETADD_FORM_EXTRAFLD} | Универсальный тег значения доп. поля в блоке EXTRAFLD | То же, что и MARKETADD_FORM_<ИМЯ_ДОП_ПОЛЯ>, переопределяется в цикле |
{MARKETADD_FORM_EXTRAFLD_TITLE} | Универсальный тег названия доп. поля | То же, что и MARKETADD_FORM_<ИМЯ_ДОП_ПОЛЯ>_TITLE, переопределяется в цикле |
Примечания:
- Все поля импортируются в функции
cot_market_import()(файлmarket.functions.php) и затем сохраняются в таблицуcot_marketчерезCot::$db->insert()илиCot::$db->update(). - Локализация основных заголовков берётся из языкового файла модуля Market (
market.lang.phpили пользовательскогоmarket.custom.*.lang.php). - Теги с суффиксом
_S2используют Select2 и формируются функциямиcot_market_selectbox_structure_select2()/cot_market_selectcat_select2(). - Дополнительные поля (extrafields) определяются в настройках модуля и могут иметь собственные строки локализации в файле
market.*.lang.php.
Примечание: ограничение списка категорий
Теги
{MARKETADD_FORM_CAT_SHORT}и{MARKETADD_FORM_CAT_SHORT_S2}предназначены для вывода выпадающего списка категорий, ограниченного текущей И/ИЛИ родительской категорией. Разберём этот момент подробно.
1. Откуда берётся $c?
В файле market.add.php переменная $c получается (импортируется) из GET-параметра c:
$c = (string) cot_import('c', 'G', 'TXT');Если параметр пуст или категория не найдена в структуре, $c сбрасывается в пустую строку:
if ($c === '' || !isset(Cot::$structure['market'][$c])) {
$c = '';
}Таким образом, $c — это код текущей категории, в которой пользователь открыл форму добавления товара. Например, если пользователь находится в разделе «Электроскутеры», $c будет содержать код этой категории.
2. Как $c используется в тегах?
При формировании этих тегов $c передаётся как четвёртый аргумент в функции генерации списка категорий:
'MARKETADD_FORM_CAT_SHORT' => cot_selectbox_structure('market', $ritem['fieldmrkt_cat'], 'ritemmarketcat', $c),
'MARKETADD_FORM_CAT_SHORT_S2' => cot_market_selectbox_structure_select2('market', $ritem['fieldmrkt_cat'], 'ritemmarketcat', $c),В обеих функциях четвёртый параметр называется $subcat и обозначает родительскую категорию. Именно он управляет фильтрацией списка.
3. Как работает фильтрация?
Функции cot_selectbox_structure() и cot_market_selectbox_structure_select2() анализируют пути категорий. Если задан $subcat, то для каждой категории проверяется, является ли её путь дочерним относительно пути этой родительской категории. Обычно дополнительно включается и сама родительская категория.
- Например, если
$c = 'scooters', то в списке будут только подкатегорииscooters(и, возможно, самscooters). - Если
$c = '', ограничение не применяется, и выводятся все категории (поведение аналогично{MARKETADD_FORM_CAT}и{MARKETADD_FORM_CAT_S2}).
4. Разница между _SHORT и _SHORT_S2
Различие только в способе отображения:
{MARKETADD_FORM_CAT_SHORT}— обычный<select>без дополнительных библиотек.{MARKETADD_FORM_CAT_SHORT_S2}— тот же список, но с поддержкой Select2 (поиск, оформление, атрибутыdata-depth).
Фильтрация по родительской категории в обоих случаях идентична.
5. Итог
Теги с суффиксом _SHORT используются, когда форма открывается внутри конкретной категории и нужно предложить пользователю выбрать только её подкатегории. Переменная $c выступает одновременно как «текущая категория» (по источнику из URL) и как «родительская категория» (по роли в фильтре).