Jest to dość prosta modyfikacja, a bardzo wygodna dla klienta. Wraz ze zmianą języka na sklepie – zostanie automatycznie przestawiona waluta. Jak to zrobić?
Sparowanie języków i walut
Na początek sprawdź ID języków i walut. W dziale „Międzynarodowy -> Lokalizacja”
Porównaj obie strony:
W naszym przypadku:
- dla języka o ID = 1 ustaw walutę o ID = 2
- dla języka o ID = 2 ustaw walutę o ID = 1
- dla języka o ID = 3 ustaw walutę o ID = 3
U Ciebie te pary mogą być inne.
Edycja pliku PHP
Otworz plik:
classes/Tools.php
Znajdź funkcję:
public static function switchLanguage(Context $context = null)
Zmiana dla wersji 1.7 / PrestaShop 8
Zmień kod:
if ( ($iso = Tools::getValue('isolang')) && Validate::isLanguageIsoCode($iso) && ($id_lang = (int) Language::getIdByIso($iso)) ) { $_GET['id_lang'] = $id_lang; }
na:
if ( ($iso = Tools::getValue('isolang')) && Validate::isLanguageIsoCode($iso) && ($id_lang = (int) Language::getIdByIso($iso)) ) { $_GET['id_lang'] = $id_lang; } global $cookie;
Czyli dopisujemy linijkę „global $cookie;”
Następnie pod kodem:
if (Validate::isLoadedObject($language) && $language->active && $language->isAssociatedToShop()) { $context->language = $language; } }
Wklej
switch($newLanguageId) { case 1: //if lang_id that's changed to is = 1 than... $cookie->id_currency = 2; @self::setCurrency($cookie); break; case 2: //and so on .... $cookie->id_currency = 1; @self::setCurrency($cookie); break; case 3: $cookie->id_currency = 3; @self::setCurrency($cookie); break; }
W zależności od Twoich par – dla ID = 1 widocznego przy „case ID-języka” zastosuj odp. ID przy „$cookie->id_currency = ID-waluty”
Zmiana dla wersji 1.6
Po kodzie:
if (($iso = Tools::getValue('isolang')) && Validate::isLanguageIsoCode($iso) && ($id_lang = (int)Language::getIdByIso($iso))) { $_GET['id_lang'] = $id_lang; }
Wklej:
global $cookie;
Po kodzie:
$context->language = $language;
Wklej:
switch($id_lang) { case 1: //if lang_id that's changed to is = 1 than... $cookie->id_currency = 2; @self::setCurrency(); break; case 1: //and so on .... $cookie->id_currency = 2; @self::setCurrency(); break; case 3: $cookie->id_currency = 3; @self::setCurrency(); break; }
Gotowe 🙂
grafika: alphacoders.com
A co zrobić w PS 8.0….
@Darek użyj tego samego rozwiązania co dla PrestaShop 1.7. Sprawdziłem i działa 🙂