Joomla + Virtuemart 3 зачеркнутая старая цена – правильный вывод цены со скидкой

Иногда откровенно бесит, что в “крутых” и “продуманых” движках магазинов некотрые элементарный вещи нужно делать через костыли и путем “ковыряния” кода. Одна из таких вещей – сделать правильный показ цен со скидкой в магазине на базе Virtuemart 3 (такая же ситуация и во всех предыдущих версиях) – а именно – старая цена зачеркнута, новая цена как основная. Путем манипуляций с настройками можно добиться лишь вывода обоих цен, да и то не там где нужно (к примеру в товарах где нет скидки – какраз будет показываться две одинаковых цены, а там где нужно – в товарах со скидкой – только окончательная). Данная инструкция предназначена для магазина на Virtuemart 3 – для предыдущих версий реализация другая.

Joomla + Virtuemart 3 зачеркнутая старая цена – правильный вывод цены со скидкой

Шаг 1. Настройка Virtuemart и товаров.

Настраиваем нужные параметры цен в админке. Делается это в настройках виртуемарт в разделе “Формирование цен”. Ставим галочки возле “Окончательная цена” и “Цена”

virtuemart цена со скидкой

Далее нужно назначить скидку в товаре. Для этого уже на самой странице редактирования/добавления товара в блоке цен в поле “Override” ставим новую цену и отмечаем кнопку “Переписать окончательно”:

virtuemart-skidki

В результате получаем ситуацию описанную в начале – две цены выводиться но совсем не там где нужно. Теперь переходим к правке кода.

Шаг 2. Зачеркнутая старая цена Virtuemart изменение кода.

Ищем файл в папке с темой по пути (от папки темы):

\html\com_virtuemart\sublayouts\prices.php

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

\components\com_virtuemart\sublayouts\prices.php

заменяем код:

на

После чего получаем почти то что нужно. Две цены отображаются тольк в товарах со скидкой, но пока старая цена не зачеркнута:

virtuemart-skidki-zacherknut

Зачеркивание реализуем простой правкой css. В любом файле css (я обычно вставляю в файл стилей темы а не самого virtuemart) добавим стиль для класса:

В итоге получаем то что нам нужно – старая цена зачеркнута а новая выводиться как основная.

virtuemart две цены

Данный способ был внедрен в последний раз в магазин на VirtueMart 3.0.16, но должен работать на всей ветке 3х, хотя в последних версиях VirtueMart 3.2 в редактируемом файле появились новые строки кода, отвечающие за вывод цен, но правки остаются идентичными. С новым кодом будем разбираться, когда появиться заказчик на доработку с соответствующей версией – учиться всегда приятней когда тебе за это еще  и доплачивают 😉 .

Надеюсь данная статья поможет кому-то сэкономить время и не тратить его больше чем нужно на решение банальных задач. Решение хоть и не сильно изящное, но рабочее.

Также буду рад комментариям как повел себя данный код на разных версиях магазинов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *