Press "Enter" to skip to content

[LIFEHACK] Zmiana walut automatycznie ze zmianą języka w PrestaShop

Admin 2

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

    • Admin Admin

      @Darek użyj tego samego rozwiązania co dla PrestaShop 1.7. Sprawdziłem i działa 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Dodanie mapy XML (Google XML SiteMaps) do Twojego sklepu to…