Статьи и новости
Заполнение атрибутов ALT и Title для изображений

Хотя информации об этом и много, но владельцы сайтов очень часто пренебрегают этим. С одной стороны в OC все есть для этого и атрибуты для изображения присутствуют в шаблонах. И "шаблонописатели" обязательно это учитывают.

 
18 мая 2017
 
 
Импорт YML в Opencart - подводные слоны или неприметные камни

Импорт YML в Opencart - подводные слоны или неприметные камни

  • 19 апреля 2017
 

Импорт YML – на базе anyXML – подводные слоны или неприметные камни

Статья рассчитана на предпринимателей, перед которыми стоит задача сделать импорт или наладить обновление данных из формата YML, в т.ч. расширенного нетипичными для данного языка тегами. Например, в ситуации, когда поставщиком передается файл с данными, но разработчики объясняют, что невозможно это всё затолкать без доработки парсерса импорта YML, в чем абсолютно правы.

Почему не всё так просто с этими yml’ями и что с этим можно сделать и пойдет речь в данной статье.

Что такое YML?

YML - Yandex Market Language – язык на базе XML, разработанный компанией Яндекс для проекта Яндекс.Маркет (источник: https://yandex.ru/support/partnermarket/yml/about-yml.html)

Плюсами языка является – его распространённость среди прочих языков описания товара в СНГ. Но также и то, что он имеет единую спецификацию. Популярность языка, в свою очередь принесла популярность сервиса Яндекс.Маркет из-за чего обработчики YML и генераторы YML – перестали быть редкостью. Программисты, которые импортировали YML или собирали YML тоже встречаются чаще, чем программисты, которым нужно написать обработчик для amazon xls feed

Написанная же доступным языком спецификация YML делает применение на практике удобным.

Минусами языка является:

·         отсутствие тега для передачи остатков,

·         отсутствие тега для передачи вариативных, ассортиментных товаров,

·         отсутствие тега главного и второстепенных изображений,

·         отсутствие возможности передавать HTML в теге описания.

На самом деле очень много того, что является, по сути, базовым при импорте или экспорте товаров, в базовой спецификации YML отсутствует

Резюме – имеем YML – распространённый формат, в котором невозможно передать опции, главную картинку, описания в HTML, количество и другие менее важные, данные.

Не всякий YML, на самом деле YML

Можно так сказать, что YML очень часто – это YML на 50%, или на 30%, или 90%. Фактически в практике импорта, экспорта от поставщиков можно получить XML, в которых есть теги соответствующие языку Яндекс.Маркет, но есть и теги, которые выходят за его рамки, разработанные в какой-то конкретной компании. У одной компании количество, например, передается в quantity, а у другой product_q, в третей еще как-то.

Название этих тегов, принципы упаковки данных внутри них – это самая большая проблема, с которой сталкиваются предприниматели. Важно учитывать, что XML документ, который не является чистым YML – это отдельный, самостоятельный формат, разработанный отдельным поставщиком. Разработанный с частичным использованием стандартов языка Маркета, но с наложением своего стандарта описания собственных данных.

Резюме – наверно 90% YML для импорта YML или экспорта YML – это XML, разработанные частными компаниями у  разработчиков, на основе YML. Не YML вовсе. А производные от него спецификации.

Мир – это матрица

Шутка. Но в каждой шутке, только доля шутки. Правда состоит в том, что для описания любой однородной совокупности служит матрица (математическая) – то бишь таблица. Давно известно, ничего удивительного все базы данных - это таблицы. А все прочие форматы – это форматы, произведённые от таблицы – выдернутые из таблицы, упакованные каким-то образом. Но если что-то происходит от таблицы, то кто мешает это обратно перегнать в таблицу? Конечно, не всё так просто. Тем не менее, это возможно и именно такая, далеко не новая, идея реализована в модуле anyXML для импорта YML, импорта XML.

anyXML является конвертером, который возвращает данные в базовую форму их хранения, с учетом реляций – короче обратно в таблицу, с учетом архитектуры и структуры конкретного файла. Чем известнее архитектура при этом, тем лучшего качества будет таблица.

Наиболее удачно преобразование получается с форматами на базе XML, которые написаны по правилам –правильных XML. Чем менее правильный XML, тем больше дополнительных работ через редактор CSV. Но неправильных XML не очень много, по этому, с высокой степенью достоверности можно утверждать, что anyXML преобразует практически все XML

Резюме – если отойти от спецификации, точнее перенести её в табличную форму, то получается табличка с данными, в которой исходная спецификация, перестает играть серьезную роль. И открывается возможность использовать данных без парсеров XML -  через решения, которые позволяют импортировать данные из таблиц.

4 способа парсинга только для YML

Для YML в anyXML есть и улучшения. В частности модуль собирает категории с путем, собирает параметры в удобную микро разметку, собирает картинки так, что можно установить какая должна быть главная.

Но, самое важное, теги, которых нет в базовой спецификации YML, но которые есть в стандарте того или иного поставщика, например, тег с количеством или тег с какой-нибудь штукой, которую нужно завести, как атрибут. Или тег с какой-нибудь ценой, которая лежит не в теге price. Все эти теги могут быть импортированы без парсеров и доработок.

В anyXML это делается путем указывания настроек на каждую колонку в таблице, что она означает. В других решениях для импорта из таблиц, где нет настроек на колонки, можно доработать таблицу сперва в Excel, а потом импортировать через такие решения импорта из таблиц

Резюме

Импорт из YML можно произвести сразу, если на входе специфицированный YML. Но поскольку данный язык изначально задумывался для Яндекс.Маркет и задач данного агрегатора, на практике, «YML от поставщика» – это разные XML спецификации, производные от YML, но расширенные разными тегами, разными способами упаковки данных. Таким образом, практически невозможно «сразу и без проблем» импортировать YML обработчиками, которые понимают только базовый YML

В виду того, что расширенные YML все разные. И нет единой формы описания прочих данных, в anyXML, в частности для YML, применяется алгоритм преобразования XML документа в таблицу. После чего спецификация (название тегов, атрибутов тегов и что там находится) перестает играть существенную роль. Такое преобразование позволяет импортировать данные, как это делается при импорте из таблиц CSV, XLS

Для YML, в anyXML добавлено 4 адаптации. Которые еще лучше представляют данные в таблице. И делают импорт еще более объемлющим.

Спасибо за внимание!

 
 


 
Телефон, Viber, WhatsApp, Telegram: +7-952-3190-952 Skype: cdqpru Почта: help@liveopencart.ru ВКонтакте: liveopencart