Unter http://www.exanto.de/xtcommerce-waehrungskurse-automatisch-aktualisieren.html wird beschrieben, wie man Wechselkurse automatisch aktualisieren kann. Ich habe das in der /includes/classes/xtcPrice.php eingebaut und das funktioniert auch hervorragend. Das sollte aber doch auch updatesicher gehen, oder? Alle meine Versuche dahingehend sind aber bislang fehlgeschlagen. Kann mir da mal jemand auf die Sprünge helfen?
wäre da nicht eine datei einfacher die per cronjob das alle nase lang autom. macht? Dann müsste man nicht in die Shopdateien eingreifen.
Klar geht das... Wie im Artikel beschrieben, muss dafür die Konstruktormethode von xtPrice überladen werden....
Ja, das habe ich verstanden. Nur wie mache ich das? (Sorry, ich bin Kaufmann und kein Informatiker) ich habe es versucht als user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php class wassweissich?? extends constructor_parent { code von exanto } Funktioniert aber nicht Fehlermeldung: Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php on line 24
Probier das mal: PHP: class currencyupdate_xtcPrice extends currencyupdate_xtcPrice_parent{ function __construct() { //exanto Code parent::__construct() }} Cache leeren...
Habe ich probiert: PHP: <?phpclass currencyupdate_xtcPrice extends currencyupdate_xtcPrice_parent{function __construct(){// [start] :ADDED: exanto.de - get current rates $ccache = DIR_FS_DOCUMENT_ROOT . 'cache/last_currency_run.txt'; if (filemtime($ccache) + 86400 < time()) { // get new values from ecb $xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); if (is_object($xml)) { // successfully grabbed, touch markerfile, update db touch($ccache); foreach ($xml->Cube->Cube->Cube as $curEntry) { xtDBquery(" UPDATE " . TABLE_CURRENCIES . " SET value = '" . $curEntry['rate'] . "', last_updated = now() WHERE code = '" . $curEntry['currency'] . "' LIMIT 1 "); } } } // [ end ] :ADDED: exanto.de - get current ratesparent::__construct()}}?> Funktioniert aber nicht: Parse error: syntax error, unexpected '}' in /user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php on line 28
Danke Moritz, jetzt gibt's keinen ganz weissen Bildschirm mehr, dafür erhalte ich pro Währung zwei Fehlermeldungen: WARNING(2): "Missing argument 1 for xtcPrice_ORIGIN::xtcPrice_ORIGIN(), called in /srv/www/update/user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php on line 27 and defined" in /srv/www/update/includes/classes/xtcPrice.php:25 (Details) Backtrace: #0 (#xtcPrice_ORIGIN) xtcPrice_ORIGIN called at [/srv/www/update/user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php:27] #1 (#currencyupdate_xtcPrice) __construct called at [/srv/www/update/gm/properties/page_modules/PropertiesView.php:315] #2 (#PropertiesView) get_selection_form called at [/srv/www/update/system/views/product_info/ProductInfoContentView.inc.php:471] #3 (#ProductInfoContentView) get_html called at [/srv/www/update/product_info.php:54] WARNING(2): "Missing argument 2 for xtcPrice_ORIGIN::xtcPrice_ORIGIN(), called in /srv/www/update/user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php on line 27 and defined" in /srv/www/update/includes/classes/xtcPrice.php:25 (Details) Backtrace: #0 (#xtcPrice_ORIGIN) xtcPrice_ORIGIN called at [/srv/www/update/user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php:27] #1 (#currencyupdate_xtcPrice) __construct called at [/srv/www/update/gm/properties/page_modules/PropertiesView.php:315] #2 (#PropertiesView) get_selection_form called at [/srv/www/update/system/views/product_info/ProductInfoContentView.inc.php:471] #3 (#ProductInfoContentView) get_html called at [/srv/www/update/product_info.php:54]
Es muss PHP: function __construct($currency, $cGroup) und PHP: parent::__construct($currency, $cGroup); heißen.
Super Moritz, das war's! also, die funktionierende /user_classes/overloads/xtcPrice/currencyupdate_xtcPrice.php sieht so aus: PHP: <?phpclass currencyupdate_xtcPrice extends currencyupdate_xtcPrice_parent{function __construct($currency, $cGroup){// [start] :ADDED: exanto.de - get current rates $ccache = DIR_FS_DOCUMENT_ROOT . 'cache/last_currency_run.txt'; if (filemtime($ccache) + 86400 < time()) { // get new values from ecb $xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); if (is_object($xml)) { // successfully grabbed, touch markerfile, update db touch($ccache); foreach ($xml->Cube->Cube->Cube as $curEntry) { xtDBquery(" UPDATE " . TABLE_CURRENCIES . " SET value = '" . $curEntry['rate'] . "', last_updated = now() WHERE code = '" . $curEntry['currency'] . "' LIMIT 1 "); } } } // [ end ] :ADDED: exanto.de - get current ratesparent::__construct($currency, $cGroup);}}?> Wenn es in einer Währung nicht funktioniert, schaut Euch die http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml an. Da stehen nicht alle Währungen der Welt drinn... Die Zeit für den Cache würde ich noch runter setzen auf eine Stunde (3600 statt 86400). Sonst wird die Datei evtl. zu lange gecached.
Bedenkt, dass wenn der Server für die Währungsdaten mal lahmt oder nicht zu erreichen ist, auch der Shop entsprechend lahmt oder nicht zu erreichen ist. Ist ärgerlich, wenn das dann grad ein Kunde angestoßen hat.
da fänd ic nen cronjob der das über eine extra datei macht wohl doch sinnvoller, oder lahmt der shop dann auch?
Irgendwie komme ich nicht weiter... Dies ist der aktuellste Feed, den ich zum Thema Wechselkursautomatik finden konnte. Durch die aktuell hohe Inflation etc., sind die Wechselkurse auch wieder unstabiler geworden. Ich möchte gerne einen Cronjob einrichten, der das macht, als wenn ich manuell auf den Aktualisieren-Button klicke, was ich zur Zeit mind. 1x am Tag mache. Kann mir bitte jemand erklären wie ich die URL finde, um den Wechselkurs automatisch per Cronjob aktualisieren zu lassen? Ich habe folgenden versucht, der ohne Fehlermeldung läuft, aber die Wechselkursaktualisierung leider nicht auslöst... https://shop.naturschlafstudio.de/request_port.php?module=RunJobs&token=APILayer API-Key für Wechselkursaktualisierung
Ich weiß grad gar nicht, ob das mit Shopfunktionalitäten geht. Jedenfalls habe ich gerade ein Script geschrieben, das du per Cronjob ansteuern kannst. Es kommt ins Hauptverzeichnis vom Shop.