1. Главная

  2. Блог

  3. Генерация YML в MODx Revolution и Minishop2
  • MODX
  • SEO
  • Разработка сайтов

Генерация YML в MODx Revolution и Minishop2

  • Дата публикации

  • Автор

    Баранов Константин

  • Время чтения

    5 минут

  • Категория

    Кейс

Кейс Генерация YML в MODx Revolution и Minishop2

Введение

YML-файл необходим для синхронизации интернет-магазина с Яндекс Маркетом и для включения турбо-страниц в Яндекс Вебмастере.

По ссылке вы сможете подробно ознакомиться с YML (Yandex Market Language) форматом.

Создание ресурса YML

Первым шагом создадим ресурс с пустым шаблоном и назовём его 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

Создаём чанк ymlCategoriesTpl:

<category id="" parentId=""></category>
    

Где parent id — id корневого ресурса каталога.

Чанк ymlOfferTpl

Для того чтобы поменять размер миниатюр изображений до приемлемого, способствующего быстрой загрузке турбо-страниц, идём в Медиа → Источники файлов → 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>
    

Сниппет printOptions

Для вывода опций, которые хранятся в таблицах 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;
    

Чанк printOptionsTpl

Для вывода опций в файл YML создадим чанк printOptionsTpl:

<param name=""></param>
    

Использовать будем так:


    

Сниппет printDate

Для вывода текущей даты и времени будем использовать сниппет printDate:

return date("Y-m-d H:i");
    

На этом всё. Ссылка на данный файл — https://site.ru/yml.xml


предыдущая статьяследующая статья
Услуги