Barama Posted October 10, 2014 Share Posted October 10, 2014 Ich benutze das COD(Cash on delivery / Nachnahme) - Modul. Leider kann man bei diesem Modul nicht die Versandkosten eingeben. Ich habe das so gelöst, dass ich einen Versanddienst "Nachnahme" eingerichtet habe, da man beim Versand die Versandkosten mit angeben kann. Das heißt der Kunde wählt beim Versand "Nachnahme" und dann als Bezahlmethode ebenfalls Nachname(COD-Modul). Nun wählen aber einige Kunden als Versand "Normalen DHL-Versand" und als Bezahlmethode "Nachnahme". Unter /MEINSHOPROOT/modules/cashondelivery/views/templates/hook payment.tpl wollte ich nun eine einfache if-Abfrage a la {if $cart->id_carrier == 1}HTML{/if} einbauen, sodass die Bezahlmethode "Nachnahme" nur zur Auswahl steht wenn der Kunde als Versandmethode "Nachnahme" gewählt hat. Doch irgendwie übernimmt Prestashop meine Änderungen in der payment.tpl-Datei nicht. Egal was ich reinschreibe. Woran kann das liegen. Am Cache? Weiß jemand vielleicht auch wie man das mit der Nachnahme besser lösen kann? Link to comment Share on other sites More sharing options...
Luca01 Posted October 10, 2014 Share Posted October 10, 2014 Hallo Barama, ich hatte eine solche Funktion auch früher mal. Ich hatte in der php-Datei angesetzt, wo das payment.tpl aufgerufen wird. Dort habe ich in die Funktion eine if Bedingung eingebaut, die je nachdem welche id_carrier übergeben wurde, das Bezahlverfahren angezeigt hat oder nicht. Aktuell benutzen wir ein Modul mit Gebühren-Funktion. Darum haben wir nur noch einen Versanddienst und brauchen an dieser Stelle keine Änderung mehr. Ich finde leider den Code nicht mehr so schnell aber die Funktion müßte ungefähr so aussehen: public function hookPayment($params) { if (!$this->active) return ; global $smarty; /** * ANFANG Blendet COD Modul bei Carrier-id 1 aus */ if ($id_carrier==1) return; /** * ENDE Blendet COD Modul bei Carrier-id 1 aus */ // Check if cart has product download foreach ($params['cart']->getProducts() AS $product) { $pd = ProductDownload::getIdFromIdProduct((int)($product['id_product'])); if ($pd AND Validate::isUnsignedInt($pd)) return false; } $smarty->assign(array( 'this_path' => $this->_path, //keep for retro compat 'this_path_cod' => $this->_path, 'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/' )); return $this->display(__FILE__, 'payment.tpl'); } Viel Erfolg Link to comment Share on other sites More sharing options...
Jamgön Posted October 12, 2014 Share Posted October 12, 2014 Hallo Luca01, habe die if-Abfrage (bei mir Id = 7) in die Datei cashondelivery.php eingebunden, doch leider ohne Erfolg. Auch wenn ich in EU-Legal den Rechtssicherer Bestellprozess deaktiviere wird die Abfrage nicht ausgeführt. Die Eintragungen habe ich sowohl unter "public function hookPayment($params)" als auch unter "public function hookDisplayPaymentEU($params)" vorgenommen. Es scheint als ob die id_carrier nicht im Modul verfügbar ist (Modul COD) oder aber der Variablenname lautet anders. Gruß Michael PS 1.6.0.9 und EU-Legal 1.02 Link to comment Share on other sites More sharing options...
Luca01 Posted October 12, 2014 Share Posted October 12, 2014 Hallo Jamgön, Es scheint als ob die id_carrier nicht im Modul verfügbar ist (Modul COD) oder aber der Variablenname lautet anders. Ich habe mir das Modul mal angesehen und ja die Variable muß erst zugewiesen werden. Ich müßte jetzt auch anfangen zu stochern, wie ich sie am besten bekommen könnte. (int)(string)$this->context->cart->id_carrier; wäre vielleicht eine Möglichkeit oder (int)Tools::getValue('id_carrier'); Man müßte mal sehen was da für Werte übergeben werden Viele Grüße Link to comment Share on other sites More sharing options...
Jamgön Posted October 12, 2014 Share Posted October 12, 2014 Hallo Jamgön, Ich habe mir das Modul mal angesehen und ja die Variable muß erst zugewiesen werden. Ich müßte jetzt auch anfangen zu stochern, wie ich sie am besten bekommen könnte. (int)(string)$this->context->cart->id_carrier; Hallo Luca01, mit if ($this->context->cart->id_carrier !== 7) return; erreiche ich genau das was ich möchte. Den Code habe ich die cashondelivery.php unterhalb von public function hookDisplayPaymentEU($params) eingefügt. Id 7 steht für Abholung im Geschäft und somit wird COD nur angezeigt wenn man vorher unter Versandart Selbstabholung gewählt hat. OCD ist textlich so geändert, dass dort jetzt "Zahlungen per Barzahlung bzw. EC-Karte" steht. Ich danke Dir. Gruß Michael PS 1.6.0.9 EU-Legal 1.02 1 Link to comment Share on other sites More sharing options...
Barama Posted October 13, 2014 Author Share Posted October 13, 2014 Danke für alle Antworten. Mit dem Tipp von Jamgön funktioniert es jetzt bei mir. Link to comment Share on other sites More sharing options...
Alex PSV1.6 Posted October 13, 2014 Share Posted October 13, 2014 (edited) Hat sich erledigt, Danke Edited October 13, 2014 by alm-store.de (see edit history) Link to comment Share on other sites More sharing options...
Barama Posted October 13, 2014 Author Share Posted October 13, 2014 public function hookDisplayPaymentEU($params) { if (!$this->active) return ; global $smarty; Wird zu: public function hookDisplayPaymentEU($params) { if (!$this->active) return ; if ($this->context->cart->id_carrier !== 7) return; global $smarty; Der id_carrier-Wert ist bei dir vielleicht anders. Link to comment Share on other sites More sharing options...
Alex PSV1.6 Posted October 13, 2014 Share Posted October 13, 2014 Danke, ich korrigier es dann mal bei mir LG Alex Link to comment Share on other sites More sharing options...
Alex PSV1.6 Posted October 13, 2014 Share Posted October 13, 2014 Hätte noch eine andere Frage: Ich nutze die 5 Step Kaufabwicklung und würde gerne wissen zu welchem step welche tpl Datei gehört? 1: 2: 3: 4: 5: LG Alex Link to comment Share on other sites More sharing options...
AndyGerhard Posted October 15, 2014 Share Posted October 15, 2014 Wo gibt es bei Dir Versandarten? Ich seh bei mir nur Versanddienste? Ausserdem braucht man bei Nachnahme ja auch die Berechnung der Versandkosten. Wie soll das zusammen funktionieren wenn man das als Versandart eingibt? Id 7 steht für Abholung im Geschäft und somit wird COD nur angezeigt wenn man vorher unter Versandart Selbstabholung gewählt hat. OCD ist textlich so geändert, dass dort jetzt "Zahlungen per Barzahlung bzw. EC-Karte" steht. 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