Здравствуйте,
Хочу вывести оптовую цену (lowPrice) в микроразметке. Чтобы цена отображалась От и До.
Как можно захватить последнюю цену из данного массива?
Здравствуйте,
Хочу вывести оптовую цену (lowPrice) в микроразметке. Чтобы цена отображалась От и До.
Как можно захватить последнюю цену из данного массива?
Для того, чтобы получить минимальную из всего массива можно так
{$lowest_price = $product.price}
{foreach from=$product.prices item=p}
{if $p.price < $lowest_price}
{$lowest_price = $p.price}
{/if}
{/foreach}
{$price = $product.price}
{foreach from=$product.prices item=pprice}
{if $pprice.price < $price}
{$price = $pprice.price}
{/if}
{/foreach}
а этот ваш код уже не действителен?
Спасибо, добавил вывод после массива, все работает
<meta itemprop="lowPrice" content="{$lowest_price}"/>
у меня эта строка “сьелась” когда вставлял сюда
Тоже самое, тольку сбоку
В последних версиях CS-Cart микроразметка формируется методом JSON-LD в файле app/addons/seo/func.php. Нужно в микроразметке указать вывод lowPrice (минимальной оптовой цены у товара).
Кто-нибудь знает способ?
Схема та же. Распечатайте массив $product, посмотрите, есть ли там элемент prices
Пробовал в func.php добавлять распечатку массива fn_print_r($product);
но почему-то не срабатывает.
Лучше в шаблоне вставить
{$product|fn_print_r}
Как в шаблоне сделать, то впринципе понятно, там получение минимальной оптовой цены работает:
{$lowest_price = $product.price} {foreach from=$product.prices item=p} {if $p.price < $lowest_price} {$lowest_price = $p.price} {/if} {/foreach}
Как минимальную цену передать и вывести в JSON в app/addons/seo/func.php, вот это непонятно, т.к. не особо программист.
Попробуйте после добавления кэш почистить
Кэш чистил.
Массив получается вывести, если добавить распечатку массива fn_print_r($product_data);
внутрь функции function fn_seo_get_schema_org_markup_items
.
Тогда цены на странице товара распечатываются.
Тогда по аналогии
$lowest_price = $product_data['price'];
if (!empty($product_data['prices'])) {
foreach ($product_data['prices'] as $p) {
if ($p['price'] < $lowest_price) {
$lowest_price = $p['price'];
}
}
}
Спасибо, все работает. Также для оптовых цен добавил вывод в микрораметку: highPrice, offerCount, Может кому пригодится.
if (!empty($product_data['prices'])) {
$offer['@type'] = 'http://schema.org/AggregateOffer';
$offer['offerCount'] = count($product_data['prices']) +1;
$offer['highPrice'] = fn_format_price($product_data['price'], $currency);
$lowest_price = $product_data['price'];
foreach ($product_data['prices'] as $p) {
if ($p['price'] < $lowest_price) {
$lowest_price = $p['price'];
}
}
$offer['lowPrice'] = $lowest_price;
}
подскажите, а как сделать чтобы цена price менялась в сниппете на минимальную если такова есть у товара?
сейчас код который вы давали ранее, с появлением JSON-LD не работает.
design\themes\YOUR_THEME\templates\addons\seo\hooks\products\view_main_info.pre.tpl
Замените
< m e t a itemprop=“price” content="{$product.price|fn_format_price:$primary_currency} "/ >
на
{$price = $product.price}
{foreach from=$product.prices item=pprice}
{if $pprice.price < $price}
{$price = $pprice.price}
{/if}
{/foreach}
Тут задача посложнее. Используйте хук seo_get_schema_org_markup_items_post в функции fn_seo_get_schema_org_markup_items (app/addons/seo/func.php)
еще вопросик если не возражаете … как я понял этот код срабатывает на одиночном товаре и вариации как отдельные товары. Но если будет вариации как один товар то наибольшая цена не попадает в схему … а в наименьшей отображается наибольшая цена … можно текущий код подправить, чтобы это работало в этом случае?
Да, можно. Но так, с наскока, не скажу, как сделать. Нужно в модуль вариаций лезть
что для этого нужно сделать? где разместить заявку?