Jump to content
  • 0

Geolokacja a domyślny kraj - presta 1.6.0.9


() Maciej ()

Question

Czy ktoś może mnie oświecić jak włączyć geolokację, która będzie przełączać domyślny kraj (nie chodzi o wersję językową, bo to akurat działa) tak by wyświetlić wreszcie poprawnie koszt zakupu produktu oraz koszt transportu dla danego kraju ?

 

Ogólnie mam sklep, który ma 3 wersje językowe, 4 waluty i to bez problemu geolokacja załatwia. Ale za nic w świecie nie chce mi przełączyć poprawnie kraju. Tak by np osoba wchodząca z USA widziała : język angielski, walutę dolar oraz ceny specyficzne dla USA wraz z domyślnie ustawionym krajem dostawy na USA, a nie tak jak jest teraz domyślnym krajem jaki ustawiam sobie w zakładce >> Lokalizacja > Lokalizacja.

 

Siedzę nad tym już od ponad tygodnia i już pomysłów mi brakuje. 

Aktualizowałem paczkę geolokacyjną, dodawałem osobną strefę i kraj "Wybierz kraj", by jakoś to obejść (to już był akt desperacji :P ). Ale wtedy wywala mi błąd w koszyku, który co prawda mogę przetłumaczyć na np. "Proszę najpierw wybrać kraj dostawy", jednak nie wygląda to zbyt elegancko. No i ceny dostawy nie są poprawnie wyświetlane. Bo wskakuje na początku wartość domyślna z ustawień presty... Czyli np ceny dla Albanii, które są kosmiczne i odstraszają mi klientów, którzy nie doczytają komunikatu :/

 

Będę wdzięczny za każdą sugestię, pomysł... cokolwiek co mogłoby mnie naprowadzić na naprawę tego babola. 

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Cześć. Minęło 5 lat ale myślę, że problem wciąż jest aktualny. Jako że ten post wyświetlił mi się w tematyce tego problemu w google najwyżej to pomimo tych kilku lat odpiszę, bo może przydać się to jeszcze innym osobom.

Rozwiązanie nie jest najlepsze na świecie jednak działa.

Na podstawie języka strony ustawimy domyślny kraj strony i odpowiedniego przewoźnika. Rozwiązanie ma ten minus, że jeżeli kiedykolwiek będziemy chcieli dodać kolejnego przewoźnika lub usunąć starego, to będziemy musieli odpowiednio edytować ID w dodanym kodzie.

Nie jestem programistą. Rozwiązanie traktuje po prostu jako skuteczne. Wiem, że da się to zrobić o wiele lepiej. Jeśli ktoś ma chęć to chętnie poprawie kod również u siebie. Na ten moment nie znalazłem innych rozwiązań. Co by nie było - lepszy rydz niż nic. :)

Otwieramy plik: classes/Cart.php. Odnajdujemy funkcje "public function getPackageShippingCost(", a następnie linijkę kodu:

if (!$default_country) {
	$default_country = Context::getContext()->country;
}

 

Edytujemy ją na:

if($this->id_address_delivery == 0){
  if (!$default_country) {
      switch($this->id_lang) {
          case <ID_Języka_strony>: $default_country = new Country(<ID_Kraju_Języka>, $this->id_lang); $id_carrier = <ID_Domyślnego_przewoźnika>; break;
          case <ID_Języka_strony>: $default_country = new Country(<ID_Kraju_Języka>, $this->id_lang); $id_carrier = <ID_Domyślnego_przewoźnika>; break;

          //jeśli nie dopasuje żadnego języka to pobierz domyślny kraj z Międzynarodowy -> Lokalizacja -> Domyślny kaj oraz nie zmieniaj domyślnego przewoźnika
          default: $default_country = Context::getContext()->country; break;
      }
  }
}
else{
	$default_country = Context::getContext()->country;
}

 

Te rozwiązanie przygotowane jest na 2 języki/kraje i koszty wysyłki na stronie. Jak chcemy to dodajemy odpowiednio kolejne case.

Oczywiście w momencie składania zamówienia po wybraniu konkretnego kraju przez użytkownika, koszty odpowiednio się dopasują.

Pozdrawiam. :)

Edited by Krychu (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...