YML — різновид XML для товарних каталогів, який став фактичним стандартом обміну: у ньому приймають фіди маркетплейси, агрегатори цін, рекламні кабінети, CMS і чимало облікових систем. Якщо сервіс просить «XML-фід», «прайс у форматі YML» або «товарний файл» — майже завжди йдеться саме про нього.
У Elbuz є готові типи вивантаження під конкретні майданчики, де все вже підігнано під їхні вимоги. А є універсальний YML — для всіх інших випадків: коли сервіс приймає стандартний фід, коли файл потрібен партнеру чи підряднику, коли ви робите фід під власний сайт. Про нього ця стаття.
Зворотний напрямок — читання чужого YML — описано в статті про імпорт каталогу з XML / YML. Загальні правила будь-якого вивантаження (відбір товарів, ціни, запуск, журнал) — в огляді вивантаження товарів; тут лише те, що стосується формату.
Де це у програмі
У вікні вивантаження створіть шаблон: у списку типів відкрийте групу «XML-фід (YML)» й оберіть «YML (XML)» — це і є універсальний фід, решта пунктів групи налаштовані під конкретні майданчики. Один шаблон — один файл: якщо фіди потрібні різним сервісум і з різним складом даних, робіть окремі шаблони, а не переналаштовуйте один.
1
Поле з текстом шаблону- Поле з текстом шаблону — початок файлу yml_catalog/shop із макросом {datetime}.
Що всередині файлу
Новий шаблон одразу створюється з готовим фідом — переписувати його з нуля не потрібно. У файлі три частини:
| Частина файлу | Що в ній |
|---|---|
| Шапка | Кореневий вузол yml_catalog з датою вивантаження, далі shop: назва магазину, компанія, адреса сайту, службові відомості про платформу й пошта. Тут же блок currencies — валюта фіда та її курс |
| Категорії | Блок categories, у ньому рядок category на кожен розділ: власний ідентифікатор, ідентифікатор батьківського розділу й назва. Так у файлі відтворюється ваше дерево |
| Пропозиції | Блок offers, у ньому offer на кожен товар: посилання, ціна, валюта, категорія, фото, назва, виробник, артикул, опис і характеристики |
Рядок категорії й рядок товару розмножує сама програма: у шаблоні вони описані один раз, а у файл потрапляють стільки разів, скільки у вас розділів і товарів.
Шаблон XML: файл складаєте ви
Головна відмінність цього типу вивантаження від решти: вміст файлу задаєте ви самі, у полі «Шаблон XML». Це один суцільний документ — такий, яким має вийти фід, — а замість значень у ньому стоять макроси у фігурних дужках: {name}, {price}, {uuid} і так далі. Під час вивантаження кожен макрос замінюється значенням конкретного товару.
Звідси гнучкість: сервіс просить додатковий вузол — ви дописуєте рядок у шаблон; просить інше ім'я вузла — перейменовуєте; не приймає опис — прибираєте. Жодного програмування, звичайний текст.
Коли значення треба не просто підставити, а обчислити — у шаблоні працюють формули у подвійних квадратних дужках: наприклад, віддавати рекомендовану ціну, якщо вона заповнена, і звичайну, якщо ні. Синтаксис і приклади — в огляді вивантаження товарів, розділ про ціну.
Не тримайте назви макросів у голові: натисніть Ctrl+Space або просто введіть { — і з'явиться підказка. Поруч із полем є повний довідник макросів, згрупований за змістом: поля товару, мовні версії полів, спец-макроси, категорії маркетплейсів, генератор описів і посадкові сторінки, шапка файлу та ім'я файлу. Клік по макросу вставляє його в позицію курсора.
Нерозпізнані макроси під час вивантаження просто зникають із результату — без попередження й без запису в журналі. Тобто описка у назві дасть не помилку, а порожній вузол у фіді, і помітите ви це вже на боці сервісу. Саме тому перед першим бойовим запуском варто зробити пробне вивантаження — воно якраз показує макроси, які програма не впізнала (див. нижче).
Підшаблони: фото й характеристики
У товара не одне фото й не одна характеристика, тому для них є окремі підшаблони — рядки, які повторюються стільки разів, скільки у товара фотографій або атрибутів. У головному шаблоні на їхньому місці стоять макроси {image_list} і {attribute_list}, а самі рядки задаються у картці «Підшаблони».
Приклад із життя: одному сервісу потрібні фото вузлом picture, іншому — image з атрибутом, третьому головне фото окремо від решти. Усе це — правка одного рядка підшаблону, головний шаблон не чіпається.
Ідентифікатор товару
У пропозиції offer ідентифікатором за замовчуванням іде UUID товару — власний незмінний ключ картки в Elbuz. Це важливо для будь-якого приймача фіда: доки ідентифікатор стабільний, сервіс оновлює наявні позиції; якщо ж він змінюється від вивантаження до вивантаження, на тому боці плодяться дублі.
Той самий UUID читає й імпорт: коли фід із Elbuz завантажується назад — у вас чи у партнера, — товари впізнаються за ним і не дублюються. Тому міняти ідентифікатор у шаблоні варто лише тоді, коли приймач фіда прямо вимагає іншого (наприклад, числового коду).
Поруч стоїть атрибут групування: різновиди одного товару (кольори, розміри) отримують спільний ідентифікатор головної картки, тож на боці приймача вони складаються в один товар із варіантами, а не розсипаються окремими позиціями.
Наявність
Наявність у пропозиції — це атрибут available, і підставляє його макрос {xml_stock_status}. Значення береться не з повітря: у картці «Пов'язані налаштування» є кнопка «Налаштування оновлення за наявністю товару», де кожному вашому статусу задається, що саме піде у фід (колонка «Назва на сайті (у файлі)») і яку кількість показувати. За замовчуванням статус «в наявності» дає true, решта — false; якщо приймач хоче не true/false, а власні слова, впишіть їх там же.
1
Активність налаштування2
Назва на сайті (у файлі)- Активність налаштування — галочка визначає, чи діє правило для цього статусу наявності.
- Назва на сайті (у файлі) — текст, під яким статус потрапить у файл вивантаження.
Це зручніше, ніж здається: у вас може бути десяток внутрішніх статусів («очікується», «під замовлення», «знято з виробництва»), а у фід поїдуть лише два стани — так, як розуміє приймач.
Рядок цієї таблиці діє, лише доки в ньому стоїть «Активність налаштування». Зняли галочку — і для товарів із цим статусом програма повертається до вбудованого правила: вбудований статус «в наявності» дає true, решта — false, а кількість береться вже не зі статусу, а з активності товару: 1000 для активного, 0 для вимкненого. Збоку це виглядає як «налаштування збереглося, а у файлі старе значення», тому галочку в рядку варто перевіряти першою.
Категорії, фото, характеристики
| Налаштування | Що робить |
|---|---|
| Категорії (галочка) | Чи включати у файл блок розділів. Деякі сервіси приймають фід без дерева — тоді галочку можна зняти |
| Символ роздільника категорій | Чим розділяти рівні у повному шляху розділу, коли він іде одним рядком |
| Фото (галочка) | Чи вивантажувати зображення |
| Посилання на фото товару | Адреса, з якої приймач качатиме фото: домен і папка. Фото віддаються посиланнями, а не файлами |
| Максимальна кількість фотографій | Обмеження на товар — у більшості майданчиків свій ліміт, і зайві фото вони або відкидають, або відхиляють увесь фід |
| Атрибути, Опції (галочки) | Чи вивантажувати характеристики й опції товару |
Якщо в довіднику заведений — кілька назв однієї характеристики, зведених до головної, — у файл іде один параметр: з іменем головного атрибута, а значення з усіх прив'язаних збираються в нього. Товар із заповненими «Температура» і «Цветовая температура» віддає один «Цветовая температура» з обома значеннями, а не два параметри з однаковим іменем. Окремої галочки для цього немає: правило діє в усіх YML-шаблонах.
Хто головніший — галочка чи макрос
Одне й те саме поле задається у двох місцях: галочкою в картці «Що вивантажувати» і рядком у шаблоні. Коли вони суперечать одне одному, виграє не завжди те, що очікуєш.
- Фото й характеристики: макрос сильніший за галочку. Якщо в рядку товару стоїть
{image_list}, фото поїдуть у файл, навіть коли галочку «Фото» знято. Так само{attribute_list}вмикає характеристики попри зняту галочку «Атрибути». Щоб фото справді не потрапили у фід, приберіть макрос із шаблону — знятої галочки замало. - Категорії: галочка сильніша за шаблон. Знята галочка «Категорії» — і рядків
categoryу файлі не буде, хоч би що було описано в шаблоні. Сама обгортка при цьому лишається порожньою:<categories></categories>. - Товари: галочка вимикає весь блок. Знята галочка «Товари» — у файлі буде шапка, категорії й закривні теги, і жодного
offer. Прогін при цьому завершується штатно, у журналі — «Вивантаження даних завершено», і саме цей порожній файл ляже на постійне посилання. - Підшаблон порожній — рядок ставить програма. Не заповнили «Підшаблон фото» — у файл піде
<picture>адреса</picture>. Не заповнили «Підшаблон характеристики» —<param name="Назва" unit="одиниця">Значення</param>. Заповнили свій рядок — програма підставляє тільки його і власних вузлів не додає.
Усередині рядка товару підстановка теж іде в жорсткому порядку: спочатку формули у подвійних квадратних дужках, потім окремі характеристики {attribute_61}, потім поля товару, потім списки {image_list}, {video_list}, {attribute_list}. Усе, що лишилося у фігурних дужках після цього, вирізається з файлу.
Програма визначає, що фід іде на відомий майданчик, не лише за типом вивантаження, а й за текстом: латинські «rozetka» або «prom» у назві шаблону чи в підшаблоні характеристики, а також вузли selling_type, portal_category_id, portal_id у шаблоні. Щойно режим увімкнувся, правила міняються мовчки: у режимі Rozetka фото обрізаються до 15 на товар, значення характеристик — до 255 символів, а з текстових полів вирізаються посилання й картинки; у режимі Prom фото обрізаються до 10, а головна картка товару з варіантами у фід не потрапляє взагалі — їдуть тільки варіанти. Позначки «Вивантажено» така головна картка не отримує, тож із галочкою «Вивантажувати лише нові дані» вона щоразу потрапляє у вибірку: прогін без змін не закінчиться на «файл не сформовано», а покладе на постійне посилання файл без жодного offer і запише звичайне завершення. Тому не називайте універсальний шаблон «як у Rozetka» чи «Prom-подібний»: досить одного латинського слова в назві.
Обмеження вивантаження
Окрема картка задає, чий саме залишок і яка мова потрапляють у фід: магазин, склад, мовна версія полів і галочка «лише в наявності в цьому магазині». Це не те саме, що відбір товарів (він живе в загальних налаштуваннях шаблону): тут ви обираєте, з якого джерела брати числа й тексти для тих товарів, які вже пройшли відбір.
Поруч — галочка «Вивантажувати лише нові дані»: у файл потраплять тільки товари, змінені з часу минулого вивантаження. Корисно для великих каталогів і частих оновлень, але приймач має розуміти часткові фіди — інакше він вирішить, що решта товарів зникла.
Що буде з товаром, який зник із фіда
У YML немає ознаки «товар видалено». Файл — це просто повний перелік того, що ви продаєте зараз, і позиція, якої в ньому більше немає, не отримує жодної команди. Що з нею робити, вирішує сам сервіс: один знімає її з публікації, інший лишає висіти такою, якою забрав минулого разу. З боку Elbuz це не видно й не керується.
Керований спосіб сказати «більше не продається» лише один: лишити товар у фіді й віддати йому ознаку відсутності — той самий {xml_stock_status} і таблиця статусів наявності. Виключати товар із відбору варто тоді, коли він вам більше не потрібен на цьому майданчику взагалі, а не тоді, коли просто закінчився на складі.
Товар зникає з файлу, якщо спрацювала хоч одна з умов — і жодна з них у журналі не називається поіменно:
| Чому товар не потрапив у файл | Де перевіряти |
|---|---|
| У товара знято ознаку «Вивантажувати у файл (на сайт)» | Картка товару або сітка базового каталогу |
| Товар не проходить умови відбору шаблону. У щойно створеному шаблоні там уже стоїть умова «товар активний» | Умови відбору товарів у картці шаблону |
| Категорія товару вимкнена або в ній знято ознаку вивантаження | Довідник категорій |
| Товар не прив'язаний до жодної категорії | Картка товару |
| Товар — опція, а галочку «Опції» знято | Картка шаблону, «Що вивантажувати» |
| Обрано магазин, а товар не входить до його складу | «Обмеження вивантаження» → «Магазин» |
| Обрано склад, а на ньому товару немає: нульовий залишок і статус не «в наявності» | «Обмеження вивантаження» → «Склад» |
| Стоїть «Вивантажувати лише нові дані», а товар не змінювався з минулого прогону | Картка шаблону, «Що вивантажувати» |
Перевірити конкретний товар швидше, ніж перебирати вісім рядків: у вікні «Перевірити» можна вказати номер товару. Якщо він не проходить, програма так і напише — «Товар #… не потрапив у вивантаження: він не проходить умови цього шаблону».
Як влаштоване «Вивантажувати лише нові дані»
Позначка про вивантаження живе в товарі, а не в шаблоні. Наприкінці успішного прогону програма ставить «Вивантажено» тим товарам, які реально потрапили у файл, а будь-яка правка товару — у картці чи прямо в сітці базового каталогу — знімає цю позначку назад. Наступний частковий фід збере рівно тих, у кого позначки немає.
Звідси три наслідки, через які галочку легко зрозуміти неправильно.
- Змін не було — файл не оновиться зовсім. Порожня вибірка для програми означає провал прогону: у журналі з'явиться «Вивантаження даних НЕ завершено: файл не сформовано», дата останнього вивантаження не зрушить, а по постійному посиланню лишиться попередній файл. Це не поломка, але й не «все гаразд». Виняток — режим Prom, коли у вибірці є головні картки з варіантами (див. вище).
- Позначка спільна на всі шаблони. Вона стоїть у товарі один раз, а не окремо під кожен фід. Якщо галочку увімкнено у двох шаблонах, чий прогін пройшов першим — той і забрав зміни; другому дістанеться порожньо.
- Приймач має розуміти часткові файли. Сервіс, який вважає фід повним переліком, після часткового вирішить, що решти товарів у вас більше немає, — з усіма наслідками з попереднього розділу.
Повторний прогін і ваші правки
Вивантаження працює в один бік: воно нічого не пише в картки товарів. Ціну, назву, опис, фото — усе, що ви правите в Elbuz, черговий прогін не чіпає й не повертає до старого. Єдине, що він змінює в базі, — позначка «Вивантажено» у товарах цього прогону та рядок самого шаблону, куди лягають посилання на файл, його розмір і дата.
Складніше з другим боком: що станеться з даними, які ви правили в кабінеті сервісу — переписали там назву, переставили категорію, підрізали опис. Це вирішує сервіс, а не Elbuz, і однакової відповіді для всіх приймачів немає. З нашого боку є рівно один важіль — склад вузлів у шаблоні: немає у файлі вузла <name> — сервісу нізвідки взяти нову назву, і ваша лишиться. Ведете якесь поле вручну на боці сервісу — приберіть відповідний рядок із шаблону, і фід перестане на нього претендувати.
Друга половина відповіді — ідентифікатор: доки {uuid} у пропозиції стабільний, сервіс оновлює наявні картки, а не створює поруч нові. Саме тому змінювати ідентифікатор у робочому шаблоні не варто (див. розділ вище).
Пробне вивантаження
Перед першим бойовим запуском натисніть «Перевірити». Програма виконає той самий код, що й повне вивантаження, але на одному товарі, збереже результат в окремий файл і покаже його вам — разом із переліком макросів, яких вона не впізнала. Боєвий файл і посилання на нього при цьому не чіпаються.
Це найшвидший спосіб зловити описку в назві макроса, зайвий вузол чи не ту адресу фото — на одному товарі, а не на тридцяти тисячах.
Показує перевірка чотири речі: готовий XML так, як його побачить приймач (перші 200 КБ); перелік нерозпізнаних макросів; помилки розмітки з номером рядка й колонки — їх знаходить справжній розбирач XML, той самий, яким користуються приймачі; і помилки у формулах — окремо «такого поля немає» й окремо «синтаксис формули». Номер товару, на якому вона проганялася, теж видно: без нього неясно, на чому саме шаблон перевірився.
Передпольотне зведення і стоп-правила
Перед кожним прогоном — і ручним, і за розкладом — програма рахує, що саме зараз піде у файл: усього товарів, з них у наявності, немає в наявності, під замовлення, без статусу наявності. Зведення лягає першим рядком у журнал прогону, а поруч — цифри минулого успішного прогону, щоб зміну було видно без пошуку. Прогін, що закінчився без нового файлу (порожня вибірка, «Стоп», помилка), точкою відліку не стає.
На цих числах працюють три стоп-правила. Пороги за замовчуванням такі:
| Правило | Спрацьовує | Що робить |
|---|---|---|
| Обвал наявності | Товарів у наявності стало менше більш ніж на 30% щодо минулого успішного прогону | Попереджає |
| Обвал кількості товарів | Загальна кількість товарів упала більш ніж на 50% | Попереджає |
| Порожнє вивантаження | Під умови шаблону не підійшов жоден товар | Попереджає |
Будь-яке з них можна перемкнути з «попередити» на «зупинити» — тоді прогін не почнеться взагалі: файл не перезбереться, по постійному посиланню лишиться попередній, а в журналі стане «Вивантаження зупинено стоп-правилом». Це і є страховка від того, щоб обвал у базовому каталозі не поїхав на майданчик.
Пороги задаються трьома шарами: вбудовані значення, потім загальні для акаунта, потім — власні для конкретного шаблону; останній шар перекриває попередні. Діалог зі зведенням перед ручним запуском можна вимкнути на весь акаунт; самі стоп-правила при цьому працюють далі, просто мовчки, у журнал.
Два випадки, коли на захист розраховувати не варто. Перший: шаблон ще жодного разу не вивантажився успішно — два правила з трьох порівнюють із минулим успішним прогоном, а його ще не було, і у зведенні перед запуском так і написано: «Шаблон ще не вивантажувався — порівнювати немає з чим». Другий: умови відбору використовують поля, які програма не вміє швидко порахувати, — тоді замість зведення в журнал іде рядок «Передпольотне зведення не розраховано…», і правила цього разу не спрацюють узагалі.
Що відбувається під час прогону
Натиснули «Вивантажити» — програма робить це в такому порядку:
- Рахує передпольотне зведення й перевіряє стоп-правила. Спрацювало правило з дією «зупинити» — на цьому все й закінчується.
- Створює файл заново, з нуля: спочатку шапка, далі рядки категорій, далі товари. Кожні 500 рядків написане скидається у файл, а в журнал іде рядок «Вивантаження товарів 500 із 12345» — по ньому видно, що робота йде і на якій вона позначці.
- Кладе готовий файл на FTP, якщо FTP налаштований. На підключення дається 10 секунд, на саму закачку — 120. Не встигли — у журналі буде рядок із кодом помилки, але прогін усе одно вважається успішним: FTP на його результат не впливає.
- Оновлює файл у сховищі: спочатку кладе новий, і лише коли він ліг, прибирає інші файли цього шаблону. Не вдалося залити — у журналі рядок «Файл не завантажився в хмарне сховище. Попередній файл і посилання на нього залишено без змін», далі «Вивантаження даних НЕ завершено: файл не сформовано», а посилання й дата в картці шаблону лишаються колишніми.
- Записує в картку шаблону посилання, розмір файлу, дату й тривалість прогону — і лише в самому кінці ставить товарам позначку «Вивантажено», якщо увімкнено «лише нові дані».
Журнал прогону йде в панель «Операції», вікно шаблона при цьому не блокується — в програмі можна працювати далі. Поруч із журналом є «Стоп»: програма перевіряє його після кожного товару.
Запуск кнопкою виконується в тому самому запиті, що й натискання, тому вкладку браузера до кінця роботи краще не закривати. Два способи, яким браузер не потрібен зовсім: розклад (його виконує сервер) і кнопка «Вивантажити всі шаблони» — вона запускає окремий фоновий процес і проганяє шаблони один за одним.
Якщо прогін обірвався
Зупинили кнопкою, перервався зв'язок, упав процес — наслідки однакові, бо файл публікується одним останнім кроком:
- по постійному посиланню лишається попередній файл — приймач забере його, а не напівзібраний;
- дата останнього вивантаження в картці шаблону не оновлюється, а в журналі з'являється «Вивантаження даних НЕ завершено: файл не сформовано» — рядком помилки, не звичайним завершенням;
- позначки «Вивантажено» не ставляться: вони пишуться в самому кінці, тож наступний прогін із «лише новими даними» збере рівно ті самі товари й нічого не загубить;
- повторювати можна одразу — файл щоразу збирається з нуля, задвоїтися нема чому. Вивантаження у файл не тарифікується: скільки б разів ви його не перезапустили, з балансу за це нічого не списується.
Те саме, якщо файл зібрався, але не залився у сховище: попередні файли шаблону прибираються тільки після вдалої заливки нового, тож за посиланням лишається вчорашній фід, а в журналі перед підсумковим рядком стоїть «Файл не завантажився в хмарне сховище. Попередній файл і посилання на нього залишено без змін».
Окрема історія — обрив вивантаження за розкладом. Доки програма вважає, що вивантаження вже виконується, наступні завдання за розкладом пропускаються з рядком «Скасовано вивантаження за розкладом, причина - вивантажується інший шаблон (конфлікт обробки даних)». Якщо прогін помер так, що не встиг зняти за собою замок, сторож знімає замок сам — не раніше ніж через годину від старту завдання і півгодини тиші в журналі. Живий довгий прогін сторож не чіпає: кожен його рядок у журналі — це і є пульс.
Куди лягає файл і як оновлюється
Готовий файл Elbuz кладе у ваше сховище й дає на нього постійне посилання — саме його ви віддаєте сервісу. За розкладом файл перезбирається, посилання лишається тим самим, тож налаштовувати приймач щоразу не треба. За потреби той самий файл можна класти на FTP приймача — кнопка налаштування є в картці «Пов'язані налаштування».
Частоту обирайте за товаром: якщо ціни й залишки рухливі, має сенс кілька разів на день; якщо каталог статичний — раз на добу. Розклад задається кнопкою «Налаштування розкладу» в тій самій картці «Пов'язані налаштування». Докладніше про запуск, розклад і журнал прогону — в огляді вивантаження товарів.
Ім'я файлу задається в колонці «Файл» у списку шаблонів, і в ньому працюють макроси {DATE}, {DATETIME} і {TIME}. Виглядає зручно, але новий файл щоразу лягає під новим іменем, а після його заливки програма прибирає зі сховища інші файли цього шаблону. Тобто адреса, яку ви віддали сервісу вчора, сьогодні вже не оновлюється, а то й перестає працювати, і фід у нього просто «зникне». Дату в імені має сенс ставити тільки тоді, коли файл забирають руками; для постійного посилання ім'я має бути незмінним.
Ще одна дрібниця на цю тему: до збереженого посилання щоразу дописується службовий «хвіст» на кшталт ?uuid=384512 — щоразу інший. Сама адреса файлу від цього не змінюється, тож сервісу можна віддати посилання без хвоста.
Скільки це триває і де межі
Скільки збирається саме ваш фід, програма не вгадує — вона це показує. У списку шаблонів по кожному рядку видно: коли востаннє вивантажувалося, скільки тривав прогін, скільки важить файл, скільки товарів пішло і скільки з них були в наявності — зі стрілкою зміни щодо минулого разу. Перший же прогін називає ваше число, і далі розклад планується за ним, а не за здогадками.
Стелі на кількість товарів чи розмір файлу у вивантаженні немає. Числа, які в програмі таки зашиті:
- написане скидається у файл порціями по 500 рядків — на цьому ж кроці оновлюється лічильник у журналі;
- «Вивантажити всі шаблони» бере лише активні шаблони, проганяє їх по одному й має спільну стелю в одну годину на весь пакет;
- на закачку файлу по FTP дається 120 секунд, на підключення — 10;
- у тимчасовій папці лишаються три останні файли, решта видаляється на початку кожного прогону;
- рядок підшаблону — до 255 символів;
- у демонстраційному акаунті у фід іде не більше 100 товарів — на бойових акаунтах цього обмеження немає;
- вікно «Перевірити» показує перші 200 КБ файлу.
Вимкнути шаблон чи видалити
У шапці картки шаблону є перемикач стану: «Активний» / «Вимкнений». Вимкнений шаблон поводиться так:
- не виконується за розкладом — і не пише про це нічого. У журналі порожньо: пропуск вимкненого шаблона вважається вашим свідомим рішенням, а не збоєм. Якщо фід «перестав оновлюватися сам по собі», перевіряти треба саме цей перемикач;
- пропускається в «Вивантажити всі шаблони» — туди беруться тільки активні;
- усе одно запуститься вручну — кнопка запуску в рядку списку й кнопка «Вивантажити» в самій картці перемикача не питають.
Головне, чого не робить вимкнення: файл у сховищі нікуди не дівається. Посилання працює далі, сервіс качає з нього останній зібраний фід — просто той більше не оновлюється. Вимкнення шаблона не знімає товари з майданчика; воно заморожує файл у тому вигляді, у якому він був на момент останнього прогону. Увімкнули назад — наступний прогін збере файл заново, відновлювати нічого не потрібно, усі налаштування на місці.
Видалення відрізняється тим, що стирає налаштування: текст шаблону, підшаблони, таблицю статусів наявності, параметри FTP, відбір за категоріями й розклад. А от файл у сховищі не видаляється й тут — посилання продовжує віддавати останній зібраний фід, хоча оновлювати його вже нікому. Якщо мета в тому, щоб сервіс перестав отримувати ваші дані, приберіть посилання на його боці: видалення шаблона саме собою цього не робить.
Якщо помилковий фід уже забрали
Помилку помітили після того, як сервіс уже прочитав файл. Порядок дій такий.
- Виправте шаблон і натисніть «Перевірити». Перевірка проганяє той самий код на одному товарі й показує готовий XML, нерозпізнані макроси й помилки розмітки. Це найдешевший спосіб переконатися, що друга спроба не буде такою ж, як перша.
- Запустіть вивантаження. Файл за постійним посиланням замінюється цілком: до попереднього нічого не дописується, новий займає його місце. Виправлений фід стає єдиним, що можна забрати.
- Дочекайтеся, поки сервіс перечитає файл. Коли саме — залежить від розкладу на його боці; прискорити це з Elbuz не можна. Якщо в кабінеті сервісу є кнопка «оновити з фіда», швидше натиснути її.
- Якщо помилковий прогін ішов із «лише новими даними», зніміть цю галочку й віддайте один повний фід. Інакше виправлення поїдуть не для всіх товарів, а лише для тих, які встигли змінитися після помилкового прогону.
Відкотитися на вчорашній файл не вийде: новий файл лягає у сховище на місце попереднього, а в тимчасовій папці тримаються тільки три останні й лише до наступного прогону. Історії правок самого шаблону теж немає — попередній текст поля ніде не зберігається. Перед серйозною переробкою шаблону скопіюйте його вміст собі: це єдина резервна копія, яка у вас буде.
Сценарії
Назви й описи на майданчику ведете вручну
Задача: у кабінеті сервісу ви самі переписали назви товарів і не хочете, щоб наступний фід їх затирав.
Що зробити: у полі «Шаблон XML» приберіть із рядка товару вузол <name> (так само — <description>, якщо описи теж ведете там).
Що вийде: у файлі цих вузлів не буде, тож сервісу нізвідки взяти нову назву. Ціна, наявність і решта вузлів, які лишилися в шаблоні, ідуть у файл як і раніше. Чого не станеться: назви в картках Elbuz не зміняться — вивантаження в картки товарів не пише.
Товар закінчився, але має лишитися на майданчику
Задача: позиція тимчасово відсутня, і на майданчику вона має показуватися як «немає в наявності», а не зникати.
Що зробити: товар лишіть у відборі шаблону. У картці «Пов'язані налаштування» відкрийте «Налаштування оновлення за наявністю товару», у рядку свого статусу поставте «Активність налаштування» і, якщо приймач чекає не false, впишіть його слово в «Назва на сайті (у файлі)».
Що вийде: товар іде у фід, а {xml_stock_status} підставляє значення з цього рядка. Чого не станеться: якщо замість цього виключити товар із відбору, жодної команди «знято з продажу» сервіс не отримає — він просто не побачить рядка (що буде з товаром, який зник із фіда).
Великий каталог, приймач розуміє часткові файли
Задача: віддавати сервісу за розкладом лише те, що змінилося, а не весь каталог щоразу.
Що зробити: увімкніть «Вивантажувати лише нові дані» і задайте частоту кнопкою «Налаштування розкладу».
Що вийде: у файл потрапляють товари без позначки «Вивантажено»; після успішного прогону вона ставиться саме їм, а правка товару її знімає. Чого не станеться: якщо з минулого прогону нічого не змінилося, новий файл не збереться — у журналі «Вивантаження даних НЕ завершено: файл не сформовано», за посиланням лишиться попередній. І не вмикайте галочку у двох шаблонах одночасно: позначка одна на товар, зміни забере той шаблон, що пройде першим.
Не пустити на майданчик обвал наявності
Задача: якщо в базовому каталозі раптом «зникла» наявність, фід не має поїхати на майданчик.
Що зробити: у зведенні перед запуском натисніть «Налаштувати пороги» й для правила обвалу наявності оберіть режим «Зупинити вивантаження». Поріг за замовчуванням — 30%; для обвалу кількості товарів — 50%.
Що вийде: і ручний прогін, і прогін за розкладом не почнуться, у журналі — «Вивантаження зупинено стоп-правилом: …», за посиланням лишається попередній файл. Чого не станеться: поки шаблон жодного разу не вивантажився успішно, правила обвалу не спрацюють — порівнювати ще немає з чим; діє лише правило порожнього вивантаження.
Сервіс не приймає фото у фіді
Задача: приймач відхиляє файл із вузлами фото або бере зображення з іншого джерела.
Що зробити: приберіть макрос {image_list} з рядка товару в «Шаблон XML».
Що вийде: вузлів фото, які давав {image_list}, у файлі не буде. Чого не станеться: однієї знятої галочки «Фото» для цього замало — поки {image_list} стоїть у шаблоні, фото підуть у файл (хто головніший — галочка чи макрос).
Коли брати готовий тип, а не універсальний
Якщо приймач — відомий майданчик, для нього зазвичай уже є свій тип вивантаження: у ньому враховані обов'язкові вузли, ліміти й особливості ідентифікаторів. Універсальний YML беріть тоді, коли готового типу немає: власний сайт, партнерський обмін, сервіс аналітики, нішевий агрегатор. Перевірити просто — відкрийте список типів при створенні шаблону й пошукайте назву сервісу; немає в списку — беріть YML (XML).
Формат стандартний, але кожен сервіс додає свої умови: обов'язкові вузли, довжину назви, ліміт фото, набір валют, вимогу до категорій. Тому не орієнтуйтеся на «загальний YML» — відкрийте вимоги того сервісу, якому віддаєте фід, і підженіть шаблон під них. Пробне вивантаження на одному товарі показує результат так, як його побачить приймач.
Чого вивантаження не робить
- Не знімає товар із продажу на боці сервісу. Зникнення з фіда — не команда на видалення, у файлі просто немає такого рядка. Керовано зняти позицію можна лише статусом наявності всередині фіда.
- Не змінює дані в Elbuz. Прогін не чіпає жодного поля картки товару. Єдиний його слід у базі — позначка «Вивантажено» і рядок шаблону з посиланням, розміром і датою.
- Не перевіряє вимоги приймача. Єдина автоматична перевірка — чи вийшов коректний XML, та й ту робить пробне вивантаження, а не бойовий прогін. Обов'язкові вузли, довжина назви, набір валют, ліміт фото — це умови конкретного сервісу, і про їх порушення ви дізнаєтеся від нього, а не з журналу прогону.
- Не показує, що приймач файл прочитав. Журнал закінчується на тому, що файл покладено у сховище. Чи забрав його сервіс, коли саме і що з ним зробив — з боку Elbuz не видно.
- Не зберігає попередніх версій. Ні старого файлу, ні старого тексту шаблону: обидва перезаписуються без копії.
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| «Вивантаження даних НЕ завершено: файл не сформовано» | Прогін обірвався або вибірка вийшла порожньою: жоден товар не пройшов умови шаблону | Відкрийте «Перевірити» — воно назве причину. Найчастіша: увімкнено «лише нові дані», а змін не було (як влаштована галочка) |
| Фід перестав оновлюватися, у журналі за розкладом порожньо | Шаблон вимкнений: за розкладом він пропускається мовчки | Перемкніть стан у шапці картки на «Активний» (вимкнути чи видалити) |
| «Скасовано вивантаження за розкладом, причина - вивантажується інший шаблон (конфлікт обробки даних)» | За розкладом одночасно виконується тільки одне вивантаження | Дочекайтеся завершення сусіднього прогону. Якщо він помер, замок знімається сам (обрив прогону) |
| «Під умови цього шаблону не підійшов жоден товар — вивантажувати нічого» | Відбір, категорії, магазин або склад відсікли все | Перевірте умови відбору, обрані категорії, магазин і склад (чому товар зникає з файлу) |
| «Товар #… не потрапив у вивантаження: він не проходить умови цього шаблону» | Конкретний товар відсікається однією з восьми умов | Пройдіть таблицю причин згори вниз: ознака вивантаження, категорія, відбір, магазин, склад |
| «Макроси не розпізнано, і вони будуть вирізані з файлу: …» | Описка в назві макроса: такого поля немає | Вставляйте макроси з підказки (Ctrl+Space) або з довідника поруч із полем, а не руками |
| «У шаблоні не знайдено повторюваний вузол товару… Зміни НЕ збережено» | Вузол товара перейменували або зіпсували, і програма більше не знає, який рядок розмножувати | Поверніть тег на місце або впишіть його нове ім'я в «Розширене» → «Тег рядка товару» |
| «Вивантаження зупинено стоп-правилом: …» | Кількість товарів або наявність упали різкіше за поріг | Перевірте статуси наявності в базовому каталозі. Файл при цьому не змінився (стоп-правила) |
Часті питання
Що таке YML і чим він відрізняється від звичайного XML?
YML — це XML із наперед відомою структурою для товарних каталогів: корінь yml_catalog, усередині магазин, блоки валют, категорій і пропозицій. Саме тому приймачі розуміють такий файл без додаткової розмітки, тоді як довільний XML доводиться описувати вручну.
Чи треба редагувати шаблон, якщо мене влаштовує стандартний фід?
Ні. Новий шаблон створюється вже з робочим фідом: шапка, валюта, категорії й пропозиції з основними полями. Правити його потрібно лише тоді, коли приймач просить додаткові вузли або інші імена.
Що буде, якщо помилитися в назві макроса?
Нерозпізнаний макрос під час вивантаження видаляється з результату без попередження — у файлі просто буде порожньо на цьому місці. Тому перед бойовим запуском робіть пробне вивантаження: воно показує перелік макросів, яких програма не впізнала.
Звідки береться значення available у фіді?
З таблиці, яку відкриває кнопка «Налаштування оновлення за наявністю товару» в картці «Пов'язані налаштування»: там кожному вашому статусу задано, що саме піде у фід і яку кількість показувати. За замовчуванням «в наявності» дає true, решта — false, але значення можна замінити на власні слова, якщо приймач вимагає інших. Рядок діє, лише доки в ньому стоїть «Активність налаштування».
Скільки фото потрапляє у фід і звідки беруться посилання?
Стільки, скільки задано в полі «Максимальна кількість фотографій», а адреса складається з поля «Посилання на фото товару» — домену й папки, де лежать зображення. Самі файли у фід не вкладаються: приймач качає їх за посиланнями.
Як у фід потрапляють різновиди товару?
Через атрибут групування в пропозиції: варіанти отримують спільний ідентифікатор головної картки, і приймач складає їх в один товар із варіантами. Якщо конкретний сервіс групування не підтримує, цей атрибут із шаблону прибирають.
Що буде з товаром, якого більше немає у фіді?
Вирішує сервіс, а не Elbuz: у YML немає ознаки «видалено», є тільки перелік того, що є. Один приймач знімає таку позицію з публікації, інший лишає її висіти. Якщо потрібно керовано сказати «більше не продається», товар має лишитися у фіді з ознакою відсутності — це задається таблицею статусів наявності, а не виключенням товару з відбору.
Прогін обірвався — що зараз лежить за посиланням?
Попередній файл. Новий публікується одним останнім кроком, тож напівзібраний фід приймачу не дістанеться. Дата останнього вивантаження не зрушиться, у журналі буде «Вивантаження даних НЕ завершено: файл не сформовано», а повторити прогін можна одразу — файл щоразу збирається з нуля.
Якщо вимкнути шаблон, фід зникне у сервісу?
Ні. Файл лишається у сховищі, посилання працює, сервіс качає з нього останній зібраний фід — просто той більше не оновлюється, бо за розкладом вимкнений шаблон пропускається (і нічого про це не пише в журнал). Видалення шаблона теж не прибирає файл зі сховища: щоб сервіс перестав отримувати дані, посилання прибирають на його боці.
Увімкнув «лише нові дані», а в журналі «файл не сформовано». Це помилка?
Це означає, що з минулого прогону не змінився жоден товар: вибірка вийшла порожня, тому новий файл не збирався й по посиланню лишився попередній. Позначка «Вивантажено» ставиться товарам у кінці успішного прогону й знімається будь-якою правкою товару. Врахуйте ще, що позначка спільна на всі шаблони: якщо галочка увімкнена у двох, зміни забере той, чий прогін пройшов першим.

