Към съдържанието
PN Scripts

Отворен код

Как да покажете цените в лева и евро в PrestaShop

  • PN Scripts Team
  • 6 мин четене

За да покажете цените в лева и в евро на продуктовата страница в PrestaShop, пазете една цена на продукт във валутата по подразбиране, активирайте и двете валути в магазина и изчислявайте втората сума с курса, който PrestaShop вече съхранява. Показвайте я през кука (hook) на темата, така че темата да запази контрола върху оформлението. Второ поле с цена, въведена на ръка, изглежда по-лесно в началото, но бързо се разминава с курса и удвоява работата при всяка промяна на цена.

По-долу ще видите защо е така, какви са начините да добавите втора валута в блока с цената и какво да проверите преди пускане. Подходът важи за всяка двойка валути. Лев и евро просто са двойката, която повечето български онлайн магазини търсят при преминаването от лева към евро.

#Защо магазинът има нужда от две валути на продуктовата страница

PrestaShop поддържа няколко валути и посетителят може да избере една от тях от превключвателя. Проблемът е, че той показва само една валута в даден момент. Ако клиентът разглежда в лева, вижда лева. Смени ли на евро, сумата в лева изчезва. Когато купувачите очакват да видят двете суми една до друга, превключването не решава въпроса, защото те искат да ги сравнят с един поглед на същата страница.

Задачата е тясна: цените, поръчката и основната валута остават непроменени, а под основната цена се добавя ред със същата сума в другата валута.

#Защо второ поле за цена е лоша идея

Първото хрумване на много екипи е да добавят собствено поле към всеки продукт, да въведат цената в евро на ръка и да я изведат в шаблона. В първия ден работи. След това разходите растат:

  • Две цени за поддръжка. Всяка промяна на цена, всяка промоция и всеки масов импорт трябва да обновят две полета. Рано или късно едното се пропуска и страницата показва суми, които не си съответстват.
  • Няма връзка с курса. Ръчно въведеното число не зависи от курса в магазина. Промени ли се курсът, стотици продукти остават с грешна цена, докато някой не ги поправи един по един.
  • Комбинации и специфични цени. При продукти с комбинации, надценки, отстъпки за клиентски групи или ценови правила крайната цена се изчислява от PrestaShop в момента на зареждане. Статично поле не може да следва това изчисление.
  • Импорти и интеграции. Ако цените идват от ERP система, от доставчик или от CSV файл, допълнителното поле изисква собствено съпоставяне и собствени проверки.

Правилото, което спестява всичко това: съхранявайте една цена и изчислявайте другата. Втората валута винаги е резултат от изчисление, а не втори източник на данни.

#Използвайте курсовете, които магазинът вече пази

Всяка валута в PrestaShop има курс спрямо валутата по подразбиране, записан в стойността conversion_rate. Същият курс се използва, когато посетителят смени валутата, така че ако разчитате на него, вторият ред съвпада с всичко останало в магазина.

Преди това проверете три неща в административния панел:

  1. И двете валути са активни. Неактивна валута не бива да се появява никъде в магазина, включително във втория ред с цена.
  2. Курсът е верен. Сверете го с официалната стойност, която трябва или сте решили да използвате. Ако курсовете се обновяват автоматично, знайте откъде идват данните и кога се изпълнява обновяването.
  3. Валутата по подразбиране е тази, в която определяте цените. Преизчисляването винаги тръгва от цената, която магазинът показва на посетителя, с ДДС, отстъпки и избраната комбинация.

Отделно помислете за закръгляването. Преизчислената сума служи за информация. Решете колко знака след десетичната запетая да показвате и се уверете, че вторият ред използва формата и знака на съответната валута, така че „лв.“ и „€“ да стоят там, където клиентите ги очакват.

#Къде да се покаже втората цена: куките на темата

На практика има три начина да добавите допълнителния ред.

ПодходКак работиОсновен риск
Промяна в шаблона на тематаРедактирате 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 ще намерите изискванията, стъпките за инсталиране и отговори на честите въпроси.

Още по темата

Още по темата

Коментари

Коментари

Напишете първия коментар.

Оставете коментар

Следваща стъпка

pnscripts.com/bg/contact

Пишете на екипа

Попитайте за статия или ни разкажете за проект, който искате да изградим. Отговаряме до един работен ден.

Пишете ни

Семейството PN Scripts

Другите сайтове на PN Scripts

Хостингът, игрите и блогът имат свои сайтове, поддържани от същата компания.

  • pnscripts.com

    PN Scripts

    Софтуерно инженерство

    Разработка на уеб и мобилни приложения, API и игри по поръчка, плюс нашите open-source продукти и плъгини.

  • games.pnscripts.com

    Игри

    Игри и игрови сървъри

    Мястото за игрите и игровите сървъри на PN Scripts. Каталогът засега е празен и ще се попълва, когато игрите и сървърите стартират.

  • hosting.pnscripts.com

    Хостинг

    Хостинг и инфраструктура

    Споделен хостинг, KVM VPS, самостоятелни сървъри и домейни от същата компания, която изработва проекта ви.

  • blog.pnscripts.com

    Блог

    Статии и бележки

    Ясни статии за хостинг, сървъри, домейни и сигурност, писани от хората, които работят с тях.

    Вие сте тук