Категории форума

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

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

Привет , ты много пропустил
webitproff
Телеграм для сообщений
@webitproff
webitproff • 05.09.2026 07:12 #1

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

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

ТегНазначениеИсточник (локализация / импорт / БД / функция)
{MARKETEDIT_PAGETITLE}Заголовок страницы «Свойства товара»Локализация: Cot::$L['market_edittitle'], тип: string.
{MARKETEDIT_SUBTITLE}Подзаголовок страницыЛокализация: Cot::$L['market_editsubtitle'], тип: string.
{MARKETEDIT_BREADCRUMBS}Хлебные крошкиФункция cot_breadcrumbs($breadcrumbs, Cot::$cfg['homebreadcrumb']). Массив $breadcrumbs строится как: cot_structure_buildpath('market', $item['fieldmrkt_cat']) + [cot_market_url($item), $item['fieldmrkt_title']] + Cot::$L['market_edittitle']. Возвращает HTML-строку.
{MARKETEDIT_FORM_SEND}URL отправки формыФункция cot_url('market', ['m' => 'edit', 'a' => 'update', 'id' => $item['fieldmrkt_id']]). Генерирует URL с параметрами редактирования. Тип: string (URL).
{MARKETEDIT_FORM_ID}ID редактируемого товараБД: $item['fieldmrkt_id']. Поле таблицы cot_market, тип: integer.
{MARKETEDIT_FORM_STATE}Числовой статус товара (0 – опубликован, 1 – на рассмотрении, 2 – черновик)БД: $item['fieldmrkt_state']. Поле таблицы cot_market, тип: integer (0, 1, 2).
{MARKETEDIT_FORM_STATUS}Машинное имя статуса (published, pending, draft)Функция cot_market_status($item['fieldmrkt_state']); преобразует числовой статус в строковое имя. Возвращает string. Не хранится в БД.
{MARKETEDIT_FORM_LOCAL_STATUS}Локализованное название статусаЛокализация: Cot::$L['market_status_' . $item['fieldmrkt_status']]. Ключ формируется динамически на основе машинного имени статуса. Тип: string.
{MARKETEDIT_FORM_CAT}Выпадающий список категорий (стандартный)Функция cot_selectbox_structure('market', $item['fieldmrkt_cat'], 'ritemmarketcat'). Выбранное значение берётся из БД: fieldmrkt_cat. Данные категорий из Cot::$structure['market']. Возвращает HTML-строку (select).
{MARKETEDIT_FORM_CAT_SHORT}Список категорий, ограниченный текущей/родительской категориейФункция cot_selectbox_structure('market', $item['fieldmrkt_cat'], 'ritemmarketcat', $c). Дополнительный параметр $c (код родительской категории) фильтрует список. Возвращает HTML select. Если $c пуст, фильтр не применяется.
{MARKETEDIT_FORM_CAT_S2}Select2-список категорий (полный)Функция cot_market_selectbox_structure_select2('market', $item['fieldmrkt_cat'], 'ritemmarketcat'). Аналогично стандартному, но с поддержкой Select2 (поиск, data-depth). Возвращает HTML select.
{MARKETEDIT_FORM_CAT_SHORT_S2}Select2-список с фильтром по текущей/родительской категорииФункция cot_market_selectbox_structure_select2('market', $item['fieldmrkt_cat'], 'ritemmarketcat', $c). С фильтрацией по $c. Возвращает HTML select.
{MARKETEDIT_FORM_META_H1}Поле ввода H1cot_inputbox('text', 'ritemmarketmetah1', $item['fieldmrkt_metah1'], ['maxlength' => '255']); значение из БД: fieldmrkt_metah1. Тип: string. Если поле отсутствует, значение по умолчанию — пустая строка (устанавливается защита от варнингов).
{MARKETEDIT_FORM_META_TITLE}Поле ввода мета-titlecot_inputbox('text', 'ritemmarketmetatitle', $item['fieldmrkt_metatitle'], ...); значение из БД: fieldmrkt_metatitle. Тип: string. Дефолт — пустая строка.
{MARKETEDIT_FORM_META_DESC}Поле ввода мета-descriptioncot_textarea('ritemmarketmetadesc', $item['fieldmrkt_metadesc'], 2, 64, ...); значение из БД: fieldmrkt_metadesc. Тип: string. Дефолт — пустая строка.
{MARKETEDIT_FORM_ALIAS}Поле ввода алиасаcot_inputbox('text', 'ritemmarketalias', $item['fieldmrkt_alias'], ...); значение из БД: fieldmrkt_alias. Тип: string. Дефолт отсутствует (может быть пустым).
{MARKETEDIT_FORM_PCOD}Поле ввода кода товара (артикул/внешний код)cot_inputbox('text', 'ritemmarketpcod', $item['fieldmrkt_pcod'], ...); значение из БД: fieldmrkt_pcod. Тип: string. Дефолт отсутствует.
{MARKETEDIT_FORM_TITLE}Основное название товараcot_inputbox('text', 'ritemmarkettitle', $item['fieldmrkt_title'], ...); значение из БД: fieldmrkt_title. Тип: string. Дефолт отсутствует.
{MARKETEDIT_FORM_DESCRIPTION}Краткое описаниеcot_textarea('ritemmarketdesc', $item['fieldmrkt_desc'], 2, 64, ...); значение из БД: fieldmrkt_desc. Тип: string. Дефолт отсутствует.
{MARKETEDIT_FORM_DATE}Выбор даты публикации (с текстовым суффиксом времени)cot_selectbox_date($item['fieldmrkt_date'], 'long', 'ritemmarketdate') . ' ' . Cot::$usr['timetext']; значение даты из БД: fieldmrkt_date. Возвращает HTML-строку (select + текст времени).
{MARKETEDIT_FORM_DATENOW}Флажок «Актуализировать дату» (установить текущую)cot_checkbox(0, 'ritemmarketdatenow'); значение по умолчанию 0 (не отмечен). При отправке формы импортируется как ritemmarketdatenow и используется для обновления даты. Тип: integer (0 или 1).
{MARKETEDIT_FORM_UPDATED}Дата последнего обновления (только для чтения)cot_date('datetime_full', $item['fieldmrkt_updated']) . ' ' . Cot::$usr['timetext']; значение из БД: fieldmrkt_updated. Возвращает строку.
{MARKETEDIT_FORM_TEXT}Основное текстовое полеcot_textarea('ritemmarkettext', $item['fieldmrkt_text'], 24, 120, '', 'input_textarea_editor'); значение из БД: fieldmrkt_text. Тип: string (HTML-контент).
{MARKETEDIT_FORM_DELETE}Радиокнопки «Да/Нет» для пометки товара на удалениеcot_radiobox(0, 'ritemmarketdelete', [1, 0], [Cot::$L['Yes'], Cot::$L['No']]); значение по умолчанию 0 (Нет). При отправке импортируется как ritemmarketdelete. Тип: integer (0 или 1).
{MARKETEDIT_FORM_PARSER}Выбор парсера разметкиcot_selectbox($item['fieldmrkt_parser'], 'ritemmarketparser', cot_get_parsers(), cot_get_parsers(), false); значение из БД: fieldmrkt_parser. Тип: string. Если поле пустое, устанавливается значение по умолчанию из Cot::$cfg['market']['marketparser'].
{MARKETEDIT_FORM_COSTDFLT}Цена в валюте по умолчаниюcot_inputbox('text', 'ritemmarketcostdflt', $item['fieldmrkt_costdflt'], 'size="10"'); значение из БД: fieldmrkt_costdflt. Тип: float/string (числовое значение, вводится как текст).
{MARKETEDIT_FORM_COST_USD}Цена в долларах СШАcot_inputbox('text', 'ritemmarketcostusd', $item['fieldmrkt_cost_usd'], 'size="10"'); значение из БД: fieldmrkt_cost_usd. Тип: float/string.
{MARKETEDIT_FORM_OWNER_ID}Поле ввода ID владельца (только для администраторов)cot_inputbox('text', 'ritemmarketownerid', $item['fieldmrkt_ownerid'], ['maxlength' => '24']); значение из БД: fieldmrkt_ownerid. Тип: integer. Тег добавляется в массив только при Cot::$usr['isadmin'].
{MARKETEDIT_FORM_HITS}Поле ввода счётчика просмотров (только для администраторов)cot_inputbox('text', 'ritemmarketcount', $item['fieldmrkt_count'], ['maxlength' => '8']); значение из БД: fieldmrkt_count. Тип: integer. Тег добавляется только при Cot::$usr['isadmin'].
{MARKETEDIT_FORM_<ИМЯ_ДОП_ПОЛЯ>}Значение дополнительного поляДинамически: cot_build_extrafields('ritemmarket' . $exfld['field_name'], $exfld, $item['fieldmrkt_' . $exfld['field_name']]); БД: fieldmrkt_<имя_поля>. Тип зависит от определения дополнительного поля.
{MARKETEDIT_FORM_<ИМЯ_ДОП_ПОЛЯ>_TITLE}Название дополнительного поляcot_extrafield_title($exfld, 'market_') — использует локализацию $L['market_<имя>_title'] или описание поля. Тип: string.
{MARKETEDIT_FORM_EXTRAFLD}Универсальный тег значения доп. поля в циклеТо же, что и MARKETEDIT_FORM_<ИМЯ_ДОП_ПОЛЯ>, переопределяется в цикле. Тип: HTML/значение поля.
{MARKETEDIT_FORM_EXTRAFLD_TITLE}Универсальный тег названия доп. поляТо же, что и MARKETEDIT_FORM_<ИМЯ_ДОП_ПОЛЯ>_TITLE, переопределяется в цикле. Тип: string.
{TPL_PATH}Путь к файлу используемого шаблона$tpl_Path = $sys['abs_url'] . $extTplFile. Тип: string (URL).

