Как вывести диапазон зачеркнутых цен?
Добрый день. Может кто знает как можно вывести диапазон зачеркнутых цен?
Вот пример:

Вот мои наработки по коду:
{if $p.min_price != $p.max_price} <span class="price price-from"> <span>{($p.min_price)}</span> <span><small> - </small>{shop_currency($p.max_price)}</span> </span> <br> {*<span>{($p.compare_min_price)}</span> <span><small> - </small>{shop_currency($p.compare_max_price)}</span>*} {else} <span>{shop_currency($p.price)}</span> <br> {if $p.compare_price > 0} <s>{shop_currency($p.compare_price)}</s>{/if} {/if}
1 ответ
Не существует никакого compare_max_price. В массиве продукта действительно есть min_price и max_price, а с зачеркнутой ценой сложнее. Ниже приведена структура данных, которая вам нужна для получения необходимых старых цен артикулов compare_price.
В этом примере будет так:
Цена: 400 (артикул по-умолчанию)
Диапазон цен: 300 - 450
Старые цены: 350 - 550
Надо брать все старые цены (compare_price) всех артикулов товара, лепить из них новый массив, сортировать его по цене и выбирать максимальное и минимальное значение, которые и показывать.
Однако тут ведь еще и логика процесса пострадать может. При определенном стечении обстоятельств и комбинации артикулов старая цена может оказаться ниже новой на одной из границ, т.к. при переборе массива старых цен без привязки к основному артикулу можно выбросить на витрину старую цену другого артикула, который выходит за пределы диапазона.
Либо же надо брать граничные артикулы, которым соответствуют значениям min_price и max_price и брать их compare_price как первое и второе значение для границ, но, может опять же оказаться так, что эта пара не будет соответствовать максимально большому и минимально низкому значению старых цен для граничных актуальных цен, если есть артикул, у которого зачеркнутая цена окажется больше, но новая меньше в силу большей скидки.
Вероятность разрыва логической цепочки мала, но всё же есть. Однако бояться этого не стоит. Тут уже надо смотреть по коду какой из двух вариантов будет лучше получаться.