
- MODX 3
- PHP 8.2
- miniShop3
- Vue 3



Поля магазина задают теги внутри shop. Слева список, справа настройки выбранного тега. XML магазина показывает фрагмент для файла.
Имя справа (<name> и подобные) становится именем тега в XML.
| Режим | Что пишет |
|---|---|
| Текст | Строка внутрь тега |
| Предложения | Вложенные теги без своего текста |
Сохранить в шапке пишет название, путь и режим прайса. Сохранить тег пишет только выбранный тег.
У тега магазина разбираются только setting: и value:. Строка field:pagetitle или data:price в теге магазина попадёт в XML как введённый текст.
Выберите поле товара или введите своё значение. Формат: тип:ключ. Примеры: field:pagetitle, data:price, value:Мой магазин, setting:site_url.
Если источник не выбран, тег предложения в XML пустой. Пустой источник у тега магазина подставляет одноимённый ключ shop_settings (name, company, url). У нового прайса эти ключи пустые, поэтому тег не пишется. Предпросмотр тогда выглядит как <shop><offers/></shop>.
Переключатель Выводить в файл делает выключенный тег в списке бледнее. Выключенный тег в файл не пишется, даже если текст есть. То же для шапки RSS: неактивные title, link, description в канал не попадают. Если поля active нет, тег считается включённым.
Имя тега меняет имя в XML. Добавить атрибут добавляет свойство тега, например id.
Полный список префиксов: источники значений.
Число хранится в базе. В карточке видно русское имя.
| Число | В карточке | Что пишется |
|---|---|---|
| 0 | Текст | Текст внутри тега, спецсимволы экранируются |
| 12 | Текст без разметки | То же в секции CDATA. Так создаётся description каталога |
| 13 | Картинка | URL картинки внутри тега |
| 19 | Свой XML | Перед сохранением фрагмент проверяется. В файл вставляется как разметка, без экранирования |
| 11 | Значение | Текст, как у обычного тега |
| 4, 5 | Категории, предложения | Особые обходы: категории из выбранных разделов, предложения из товаров |
| 10 | Группа | Внутри предложения обходит детей |
| 1, 2, 6 | Корень, магазин, предложение | Узлы дерева. Свой текст не пишется |
| 14, 15 | Категории, предложения | Своего тега нет, дети поднимаются на уровень родителя |
| 3, 7, 20 | Валюты, категория, пустой | Пишут свой тег и обходят детей. У 20 пустая внутренняя разметка тег не создаёт |
Тег с именем id внутри шаблона предложения не становится вложенным элементом. Его текст уходит в атрибут id. Тег available уходит в атрибут available.
Пустой текст оба атрибута не ставит.
Атрибуты узла offer, кроме id и available, пишутся как есть. Поле Тип оффера в шапке к ним не относится.
Теги блока Поля предложения попадают в каждый offer: название, цена, url, артикул, картинка.
pipeline:url, pipeline:image, pipeline:price, pipeline:old_price, pipeline:vendor считают значения по правилам на странице источники значений. Фиксированный текст задаёт префикс value:.
Тип тега 19 перед сохранением проверяется как XML. Пустая строка допустима, битый XML нет. Несколько соседних тегов без общего корня тоже проходят проверку. В файл проверенный фрагмент вставляется как разметка (writeRaw), без экранирования. Пустой фрагмент тег не даёт.
| Где фрагмент | Если невалидный |
|---|---|
| магазин | пропускается без строки журнала |
| предложение | пропускается и даёт ошибку журнала RAW XML value is not a well-formed XML fragment |
Префикс fenom: считается через pdoTools. PHP в таком тексте не выполняется.
Сохранение типа 19 требует права ms3yandexmarket_edit_raw_xml. Непустой handler и значение с префиксом fenom: у тега или атрибута требуют ms3yandexmarket_edit_fenom. В карточке тега поля обработчика нет. Без права ответ 403. Оба ключа установщик кладёт в политику. См. настройки и права.