Примечания:

  • Все данные товара для формы загружаются из базы данных в переменную $item (копия записи $row_item). Функция cot_market_import() используется только при отправке формы (POST), она заполняет массив $ritem на основе отправленных полей.
  • Локализация основных заголовков (market_edittitle, market_editsubtitle, названия статусов) берётся из языкового файла модуля Market (market.lang.php или пользовательского market.custom.*.lang.php).
  • Теги MARKETEDIT_FORM_OWNER_ID и MARKETEDIT_FORM_HITS назначаются только при условии Cot::$usr['isadmin'], то есть доступны администраторам.
  • Тег TPL_PATH (не имеет префикса MARKETEDIT) также присваивается шаблону и содержит путь к файлу шаблона. Может использоваться для отладки или отображения.
  • Дополнительные поля (extrafields) определяются в настройках модуля. При их отсутствии цикл не выполняется, и соответствующие теги не будут заполнены.

 

Примечание: ограничение списка категорий

Теги {MARKETEDIT_FORM_CAT_SHORT} и {MARKETEDIT_FORM_CAT_SHORT_S2} предназначены для вывода выпадающего списка категорий, ограниченного текущей И/ИЛИ родительской категорией. Разберём этот момент подробно.

1. Откуда берётся $c?

В файле market.edit.php переменная $c получается (импортируется) из GET-параметра c:

