Новосибирск +7(983)

По всем вопросам :

Телеграм : @radgura

Дорабатываем K2 (2.6.9) и K2_store - выгрузка на яндекс маркет, формат YML

Заказать доработку
Joomla 3.x

Стоимость 1500


@radgura.ru
Адриена Лежена
63089
Новосибирск
Адриена Лежена
+7(983)
3067856
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Дорабатываем K2 (2.6.9) K2_store - выгрузка на яндекс маркет, формат YML

Вы можете Заказать доработку 1500руб. RUB

Для автоматизации выгрузки можно использовать PHP скрипт.

Нам необходимо подготовить таблицу - добавить 3 поля (yan_model,yan_vendor,yan_typePrefix) в таблицу #_k2_items, кроме того необходимо настроить редактирование из административной части k2, как это сделать написано в статье (на примере поля "relateditems"): Дорабатываем K2 (2.6.9) - управляемые рекомендации Related Items

От себя:

  • 1.Скрипт сделан на скорую руку, не претендует на окончательное решение, возможно будет выпущен плагин для joomla 3x
  • 2.Значение производителя, префикса и модели сделано через отдельную колонку, т.к. колонка с названием товара не подходит, реализация через extrafields слишком сложна(будет реализовано в плагине для joomla) для внешнего скрипта
  • 3.Категории магазина не совпадают с яндексом, также в магазине не храниться информация о производителе, поэтому эти данные вынесены в отдельные колонки - это позволяет более гибко работать с названием товара
  • 4.Скрипт опробован на действующем магазине, экспорт в яндекс маркет происходит без ошибок
  • 5.Реализована проверка на экспорт - если не заполнена одна из колонок (yan_model,yan_vendor,yan_typePrefix), товар не попадет в файл YML  и не будет выгружен на маркет
  • 6.Описание товара для маркета берется из поля "fulltext" таблицы #_k2_items, можно отключить переменной $show_desc
  • 7.Скрипт представлен не полностью, только демонстрационная часть

Скрипт:

<?php
/*Вывод ошибок - блок нужен для отладки*/
//ini_set('error_reporting', E_ALL);
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1); //ссылка на файл конфигурации
include_once ("configuration.php");
$datas = new JConfig;
$hostname = $datas->host;
$username = $datas->user;
$password = $datas->password;
$dbName = $datas->db;
$mysite = $datas->sitename; // Ваш сайт
$filename = 'yandex.xml'; // размещение xml файла
$db_pref ='Jos_'; //префикс таблиц
$mag_name ='Название магазина'; //Название магазина
$comp_name ='Название фирмы'; //Название компании
$show_desc = 1;// [0-нет 1-да] выводить описание товаров
$loc_del = '150'; //стоимость доставки
$menu_url = 1;//[0-формат index.php?option=com_k2&view=item&layout=item&id= 1-alias из таблицы #_menu]способ формирование url

$category = $db_pref."k2_categories";//таблица категорий
$itemtable = $db_pref."k2_items"; //таблица товаров
$pricetable = $db_pref."k2store_products";//таблица с ценами
$product_menu_xref = $db_pref."menu";//ссылка на меню, используется для извлечения alias mysql_connect($hostname,$username,$password) OR DIE("Не могу соединиться базой данных Mysql");
mysql_select_db($dbName) or die(mysql_error());
$xmlfile = fopen($filename,'w+'); $xmltext = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$xmltext .= "<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
$xmltext .= "<yml_catalog date=\"";
$xmltext .= date('Y-m-d H:i');
$xmltext .= "\">\n";
$xmltext .= "<shop>\n";
$xmltext .= "<name>$mag_name</name>\n";
$xmltext .= "<company>$comp_name</company>\n";
$xmltext .= "<url>http://$mysite</url>\n";
$xmltext .= "<currencies>\n";
$xmltext .= "<currency id=\"RUR\" rate=\"1\"/>\n";
$xmltext .= "</currencies>\n"; $xmltext .= "<categories>\n";
try{

mysql_query("SET CHARACTER SET 'cp_1251_general_ci'");
$query_cat = "SELECT * FROM $category where published = '1' ";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1; while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['parent'];
$cat_child_id=$row_cat['id'];
//Строим дочернюю ветку
$query_cat_sub = "SELECT name FROM $category WHERE published = '1' and id=".$row_cat['id'];
$res_cat1 = mysql_query($query_cat_sub) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat['name'];
$cat_name= htmlspecialchars($cat_name, ENT_QUOTES); if ($cat_parent_id==0) {
$xmltext .= "<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
$xmltext .= "<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;

} }catch(PDOException $e){
echo ($e->getMessage());
}
$xmltext .= "</categories>\n";
$xmltext .= "<local_delivery_cost>$loc_del</local_delivery_cost>\n";
$xmltext .= "<offers>\n";
try{
//Таблица товаров
$query_item = "SELECT * FROM $itemtable where published = '1' and yan_typePrefix<>'' and yan_vendor<>'' and yan_model<>''";
$res_item = mysql_query($query_item) or die(mysql_error());
$rw=1;
while ($row=mysql_fetch_array($res_item)) {
$product_full_image = "http://$mysite/media/k2/items/cache/".md5("Image".$row['id'])."_XL.jpg";
$product_name = $row['title'];
$product_s_desc = $row['fulltext'];
$product_cat_id = $row['catid'];
$typePrefix = $row['yan_typePrefix'];
$vendor = $row['yan_vendor'];
$model = $row['yan_model'];
$model = htmlspecialchars($model, ENT_QUOTES);
$typePrefix= htmlspecialchars($typePrefix, ENT_QUOTES);
$vendor= htmlspecialchars($vendor, ENT_QUOTES);
$id = $row['id'];
//Вывод в файл
$xmltext .= "<offer id=\"".$id."\" type=\"vendor.model\" available=\"true\" bid=\"11\">\n";
$xmltext .= "<currencyId>RUR</currencyId>\n";
$xmltext .= "<categoryId type=\"Own\">$product_cat_id</categoryId>\n";
$xmltext .= "<picture>$product_full_image</picture>\n";
$xmltext .= "<delivery>$del_avalible</delivery>\n";
$xmltext .= "<local_delivery_cost>$loc_del</local_delivery_cost>\n";
$xmltext .= "<typePrefix>$typePrefix</typePrefix>\n";
$xmltext .= "<vendor>$vendor</vendor>\n";
$xmltext .= "<model>$model</model>\n";
if ($show_desc == '1'): $xmltext .= "<description>$product_s_desc</description>\n"; endif;
$xmltext .= "</offer>";
$rw++;
} }catch(PDOException $e){
echo ($e->getMessage());
}
$xmltext .= "</offers>\n";
$xmltext .= "</shop>\n";
$xmltext .= "</yml_catalog>\n";
if(fwrite($xmlfile, $xmltext)){
echo "<pre>File YML <a target='_blank' href='http://$mysite/$filename'>http://$mysite/$filename</a> success</pre>";

}
fclose($xmlfile); ?>

По данному вопросу, вы также можете почитать статью о нашем компоненте экспорт в яндекс маркет YML формат

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

Как с нами связаться

По всем вопросам пишите  

Телеграм: @radgura

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

Please publish modules in offcanvas position.