Forum categories

Теги шаблона market.add.tpl — детальная таблица

теги, назначаемые в шаблоне формы добавления товара модулем Market PRO. Для каждого тега указаны назначение, логическая последовательность формирования, а также источник: строка локализации, поле в БД, функция импорта или функция генерации HTML.

webitproff
webitproff • 2026-09-05 06:01 #585

Теги шаблона 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}Поле ввода H1cot_inputbox('text', 'ritemmarketmetah1', $ritem['fieldmrkt_metah1'], ['maxlength' => '255']); импорт: cot_import('ritemmarketmetah1', 'POST', 'TXT', 255); БД: fieldmrkt_metah1
{MARKETADD_FORM_META_TITLE}Поле ввода мета-titlecot_inputbox('text', 'ritemmarketmetatitle', $ritem['fieldmrkt_metatitle'], ...); импорт: cot_import('ritemmarketmetatitle', ...); БД: fieldmrkt_metatitle
{MARKETADD_FORM_META_DESC}Поле ввода мета-descriptioncot_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) и как «родительская категория» (по роли в фильтре).

🗿

🧙‍♂️ 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.