Перейти к содержанию
Официальный форум поддержки Simpla

Добавление в yandex.xml поле vendor - бренд


Рекомендуемые сообщения

Файл в корне yandex.php пару строчек дописать, выкладываю полностью файл

 

<?php

require_once('api/Simpla.php');
$simpla = new Simpla();

header("Content-type: text/xml; charset=UTF-8");

// Заголовок
print
"<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE yml_catalog SYSTEM 'shops.dtd'>
<yml_catalog date='".date('Y-m-d H:m')."'>
<shop>
<name>".$simpla->settings->site_name."</name>
<company>".$simpla->settings->company_name."</company>
<url>".$simpla->config->root_url."</url>
";

// Валюты
$currencies = $simpla->money->get_currencies(array('enabled'=>1));
$main_currency = reset($currencies);
print "<currencies>
";
foreach($currencies as $c)
if($c->enabled)
print "<currency id='".$c->code."' rate='".$c->rate_to/$c->rate_from*$main_currency->rate_from/$main_currency->rate_to."'/>
";
print "</currencies>
";


// Категории
$categories = $simpla->categories->get_categories();
print "<categories>
";
foreach($categories as $c)
{
print "<category id='$c->id'";
if($c->parent_id>0)
print " parentId='$c->parent_id'";
print ">".htmlspecialchars($c->name)."</category>
";
}
print "</categories>
";

// Товары
$simpla->db->query("SET SQL_BIG_SELECTS=1");
// Товары
$simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, p.url, p.annotation, pc.category_id, i.filename as image, b.name as brand, b.url as brand_url
FROM __variants v LEFT JOIN __products p ON v.product_id=p.id

LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)
LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)
LEFT JOIN __brands b ON p.brand_id = b.id
WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id");
print "<offers>
";


$currency_code = reset($currencies)->code;

// В цикле мы используем не results(), a result(), то есть выбираем из базы товары по одному,
// так они нам одновременно не нужны - мы всё равно сразу же отправляем товар на вывод.
// Таким образом используется памяти только под один товар
while($p = $simpla->db->result())
{

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);
print
"
<offer id='$p->variant_id' available='true'>
<url>".$simpla->config->root_url.'/products/'.$p->url.'?variant='.$p->variant_id."</url>";
print "
<price>$price</price>
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

if($p->image)
print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>
";

print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name>
<description>".htmlspecialchars(strip_tags($p->annotation))."</description>
<vendor>".htmlspecialchars($p->brand)."</vendor>
</offer>
";
}

print "</offers>
";
print "</shop>
</yml_catalog>
";
 
Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...
  • 1 месяц спустя...

Скопировал и вставил себе Ваш код... 

выдает ошибку:

This page contains the following errors:
error on line 1 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
Ссылка на сообщение
Поделиться на другие сайты

Файл в корне yandex.php пару строчек дописать, выкладываю полностью файл

 

<?php

 

require_once('api/Simpla.php');

$simpla = new Simpla();

 

header("Content-type: text/xml; charset=UTF-8");

 

// Заголовок

print

"<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE yml_catalog SYSTEM 'shops.dtd'>

<yml_catalog date='".date('Y-m-d H:m')."'>

<shop>

<name>".$simpla->settings->site_name."</name>

<company>".$simpla->settings->company_name."</company>

<url>".$simpla->config->root_url."</url>

";

 

// Валюты

$currencies = $simpla->money->get_currencies(array('enabled'=>1));

$main_currency = reset($currencies);

print "<currencies>

";

foreach($currencies as $c)

if($c->enabled)

print "<currency id='".$c->code."' rate='".$c->rate_to/$c->rate_from*$main_currency->rate_from/$main_currency->rate_to."'/>

";

print "</currencies>

";

 

 

// Категории

$categories = $simpla->categories->get_categories();

print "<categories>

";

foreach($categories as $c)

{

print "<category id='$c->id'";

if($c->parent_id>0)

print " parentId='$c->parent_id'";

print ">".htmlspecialchars($c->name)."</category>

";

}

print "</categories>

";

 

// Товары

$simpla->db->query("SET SQL_BIG_SELECTS=1");

// Товары

$simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, p.url, p.annotation, pc.category_id, i.filename as image, b.name as brand, b.url as brand_url

FROM __variants v LEFT JOIN __products p ON v.product_id=p.id

 

LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)

LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)

LEFT JOIN __brands b ON p.brand_id = b.id

WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id");

print "<offers>

";

 

 

$currency_code = reset($currencies)->code;

 

// В цикле мы используем не results(), a result(), то есть выбираем из базы товары по одному,

// так они нам одновременно не нужны - мы всё равно сразу же отправляем товар на вывод.

// Таким образом используется памяти только под один товар

while($p = $simpla->db->result())

{

 

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);

print

"

<offer id='$p->variant_id' available='true'>

<url>".$simpla->config->root_url.'/products/'.$p->url.'?variant='.$p->variant_id."</url>";

print "

<price>$price</price>

<currencyId>".$currency_code."</currencyId>

<categoryId>".$p->category_id."</categoryId>

";

 

if($p->image)

print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>

";

 

print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name>

<description>".htmlspecialchars(strip_tags($p->annotation))."</description>

<vendor>".htmlspecialchars($p->brand)."</vendor>

</offer>

";

}

 

print "</offers>

";

print "</shop>

</yml_catalog>

";

Скопировал и вставил себе Ваш код... 

выдает ошибку:

This page contains the following errors:

error on line 1 at column 6: XML declaration allowed only at the start of the document

Below is a rendering of the page up to the first error.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

Я добавил в двух местах в файле Yandex.php

 

Заменил выборку, добавлен выбор Brand

$simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, b.name as vendor 
                    FROM s_variants v
                          LEFT JOIN s_products p ON v.product_id=p.id
                    LEFT JOIN s_products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position)
                                  FROM s_products_categories WHERE product_id=p.id LIMIT 1)
                          LEFT JOIN s_brands b ON p.brand_id = b.id  
                          WHERE p.visible AND (v.stock >0 OR v.stock is NULL)
                          GROUP BY v.id ORDER BY p.id, v.position ");    
 

 

и в цикле после дескриптиона Vendor

 

<description>".htmlspecialchars(strip_tags($p->annotation))."</description>
<vendor>".htmlspecialchars(strip_tags($p->vendor))."</vendor>

 

 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

На теме LUXURY, в экспорте для Яндекс маркет исчезает описание товара.

Что нужно изменить в yandex.php?

 

этот файл не зависит от дизайна сайта.

Ссылка на сообщение
Поделиться на другие сайты

этот файл не зависит от дизайна сайта.

До установки темы все работает описание yandex.php считывает, после установки темы не считывает.

В теме LUXURY страница товара выводится двумя файлами из одного название, а описание из второго 2 раза так:

 

{if $product->annotation}
<div class="description">
<div class="heading">Описание товара:</div>
<div data-first-value="{$product->annotation|strip_tags}" class="changeShortDescription">{$product->annotation}</div>
</div>
{/if}
 

и так:

 

{if $product->body}
<div id="detailText">
<div class="heading">Описание товара</div>
<div data-first-value="{$product->body|strip_tags}" class="changeDescription">{$product->body}</div>
</div>
{/if}
 

 

В дэфолтной теме товар выводится одним файлом описание так:

 

<!-- Описание товара -->
<div class="annotation">{$product->annotation}</div>
<!-- Описание товара (The End) -->
 

Можно исправить как то в теме или в yandex.php?

Изменено пользователем Tamara
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...