41 lines
4.4 KiB
Markdown
41 lines
4.4 KiB
Markdown
# Сценарии. Товары и разделы
|
||
|
||
Как добавить или изменить товар и раздел каталога. Два пути в зависимости от доступа: через REST API и через код (D7). Модель данных — [[Инфоблоки и каталог (apelsincom)]].
|
||
|
||
> [!info] Про админ-панель
|
||
> Этот проект сопровождается **без админки** — только по FTP/коду и через REST API. Поэтому пошаговых сценариев «через админку» здесь нет. Всё, что делается кнопками в `/bitrix/admin/`, ниже описано на уровне API и кода. Что и где хранится в БД (и требует доступа в админку для проверки) — помечено в [[Источники и метод проверки (apelsincom)]].
|
||
|
||
> [!warning] Осторожно с символьным кодом
|
||
> Символьный код (латиницей) обязателен у товара и раздела — он идёт в ЧПУ-адрес. Смена кода у раздела/товара с уже проиндексированными адресами ломает ссылки (старые → 404). Меняете — настройте редиректы.
|
||
|
||
## Вариант A. Через REST API
|
||
Модуль `richcode.api` умеет создавать и править элементы каталога, разделы, остатки и заказы. Полный справочник действий и примеры — [[REST API — методы и примеры (richcode.api)]].
|
||
- **Каталог (инфоблок 2) — только через `sale/product`:** `add`, `update`, `delete`, `get`, `list`, а также `section.add`, `section.list`. Контроллер `iblock/element` каталог не обслуживает (вернёт ошибку).
|
||
- Остатки/склады: `sale/store` — `set.amount`.
|
||
- Обычные (не каталог) инфоблоки: `iblock/element` — те же действия.
|
||
- Нужны: включённый API, путь (`/api/`), токен пользователя (`UF_API_TOKEN`) с правами на инфоблок 2 и членством в заданной группе.
|
||
|
||
Пример — создать товар в каталоге (инфоблок 2), тело обёрнуто в `fields`:
|
||
```bash
|
||
curl -X POST "https://<домен>/api/sale/<TOKEN>/product/add" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"fields":{"IBLOCK_ID":2,"NAME":"Кроссовки Модель X","CODE":"krossovki-model-x","ACTIVE":"Y","PRICE":4990,"CURRENCY":"RUB","QUANTITY":10,"PROPERTY_ARTNUMBER":"ART-001"}}'
|
||
```
|
||
Полные схемы полей (`product/add`, `order/create`, `section.add`) — [[REST API — методы и примеры (richcode.api)#Точные схемы (проверено по моделям)]].
|
||
|
||
> [!warning] Права API = права пользователя-токена
|
||
> Через API вы действуете от имени пользователя, которому принадлежит токен. Дайте ему ровно те права, что нужны (доступ к инфоблоку 2, к заказам), не больше. См. [[Информационная безопасность (apelsincom)]].
|
||
|
||
## Вариант B. Через код (D7)
|
||
Разовые массовые операции можно делать скриптом на API ядра Битрикс (D7): `CIBlockElement` / `\Bitrix\Iblock\…`. Скрипт кладут вне ядра, номер инфоблока — **2**. Обязательно бэкап перед массовой правкой.
|
||
|
||
## После любых изменений
|
||
- Проверьте, что заполнен символьный код и товар активен.
|
||
- Сбросьте кэш каталога — он кэшируется надолго ([[Кэширование и обслуживание (apelsincom)]]).
|
||
- Откройте ЧПУ-адрес и карточку: фото, свойства, кнопка «Купить».
|
||
|
||
## См. также
|
||
- [[Инфоблоки и каталог (apelsincom)]]
|
||
- [[REST API (richcode.api)]]
|
||
- [[Маршрутизация и ЧПУ (apelsincom)]]
|