R4xx4r Posted June 29, 2020 Share Posted June 29, 2020 (edited) Hallo liebe Community, Ich muss in einem Script den Shop bzw genauer den Country Context manipulieren, schaffe es aber nicht die Country ID zu allgemein zu setzen. Warum das Ganze: Ich habe ein Script was mir ein File erstellen soll mit bereits richtig berechneten Preisen. Die Steuersätze die hier herangezogen werden sind unterschiedlich pro Land. Da ich kein eingeloggter User bin sonder alles direkt aufrufe erkennt er anhand von geotagging immer meinen Standort und natürlich nicht den den ich brauchen würde. Meine Idee: Wenn ich aus dem Script komme setze ich den Allgemeinen Context, so dass ich überall "simuliere", dass ich aus einem anderen Land komme. Leider finde ich dazu nicht viel. Ich weiß, dass ich per Context::getContext(); auf den Context zugreifen kann, aber schaffe es einfach nicht die country ID zu setzen wie ich sie möchte. Ich würde mich über Hilfe freuen und wünsche euch einen guten Start in die Woche! LG Edited June 30, 2020 by R4xx4r (see edit history) Link to comment Share on other sites More sharing options...
Claudiocool Posted June 29, 2020 Share Posted June 29, 2020 Du hast in jedem dieser Länder eine Niederlassung? Wenn du ganz sicher gehen willst, solltest du eher über die jeweiligen TLDs die zu jedem Land zugehörige Shopvariante in einer Multishop-Lösung realisieren. 1 Link to comment Share on other sites More sharing options...
R4xx4r Posted June 29, 2020 Author Share Posted June 29, 2020 (edited) Hallo und gleich mal DANKE für die schnelle Antwort! Es gibt eine Niederlassung mit mehreren "Märkten". Mein Script ist ein Export der Daten mit relevanten Infos unter anderem auch die Preise. Wir haben also eine com domain welche dann per /de /it /... auf die jeweiligen Shops zeigt. Das Script ist ein eigenes Modul welches dann einfach aufgerufen wird => er hat quasi keine Länder Zuordnung -> das geotagging greift und ordnet mich zu (Ich sitze in Östereich, daher mit der country id für AT) Context::getContext()->country->id = 10; setzt es zwar richtig, aber bei der Tax Berechnung wird einfach nicht der richtige Wert hergezogen. Hier überprüfen wir auch anhand der TLD wo wir uns befinden und setzen sogar manuell das Land - wir faken also quasi, dass wir aus Italien sind - Leider auch das ohne Erfolg switch ( $shop ) { case "DE": /* ... */ break; case "AT": /* ... */ break; case "IT": $id_shop = 6; $id_lang = 4; $country = Country::getCountriesByZoneId(10, 4); Shop::setContext(Shop::CONTEXT_SHOP, 6); Context::getContext()->shop->id = 6; Context::getContext()->country = $country; break; } Falls es relevant ist handelt es sich explizit um die Version 1.7.3.1 Edited June 29, 2020 by R4xx4r (see edit history) Link to comment Share on other sites More sharing options...
R4xx4r Posted June 30, 2020 Author Share Posted June 30, 2020 Mittlerweile haben wir die Lösung gefunden wie wir dieses Problem lösen. Der Context war einfach falsch gesetzt. dieses wurde wie folgt angepasst und siehe da, wir haben den richtigen Context: switch ( $shop ) { case "DE": $id_shop = 1; $id_lang = 1; $replace = '.com/de/'; Context::getContext()->country = new Country((int)1); // ID 1 für Deutschland break; case "AT": $id_shop = 5; $id_lang = 1; $replace = '.com/at/'; Context::getContext()->country = new Country((int)2); // ID 2 für Österreich break; case "IT": $id_shop = 6; $id_lang = 4; $replace = '.com/it/'; Context::getContext()->country = new Country((int)10); // ID 10 für Italien break; } Wenn man die ID's der Länder nicht weiß, kann man sich diese aber auch recht schnell mit folgendem Snippet holen: echo '<pre>'; var_dump(Country::getCountries()); die(); ACHTUNG: Man darf nicht eingeloggt sein im Frontend, da sonst die Adresse des eingeloggten Users genommen wird - Diese dürfte eine höhere Gewichtung haben. Ich hoffe, ich konnte vlt. dem ein oder anderen damit helfen! LG Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now