Сортиране на продукти по цена, като се вземат предвид валутата, в 1C-Битрикс

Вероятно, един често се сблъскват с проблема, че цената на стоките при запълването в различни валути, сортирани по цена не работи правилно. Компонентите на директорията, определени от параметъра сортиране catalog_PRICE_ * определяне на тип за цена ID. В този случай, съгласно тези. подкрепа Bitrix, е по поръчка на абсолютната стойност, без да отчита валута. защото $ 100 ще бъде равна на $ 100.

За да се реши този проблем, трябва да се направят някои подобрения на сайта. На първо място, трябва да се създаде 2 имота със стоки - MINIMUM_PRICE MAXIMUM_PRICE и вида на брой. Символни кодове на тези свойства могат да бъдат други, но в този пример, ние ще използваме тези.

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

Водачът трябва да бъде поставен в init.php файла в папката / Битрикс / php_interface / на. Трябва да се отбележи, че процесорът също така дава възможност за търговия със стоки оферти. Съответно, свойствата MINIMUM_PRICE MAXIMUM_PRICE и могат да се използват за филтриране (в Битрикс има проблем с продукти за филтриране в различни валути, но повече за това в друга статия).

Част е направена - когато актуализиране или добавяне на един продукт, той ще бъде изпълнен с цената на имота в базовата валута. Но остава още 2 проблема:

  • Какво да правим със стоките, които вече са на сайта?
  • Как да се запази значението на цените в имота? Тъй като валутните курсове могат да бъдат променяни.

Вариант решения - периодична цени борса. Тя може да се реализира чрез така наречената CRON, или чрез представител. В този случай, ние ще приложи чрез представител. Кодът на такъв агент е показано по-долу.

В зависимост от изпълнението на сървъра, както и от честотата на промяна на валутните курсове на сайта си, можете да промените стойността на променливата $ maxStepSize. В примера с една стъпка се обработва 3000 продукти. Също GetOptimalPrice пример използва метод, който отчита намаление на стоки (за нерегистрирани потребители). Ако намаления не се използват на вашия сайт, аз препоръчвам да се използва метод за получаване на цената на първия пример, тъй като тя ще работи много по-бързо.

Но, разбира се, най-добрият вариант - това е да се използва този код чрез CRON, тъй като работата на средства може да повлияе на скоростта на изтегляне на клиента (ако стане в момента на нейното функциониране).

След като сте направили правилния код на сайта, той остава най-простите - да се създаде директория компоненти вид на по MINIMUM_PRICE собственост.