Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

3 года назад
Александр Румянцев
33 года, Беларусь
10 лет в сервисе
Был онлайн 1 год назад
3 года назад

Есть стандартный модуль выгрузки yml.php (в корне сайта), который генерирует следующий юмл:

http://for-kids.by/yandex.xml

Нужно дополнить выгрузку по сведениям о товарах:

  • добавить производителя;
  • добавить категорию товара;
  • добавить артикул товара;

Пишите сроки/цену. Спасибо!

Код текущего генератора юмл:

<?php
require_once('api/Simpla.php');
$simpla = new Simpla();
$date = iconv('UTF-8', 'Windows-1251', date("Y-m-d H:i"));
header("Content-type: text/xml; charset=windows-1251");
print '<?xml version="1.0" encoding="windows-1251"?>'."\n";
print '<!DOCTYPE yml_catalog SYSTEM "shops.dtd">'."\n";
print '<yml_catalog date="'.$date.'">'."\n\t";
print '<shop>'."\n\t\t";
print '<name>'.iconv('UTF-8', 'Windows-1251', $simpla->settings->site_name).'</name>'."\n\t\t";
print '<company>'.iconv('UTF-8', 'Windows-1251', $simpla->settings->company_name).'</company>'."\n\t\t";
print '<url>'.$simpla->config->root_url.'</url>'."\n\t\t";
// Валюты
print '<currencies>'."\n\t\t\t";
print '<currency id="BYR" rate="1"/>'."\n\t\t";
print '</currencies>';
// Категории
print "\n\t\t".'<categories>';
foreach($simpla->categories->get_categories_tree() as $c)
{
if($c->visible) 
{
$id = esc($c->id);
$name = iconv('UTF-8', 'Windows-1251', esc($c->name));
$seoname = iconv('UTF-8', 'Windows-1251', esc($c->title_h1));
if (!empty ($seoname)) { $name = $seoname; }
print "\n\t\t\t".'<category id="'.$id.'">'.$name.'</category>';
foreach($simpla->categories->get_categories() as $sc)
{
if($sc->visible)
{
$sc_id = esc($sc->id);
$sc_parent_id = esc($sc->parent_id);
$sc_name = iconv('UTF-8', 'Windows-1251', esc($sc->name));
$sc_seoname = iconv('UTF-8', 'Windows-1251', esc($sc->title_h1));
if (!empty ($sc_seoname)) { $sc_name = $sc_seoname; }
if ($sc_parent_id == $id) 
{
print "\n\t\t\t\t".'<category id="'.$sc_id.'" parentId="'.$sc_parent_id.'">'.$sc_name.'</category>';
}
}
}
}
}
print "\n\t\t".'</categories>'."\n\t";
// Товары
print "\n\t\t".'<offers>';
$simpla->db->query("SELECT * FROM __products WHERE visible=1");
foreach($simpla->db->results() as $p)
{
$prod_id = $p->id;

// Отбираем товары которые в наличии
foreach ($simpla->variants->get_variants(array('product_id'=>$prod_id)) as $v) {

if ($v->stock != 0) {

// Название товара
$prod_name = iconv('UTF-8', 'Windows-1251', esc($p->name));

// Получаем url товара
$simpla->db->query("SELECT category_id FROM __products_categories WHERE product_id=".$prod_id." ORDER BY category_id DESC");
foreach($simpla->db->results() as $q) {
$cat_id = $q->category_id;
}
$simpla->db->query("SELECT url_path FROM __categories WHERE id=".$cat_id."");
foreach($simpla->db->results() as $w) {
$cat_path = $w->url_path;
}
$url = $simpla->config->root_url.'/catalog/'.esc($w->url_path).'/'.esc($p->url);

// Описание товара
$prod_description = iconv('UTF-8', 'Windows-1251', strip_tags(preg_replace("/&#?[a-z0-9]{2,8};/i","",$p->body)));
$prod_description_end = " Источник: For-kids.by";
$prod_description_end = iconv('UTF-8', 'Windows-1251', $prod_description_end);
$prod_description = $prod_description.$prod_description_end;

// Получаем цену товара
foreach ($simpla->variants->get_variants(array('product_id'=>$prod_id)) as $v) {
$prod_price = round($v->price);
if ($prod_price) break;
}
// Получаем изображения товара
foreach ($simpla->products->get_images(array('product_id'=>$prod_id)) as $i) {
$prod_image = $i->filename;
if ($prod_image) break;
}
$prod_image_url = $simpla->config->root_url.'/files/originals/'.esc($prod_image);

// Получаем стоимость доставки
if ($prod_price > 300000) {
$delivery_cost = 0;
} elseif ($prod_price < 300000 AND $prod_price > 199000) {
$delivery_cost = 20000;
} else {
$delivery_cost = 30000;
}

// Получаем название товара
//foreach ($simpla->variants->get_variants(array('product_id'=>$prod_id, 'in_stock'=>true)) as $v) {
// $prod_sku = $v->sku;
// if ($prod_sku) break;
//}
//$product_sku = " (Арт. ".esc($prod_sku).")";
//$product_name = $prod_name.iconv('UTF-8', 'Windows-1251', $product_sku);
$product_name = $prod_name;

print "\n\t\t\t".'<offer id="'.$prod_id.'" available="true">';
print "\n\t\t\t\t".'<url>'.$url.'</url>';
print "\n\t\t\t\t".'<price>'.$prod_price.'</price>';
print "\n\t\t\t\t".'<currencyId>BYR</currencyId>';
print "\n\t\t\t\t".'<categoryId>'.$cat_id.'</categoryId>';
print "\n\t\t\t\t".'<picture>'.$prod_image_url.'</picture>';
print "\n\t\t\t\t".'<delivery>true</delivery>';
print "\n\t\t\t\t".'<local_delivery_cost>'.$delivery_cost.'</local_delivery_cost>';
print "\n\t\t\t\t".'<name>'.$product_name.'</name>';
print "\n\t\t\t\t".'<description>'.$prod_description.'</description>';
print "\n\t\t\t".'</offer>';

}
}
}
print "\n\t\t".'</offers>';
print "\n\t".'</shop>';
print "\n".'</yml_catalog>';
function esc($s)
{
return(htmlspecialchars($s, ENT_QUOTES, 'UTF-8'));
}

Выбранный исполнитель
Александр И.
36 лет, Беларусь
5 лет в сервисе
Был онлайн 25 минут назад
3 года назад

$5

1 день

Отзыв заказчика
Быстро, без лишних вопросов, оперативно. Приятно работать!
Отзыв фрилансера
5+
  • Рекламное место свободно
    18 дней за $6
  • Рекламное место свободно
    18 дней за $6
Александр И.
36 лет, Беларусь
5 лет в сервисе
Был онлайн 25 минут назад
3 года назад
Андрей В.
48 лет, Беларусь
7 лет в сервисе
Был онлайн 3 года назад
3 года назад

Другие заказы в категории «Интернет-магазины»

Здесь заказчик и фрилансеры могут обсуждать заказ до начала его выполнения.
Фрилансеры могут участвовать в обсуждении только после подачи заявки.
Здесь заказчик будет контролировать выполнение заказа и общаться с исполнителем.
Доступ к этому разделу имеют только заказчик и выбранный исполнитель.
Все материалы этого раздела закрыты от поисковых систем.