MODX Revo | MiniShop2 > Экспортируем товары в Google Merchant и хуяндекс.маркет
/* Превью
Пошаговая инструкция по выгрузке товаров из интернет-магазина в форматах RSS 2.0 и YML
*/
! Самое важное !
Подбираем правильный саундтрек, обычно это может затянутся на долго, но сейчас повезло, не так давно наткнулся на отличного музыканта, правда он уже откинулся, совсем недавно, 1.10.2018, так почтим же память замечательного человека!
Настройка Google Merchant
Для подробностей читаем документацию от гугла.
Стоит обратить внимание на обязательные параметры для товаров, они очень специфичны для разных стран, и категорий товаров, по этому я не использовал все.
-
Создаём страницу со следующийм кодом (Я делал через макет, зачем то..) и указываем тип содержимого XMl
<?xml version="1.0"?> <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"> <channel> <title>[[#1.pagetitle]]</title> <link>[[++site_url]]</link> <description>[[#1.description]]</description> [[!msProducts? &depth=`10` &limit=`9999` &parents=`[[+id]]` &tpl=`GoogleMerchantItem` &includeTVs=`brand,availability` ]] </channel> </rss>
* где #1 (title, description) берём название и описание магазина у страницы с id 1 при помощи приложения pdoTools
-
GoogleMerchantItem - чанк с позициями (товарами)
<item> <title>[[+pagetitle:htmlent]]</title> <link>[[~[[+id]]? &scheme=`full`]]</link> <description>[[+introtext:htmlent]]</description> <g:image_link>http://site.name[[+thumb]]</g:image_link> <g:price>[[+price:stripString=` `]]</g:price> [[-<g:condition>new</g:condition>-]] <g:id>[[+id]]</g:id> <g:availability>[[+availability]]</g:availability> <g:brand>[[+brand]]</g:brand> <g:condition>new</g:condition> [[-<g:google_product_category>Категория товара в гугл</g:google_product_category>-]] </item>
* Меняем http://site.name на адрес сайта, без слеша
* Допустимые значения для availability (наличия): in stock [в_наличии] | out of stock [нет_в_наличии] | preorder [предзаказ]
* condition - состояние товара, new [новый], refurbished [восстановленный], used [б/у]
* С категориями товаров гуглы вы можете ознакомиться тута, там же можно скачать полный список (огромный)
Прости господи хуяндекс.маркет
-
Создаём документ с типом содержимого .xml
<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="[[!simple_time]]" > <shop> <name>[[++site_name]]</name> <company>[[++site_name]]</company> <url>[[++site_url]]</url> <currencies> <currency id="RUR" rate="1"/> </currencies> <delivery-options> <option cost="500" days="3-5"/> </delivery-options> <categories> [[pdoResources? &parents=`0` &depth=`10` &limit=`9999` &tpl=`yml_categories` &where=`{"class_key":"msCategory"}` &showUnpublished=`1` ]] </categories> <offers> [[msProducts? &templates=`666` &depth=`10` &limit=`9999` &parents=`777` &tpl=`yml_offer` &includeTVs=`img,model,brend` ]] </offers> </shop> </yml_catalog>
* Где меняем 666 на id шаблона для товара, а 777 на id каталога соответственно.
-
Содержимое чанка yml_categories
<category id="[[+id]]" [[+parent:isnot=`666`:then=`parentId="[[+parent]]"`]]>[[+pagetitle]]</category>
* меняем 666 на id каталога
-
Чанк yml_offer
<offer id="[[+id]]" available="true"> <url>[[~[[+id]]? &scheme=`full`]]</url> <price>[[+price:stripString=` `]]</price> [[+old_price:isnot=`0`:then=`<oldprice>[[+old_price:stripString=` `]]</oldprice>`]] <currencyId>RUR</currencyId> <categoryId>[[+parent]]</categoryId> <delivery-options> <option cost="300" days="3-5"/> </delivery-options> [[-<typePrefix>[[#[[+parent]].pagetitle:htmlent]]</typePrefix>]] <vendor>[[+vendor.name:htmlent]]</vendor> <model>[[+model:htmlent]]</model> <description>[[+introtext:htmlent]]</description> <vendorCode>[[+article]]</vendorCode> [[-<local_delivery_cost>0</local_delivery_cost>]] <manufacturer_warranty>true</manufacturer_warranty> <picture>http://site.name[[+thumb]]</picture> <name>[[+pagetitle:htmlent]]</name> [[!print_props? &tpl=`@INLINE:[[+value]]` &res_id=`[[+id]]` ]] </offer>
* Где меняем site.name на адрес сайта, без слеша
-
Добавляем снипет print_props
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;
-
Завершающий снипетуля simple_time
return date("Y-m-d H:i");
За код под хуяндекс спасибо безымянному герою, автору этой статейки.
За более тонкой настройкой можете обратиться к документации от хяндекса
Комментарии ()
Написать комментарий