Теги шаблона 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} | Поле ввода H1 | cot_inputbox('text', 'ritemmarketmetah1', $item['fieldmrkt_metah1'], ['maxlength' => '255']); значение из БД: fieldmrkt_metah1. Тип: string. Если поле отсутствует, значение по умолчанию — пустая строка (устанавливается защита от варнингов). |
{MARKETEDIT_FORM_META_TITLE} | Поле ввода мета-title | cot_inputbox('text', 'ritemmarketmetatitle', $item['fieldmrkt_metatitle'], ...); значение из БД: fieldmrkt_metatitle. Тип: string. Дефолт — пустая строка. |
{MARKETEDIT_FORM_META_DESC} | Поле ввода мета-description | cot_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 страницы категории, при редактировании она может быть передана явно или отсутствовать.