За да покажете цените в лева и в евро на продуктовата страница в PrestaShop, пазете една цена на продукт във валутата по подразбиране, активирайте и двете валути в магазина и изчислявайте втората сума с курса, който PrestaShop вече съхранява. Показвайте я през кука (hook) на темата, така че темата да запази контрола върху оформлението. Второ поле с цена, въведена на ръка, изглежда по-лесно в началото, но бързо се разминава с курса и удвоява работата при всяка промяна на цена.
По-долу ще видите защо е така, какви са начините да добавите втора валута в блока с цената и какво да проверите преди пускане. Подходът важи за всяка двойка валути. Лев и евро просто са двойката, която повечето български онлайн магазини търсят при преминаването от лева към евро.
#Защо магазинът има нужда от две валути на продуктовата страница
PrestaShop поддържа няколко валути и посетителят може да избере една от тях от превключвателя. Проблемът е, че той показва само една валута в даден момент. Ако клиентът разглежда в лева, вижда лева. Смени ли на евро, сумата в лева изчезва. Когато купувачите очакват да видят двете суми една до друга, превключването не решава въпроса, защото те искат да ги сравнят с един поглед на същата страница.
Задачата е тясна: цените, поръчката и основната валута остават непроменени, а под основната цена се добавя ред със същата сума в другата валута.
#Защо второ поле за цена е лоша идея
Първото хрумване на много екипи е да добавят собствено поле към всеки продукт, да въведат цената в евро на ръка и да я изведат в шаблона. В първия ден работи. След това разходите растат:
- Две цени за поддръжка. Всяка промяна на цена, всяка промоция и всеки масов импорт трябва да обновят две полета. Рано или късно едното се пропуска и страницата показва суми, които не си съответстват.
- Няма връзка с курса. Ръчно въведеното число не зависи от курса в магазина. Промени ли се курсът, стотици продукти остават с грешна цена, докато някой не ги поправи един по един.
- Комбинации и специфични цени. При продукти с комбинации, надценки, отстъпки за клиентски групи или ценови правила крайната цена се изчислява от PrestaShop в момента на зареждане. Статично поле не може да следва това изчисление.
- Импорти и интеграции. Ако цените идват от ERP система, от доставчик или от CSV файл, допълнителното поле изисква собствено съпоставяне и собствени проверки.
Правилото, което спестява всичко това: съхранявайте една цена и изчислявайте другата. Втората валута винаги е резултат от изчисление, а не втори източник на данни.
#Използвайте курсовете, които магазинът вече пази
Всяка валута в PrestaShop има курс спрямо валутата по подразбиране, записан в стойността conversion_rate. Същият курс се използва, когато посетителят смени валутата, така че ако разчитате на него, вторият ред съвпада с всичко останало в магазина.
Преди това проверете три неща в административния панел:
- И двете валути са активни. Неактивна валута не бива да се появява никъде в магазина, включително във втория ред с цена.
- Курсът е верен. Сверете го с официалната стойност, която трябва или сте решили да използвате. Ако курсовете се обновяват автоматично, знайте откъде идват данните и кога се изпълнява обновяването.
- Валутата по подразбиране е тази, в която определяте цените. Преизчисляването винаги тръгва от цената, която магазинът показва на посетителя, с ДДС, отстъпки и избраната комбинация.
Отделно помислете за закръгляването. Преизчислената сума служи за информация. Решете колко знака след десетичната запетая да показвате и се уверете, че вторият ред използва формата и знака на съответната валута, така че „лв.“ и „€“ да стоят там, където клиентите ги очакват.
#Къде да се покаже втората цена: куките на темата
На практика има три начина да добавите допълнителния ред.
| Подход | Как работи | Основен риск |
|---|---|---|
| Промяна в шаблона на темата | Редактирате product-prices.tpl или дъщерна тема, за да изведете преизчислената сума | Обновяване на темата презаписва промяната или влиза в конфликт с нея |
| Преизчисляване в браузъра | JavaScript чете цената и я умножава по курс, записан в кода | Курсът живее в кода, а редът може да премигва или да се счупи при смяна на цената |
| Модул на кука | Модул се закача за кука в блока с цената и извежда собствен шаблон | Зависи от това темата да извиква куката, което стандартните теми правят |
Модулът на кука е най-чистото решение. Темите на PrestaShop извикват displayProductPriceBlock на няколко места в блока с цената и подават параметър type, който казва на модулите къде се намират, например before_price, old_price или after_price. Модул, който слуша за after_price, добавя своите редове точно под основната цена, а темата запазва собствената си разметка и стилове. При смяна или обновяване на темата модулът продължава да работи, докато новата тема извиква куката.
Ако пишете модула сами, дръжте го малък: вземете крайната цена на продукта така, както я показва темата, обходете останалите активни валути, преизчислете с курса на всяка и форматирайте сумата според настройките ѝ. Пропуснете валутата, в която посетителят вече разглежда, защото една и съща сума два пъти само пречи.
#Dual Price: безплатен модул, който прави точно това
PN Scripts публикува Dual Price, безплатен модул за PrestaShop с лиценз MIT и изходен код в GitHub. Той следва подхода, описан по-горе:
- Работи с PrestaShop 8 и 9, на PHP 8.1 или по-нова версия.
- Закача се за
displayProductPriceBlockсafter_price, така че преизчислените цени се показват под основната, а темата запазва своя блок с цена. - Сумите се изчисляват с
conversion_rateна PrestaShop, така че няма второ поле за цена, което да поддържате. - Показва всички останали активни валути и пропуска валутата, в която посетителят вече разглежда, както и изключените валути.
- Модулът само показва информация. Не променя цените, основната валута и процеса на поръчка.
Магазинът трябва да има поне две активни валути. Клонирате хранилището, копирате модула в папката modules на магазина и го инсталирате от административния панел. За магазини на OpenCart има отделна версия, Dual Price for OpenCart: OCMOD разширение за OpenCart 3, което показва останалите активни валути под основната цена с курсовете на самия OpenCart.
Ако темата ви е силно променена, същите принципи важат и за модул, който пишете или адаптирате сами.
#Какво да проверите преди пускане
- Отворете продукти с комбинации и сменете комбинацията. Вторият ред трябва да следва избраната.
- Проверете продукт в промоция и продукт с отстъпка за клиентска група, с вход в профил и без.
- Сменете валутата в магазина и се уверете, че валутата на посетителя не се повтаря във втория ред.
- Изключете тестова валута и проверете, че тя изчезва от продуктовата страница.
- Прегледайте страницата на телефон, където блокът с цената има най-малко място.
- Изчистете кеша на PrestaShop след инсталиране или промяна на модула и проверете отново.
- Уточнете с човека, който отговаря за съответствието с изискванията, кои суми, какъв курс и какви надписи трябва да показва магазинът. Тази статия покрива само техническата страна.
Ако цените отиват и към ERP система или маркетплейс, и там пазете една съхранена цена. В статията какво е нужно за надеждна API интеграция ще намерите проверките, които държат тези системи в синхрон.
#Как може да помогне PN Scripts
Dual Price е безплатен за използване и промяна под лиценз MIT, а PN Scripts може да го адаптира за конкретна тема или структура на каталога. На страницата на Dual Price ще намерите изискванията, стъпките за инсталиране и отговори на честите въпроси.
Коментари
Коментари
Напишете първия коментар.
Оставете коментар