Sorteaza produsele dupa pret, luând în considerare moneda în 1C-Bitrix

Probabil, unul este de multe ori se confruntă cu problema că prețul mărfurilor la umplere în diferite valute sortate după preț nu funcționează corect. Componentele directorul specificat de parametrul de sortare catalog_PRICE_ * specificând tipul de preț ID. În acest caz, în conformitate cu cele. sprijin Bitrix, este de a comanda valoarea absolută fără a ține cont de monedă. pentru că 100 $ va fi egal cu 100 $.

Pentru a rezolva această problemă, aveți nevoie pentru a face unele îmbunătățiri pe site. În primul rând, trebuie să creați 2 proprietăți în bunuri - MINIMUM_PRICE MAXIMUM_PRICE și tipul de număr. Codurile de caractere ale acestor proprietăți pot fi și altele, dar în acest exemplu, vom folosi aceste.

În continuare avem nevoie pentru a scrie stivuitoare eveniment care va umple aceste proprietăți în bunuri. Un exemplu de astfel de procesor este prezentată mai jos.

Handler trebuie să fie plasat în fișierul init.php în directorul / bitrix / php_interface /. Trebuie remarcat faptul că procesorul permite, de asemenea, pentru comerțul oferă bunuri. Prin urmare, proprietățile MINIMUM_PRICE MAXIMUM_PRICE și pot fi de asemenea utilizate pentru filtrarea (in Bitrix are o problemă cu produse de filtrare in diverse valute, dar mai mult pe aceasta într-un alt articol).

Partea care se face - atunci când actualizarea sau adăugarea unui produs, el va fi umplut cu prețul de proprietate în moneda de bază. Dar rămâne încă 2 probleme:

  • Ce se poate face cu mărfurile deja pe site?
  • Cum de a menține relevanța prețurilor în proprietate? Deoarece ratele de schimb se pot schimba.

Soluții Variant - un prețurile periodice de schimb. Acesta poate fi realizat printr-un așa-numit cron, sau printr-un agent. În acest caz, vom pune în aplicare prin intermediul unui agent. Codul unui astfel de agent este prezentat mai jos.

În funcție de performanța serverului, precum și cu privire la frecvența de schimbare a cursurilor de schimb de pe site-ul dvs., puteți modifica valoarea variabilei $ maxStepSize. În exemplul într-o singură etapă este procesat 3000 produse. De asemenea, de exemplu, GetOptimalPrice folosește o metodă care ia în considerare o reducere la bunuri (pentru utilizatorii neînregistrați). În cazul în care reducerile nu sunt utilizate pe site-ul dvs., am recomandăm să folosiți o metodă de obținere a prețului primul exemplu, din moment ce acesta va lucra mult mai repede.

Dar, desigur, cea mai bună opțiune - este de a utiliza acest cod printr-un CRON, deoarece activitatea agenților poate afecta viteza de descărcare de pe client (în cazul în care acesta devine în momentul funcționării sale).

Odată ce ne-am plasat codul corect pe site-ul, acesta rămâne cel mai simplu - pentru a configura un fel componentele de director de proprietate MINIMUM_PRICE.