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

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

Помогите с $product->features - хочу разобраться, как выводить характеристики товара в Yandex.php

Нашёл в product.tpl такой код:

{if $product->features}
<!-- Характеристики товара -->
<h2>Характеристики</h2>
<ul class="features">
{foreach $product->features as $f}
<li>
	<label>{$f->name}</label>
	<span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}



По аналогиии добавил в Yandex.php следующие строки:

if ($p->features){  foreach ($p->features as $f){    print "<param name=".htmlspecialchars($f->name).">".htmlspecialchars($f->value)."</param>";    }}


Но не работает, строчка <param ... не выводится вовсе
Ж8-(

Помогите - что в моём коде не так?
Ссылка на сообщение
Поделиться на другие сайты

по ФПИ его можно получить через $simpla->features->get_product_options(array('product_id'=>$p->id))

только $p тоже должен содержать ид

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

osben, спасибо за помощь
Про SELECT p.id, v.price, ... - понял где находится
попробую ....

$simpla->features->get_product_options(array('product_id'=>$p->id))
добавить перед вызовом
$p->features?

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

Я поглядел внимательнее - в этом запросе уже есть p.id, поэтому этот SELECT я оставил прежним

// Товары
$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, i.filename as image
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)	
WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");



Добавил следующий код

$simpla->features->get_product_options(array('product_id'=>$p->product_id));if ($simpla->features){  foreach ($simpla->features as $f){    print "<param name=".htmlspecialchars($f->name).">".htmlspecialchars($f->value)."</param>";    }}


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

Вот так работает

$p->features = $simpla->features->get_product_options(array('product_id'=>$p->product_id));
if ($p->features){
 foreach ($p->features as $f){
   print "<param name='".htmlspecialchars($f->name)."'>".htmlspecialchars($f->value)."</param>
";  
 }}


Но только 1 раз !!! - выводится в прайс-лист только один товар

Видимо вызов get_product_options нарушает выполнение цикла

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


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

Того, кто поможет мне добавить характеристики товара в yandex.php, готов премировать небольшой денежной премией!

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

kors, спасибо за идею - использовать для вывода характеристик отдельный запрос. Присылай в личку номер своего КИВИ или ЯМ кошелька.

Попробую это реализовать в ближайшее время.

Не знаю, может быть это и замедлит скорость выдачи yandex.php (генерация дополнительного JOIN запроса для каждого товара в прайс-листе), но так у меня не 10000, а всего 100 товаров - думаю, что это замедление будет не существенным.

Точно надо характеристики перед image и названием товара выводить? Я думал, что они в самом конце идут.

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

Та же проблема, только первый товар экспортируется после добавления кода. И только если ставить перед image и vendor.

 

 

$features[$p->product_id] = $simpla->features->get_product_options(array('product_id'=>$p->product_id));

if (!empty($features[$p->product_id])) {
foreach($features[$p->product_id] as $feature) {
            unset($strrpos_count);
            $comma_count = strrpos($feature->name,", ");
            if ($comma_count) {
            print "<param name='".htmlspecialchars(substr($feature->name, 0, $comma_count))."' unit='".htmlspecialchars(substr($feature->name, $comma_count + 2, 999))."'>".htmlspecialchars(strip_tags(trim($feature->value)))."</param>
            ";
            } else {
            print "<param name='".htmlspecialchars(strip_tags(trim($feature->name)))."'>".htmlspecialchars(strip_tags(trim($feature->value)))."</param>
            ";
            }
}
}



Суть все та же - добавить в экспорт яндекса параметры для товара.

 

<param name="Размер экрана" unit="дюйм">27</param>
<param name="Материал">алюминий</param>
<param name="Wi-Fi">есть</param>

 

Если вопрос решен, прошу помощи. Отблагодарю!

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

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

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

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

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

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

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

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

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

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