$c = cot_import('c', 'G', 'TXT');

Если параметр пуст или категория не найдена в структуре, $c остаётся пустой строкой. В контексте редактирования значение $c может быть передано через URL, например, если пользователь перешёл на редактирование из определённой категории.

2. Как $c используется в тегах?

При формировании этих тегов $c передаётся как четвёртый аргумент в функции генерации списка категорий:

'MARKETEDIT_FORM_CAT_SHORT'     => cot_selectbox_structure('market', $item['fieldmrkt_cat'], 'ritemmarketcat', $c),
'MARKETEDIT_FORM_CAT_SHORT_S2' => cot_market_selectbox_structure_select2('market', $item['fieldmrkt_cat'], 'ritemmarketcat', $c),

В обеих функциях четвёртый параметр называется $subcat и обозначает родительскую категорию. Именно он управляет фильтрацией списка.

3. Как работает фильтрация?

Функции cot_selectbox_structure() и cot_market_selectbox_structure_select2() анализируют пути категорий. Если задан $subcat, то для каждой категории проверяется, является ли её путь дочерним относительно пути этой родительской категории. Обычно дополнительно включается и сама родительская категория.

  • Например, если $c = 'scooters', то в списке будут только подкатегории scooters (и, возможно, сам scooters).
  • Если $c = '', ограничение не применяется, и выводятся все категории (поведение аналогично {MARKETEDIT_FORM_CAT} и {MARKETEDIT_FORM_CAT_S2}).

4. Разница между _SHORT и _SHORT_S2

Различие только в способе отображения:

  • {MARKETEDIT_FORM_CAT_SHORT} — обычный <select> без дополнительных библиотек.
  • {MARKETEDIT_FORM_CAT_SHORT_S2} — тот же список, но с поддержкой Select2 (поиск, оформление, атрибуты data-depth).

Фильтрация по родительской категории в обоих случаях идентична.

5. Итог

Теги с суффиксом _SHORT используются, когда форма редактирования открывается внутри конкретной категории и нужно ограничить выбор подкатегорий. Переменная $c выступает одновременно как «текущая категория» (по источнику из URL) и как «родительская категория» (по роли в фильтре). В отличие от формы добавления, где $c часто берётся из URL страницы категории, при редактировании она может быть передана явно или отсутствовать.

🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.