Введение
YML-файл необходим для синхронизации интернет-магазина с Яндекс Маркетом и для включения турбо-страниц в Яндекс Вебмастере.
По ссылке вы сможете подробно ознакомиться с YML (Yandex Market Language) форматом.
Баранов Константин
5 минут
Кейс
YML-файл необходим для синхронизации интернет-магазина с Яндекс Маркетом и для включения турбо-страниц в Яндекс Вебмастере.
По ссылке вы сможете подробно ознакомиться с YML (Yandex Market Language) форматом.
Первым шагом создадим ресурс с пустым шаблоном и назовём его YML, ставим галочку «Опубликован», «Не отображать в меню». На вкладке «Настройки» — устанавливаем тип содержимого XML и убираем галочку «Использовать HTML-редактор».
В содержимое ресурса вставляем следующий код:
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="" >
<shop>
<name>Architector Agency</name>
<company>Architector Agency</company>
<url>https://www.architector-agency.ru/</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
</categories>
<offers>
</offers>
</shop>
</yml_catalog>
Где templates — шаблон товара, а parents — id ресурса корневого каталога.
Создаём чанк ymlCategoriesTpl:
<category id="" parentId=""></category>
Где parent id — id корневого ресурса каталога.
Для того чтобы поменять размер миниатюр изображений до приемлемого, способствующего быстрой загрузке турбо-страниц, идём в Медиа → Источники файлов → MS2 Images и создаём новый размер для миниатюр товаров MiniShop2, я назвал этот размер yml. Затем в чанке ymlOfferTpl указываем именно его в picture. Но на этом ещё не всё. Ищем дефолтный сниппет msProducts и меняем параметр includeThumbs — список превьюшек, указав в него наш новый размер yml. Сохраняем набор параметров, сохраняем сниппет. Теперь нам необходимо сгенерировать превьюшки yml. О том, как сделать это быстро и массово для всех товаров, я рассказывал в этой статье. После генерации проверяем, открыв наш ресурс yml, и убеждаемся, что сгенерированные изображения открываются.
<offer id="" available="true">
<url></url>
<price></price>
<oldprice></oldprice>
<currencyId>RUR</currencyId>
<categoryId></categoryId>
<delivery-options>
<option cost="300" days="2-5"/>
</delivery-options>
<description></description>
<vendorCode></vendorCode>
<manufacturer_warranty>true</manufacturer_warranty>
<picture>http://site.ru</picture>
<name></name>
</offer>
Для вывода опций, которые хранятся в таблицах modx_ms2_product_options и modx_ms2_options, создадим сниппет printOptions:
if(empty($tpl) || !$modx->getChunk($tpl)){
return false;
}
$sQuery = "SELECT
po.value as value,
o.caption as name
FROM
". $modx->getOption('table_prefix') ."ms2_product_options po
LEFT JOIN
". $modx->getOption('table_prefix') ."ms2_options o ON (po.key = o.key)
WHERE
po.product_id = '".$res_id."'";
$result = $modx->query($sQuery);
$res = $result->fetchAll(PDO::FETCH_ASSOC);
$output = "";
foreach($res as $v){
$output .= $modx->getChunk($tpl,$v);
}
echo $output;
Для вывода опций в файл YML создадим чанк printOptionsTpl:
<param name=""></param>
Использовать будем так:
Для вывода текущей даты и времени будем использовать сниппет printDate:
return date("Y-m-d H:i");
На этом всё. Ссылка на данный файл — https://site.ru/yml.xml
г. Екатеринбург, улица Щорса, д. 7, БЦ Парковый