dauerfrager Posted September 15, 2021 Share Posted September 15, 2021 Habe gerade das invoice.tpl für die Erzeugung der Rechnung geändert und habe dabei ein (gestalterisches) Problem. Auf der Rechnung gibt es die Adresse des Shops nur unten im Footer. Ich hätte es gerne auch im Header (oder nur im Header). Leider funktioniert es nicht, die Felder aus dem Footer zu übernehmen resp. nur teilweise. Das folgende Feld funktioniert: {$shop_details|escape:'html':'UTF-8'} und spuckt mir die HRB Nummer aus - soweit so gut. Das folgende Feld funktioniert definitiv nicht (kein Schreibfehler, kopiert aus dem Footer mit Copy&Paste): {$shop_address|escape:'html':'UTF-8'} und spuckt bei mir im Header nichts aus. Ich kann jetzt behelfsweise die Adresse hart in das Formular eintippen (was auch funktioniert) schöner wäre es aber die Angabe aus dem Shop System zu übernehmen, auch weil man es nicht vergisst wenn sich was ändert. Im Footer funktioniert es ja. Offenbar fehlt irgendwo der Kontext, mir ist aber nicht klar wo genau. Möglicherweise ein Hook aber ich habe nichts dazu gefunden (wobei ich damit aber auch nicht besonders gut vertraut bin). Mercy für hilfreiche Hinweise. Link to comment Share on other sites More sharing options...
rictools Posted September 15, 2021 Share Posted September 15, 2021 (edited) Die Variablen werden zunächst in einer php-Datei definiert (bei 1.6 im Ordner "classes": $this->smarty->assign(array(... ), möglicherweise werden da für Header und Footer nicht alle oder unterschiedliche Variablen festgelegt. Edited September 15, 2021 by rictools (see edit history) 1 Link to comment Share on other sites More sharing options...
dauerfrager Posted September 16, 2021 Author Share Posted September 16, 2021 Danke. Habe heute mal geschaut. Die Änderungen sind zu machen einerseits im Template, hier den Header neben Logo um Adresse und rechtliche Infos (wie Registernummer, UST ID, etc) ergänzt. pdf/header.tpl <td style="width: 30%"> {if $logo_path} <img src="{$logo_path}"/> {/if} </td> <td style="width: 2%"></td> <td style="width: 30%; font-size: 8pt;">{$shop_address}<br/>{$shop_email}</td> <td style="width: 2%"></td> <td style="width: 16%; font-size: 8pt;"> Register:<br/>{$shop_details} </td> <td style="width: 20%; text-align: right;"> <table style="width: 100%"> <tr> <td style="font-weight: bold; font-size: 10pt; color: #444; width: 100%;">{if isset($header)}{$header|escape:'html':'UTF-8'|upper}{/if}</td> </tr> <tr> <td style="font-size: 10pt; color: #9E9F9E">{$date|escape:'html':'UTF-8'}</td> </tr> <tr> <td style="font-size: 10pt; color: #9E9F9E">{$title|escape:'html':'UTF-8'}</td> </tr> </table> </td> Kommt recht nice rüber. Dazu den php Controller angeändert: classes/pdf/HTMLTemplate.php Funktion assignCommonHeaderData() public function assignCommonHeaderData() { $this->setShopId(); $id_shop = (int) $this->shop->id; $shop_name = Configuration::get('PS_SHOP_NAME', null, null, $id_shop); $shop_address_obj = $this->shop->getAddress(); $shop_address = AddressFormat::generateAddress($shop_address_obj, [], '<br />', ' '); $logo = $this->getLogo(); $width = 0; $height = 0; if (!empty($logo)) { list($width, $height) = getimagesize(_PS_IMG_DIR_ . $logo); } // Limit the height of the logo for the PDF render $maximum_height = 100; if ($height > $maximum_height) { $ratio = $maximum_height / $height; $height *= $ratio; $width *= $ratio; } $this->smarty->assign([ 'logo_path' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_ . $logo, 'img_ps_dir' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_, 'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'), 'date' => $this->date, 'title' => $this->title, 'shop_name' => $shop_name, 'shop_address' => $shop_address, 'shop_email' => Configuration::get('PS_SHOP_EMAIL', null, null, (int) $id_shop), 'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int) $id_shop), 'width_logo' => $width, 'height_logo' => $height, ]); } Mir ist klar, dass die Änderungen durch Updates überschrieben werden können, aber automatische Updates habe ich bei Prestashop als Erstes abgestellt, nachdem meine custom.css durch eine leere custom.css überschrieben wurde. Wie sinnvoll man das auch immer finden mag. Gibt aber noch mehr (EU-rechtskonforme) Änderungen oder Erweiterungen bei mir. Vielleicht kann das ja jemand brauchen. Link to comment Share on other sites More sharing options...
dauerfrager Posted September 16, 2021 Author Share Posted September 16, 2021 (edited) Was mir noch nicht ganz gefällt, ist die Tatsache, dass die Adresse immer mit "Germany" als Land ausgegeben wird. Man hat ja unter Kontakt im Shop auch nur so die Möglichkeit das Land auszuwählen. Auf deutschen Rechnungen wäre als Land "Deutschland" eigentlich passender. Falls dazu noch jemand eine praktikable Idee hat ... steht übrigens auch Germany unter deutscher Liefer- oder Rechnungsadresse auf deutscher Rechnung. Ja ich weiss, ist Jammern auf hohem Niveau. 😃 Edited September 16, 2021 by dauerfrager (see edit history) Link to comment Share on other sites More sharing options...
rictools Posted September 16, 2021 Share Posted September 16, 2021 Seltsam daß bei dir "Germany" nicht übersetzt wird. Du kannst eine replace-Anweisung einfügen. Ich blende bei Adressen im eigenen Land das Land komplett aus. Link to comment Share on other sites More sharing options...
dauerfrager Posted September 17, 2021 Author Share Posted September 17, 2021 Germany steht schon so in der Auswahlliste des Landes im Backoffice für den Shop Kontakt. Übersetzung habe ich jetzt nicht explizit eingebaut (hättest Du ein Beispiel für die controller.php ?). Aber zumindest wird im Standard Rechnungsformular auch immer die Adresse mit Land angezeigt und auch nicht übersetzt. An der Stelle habe ich definitiv nichts geändert. Auch wenn das Rechnungsformular deutsch ist. Link to comment Share on other sites More sharing options...
dauerfrager Posted September 17, 2021 Author Share Posted September 17, 2021 (edited) Ich weiss jetzt gar nicht, wie man da jetzt eine (Teil)Übersetzung machen würde. Ist Prestashop 1.7.7.6 $shop_address_obj = $this->shop->getAddress(); $shop_address = AddressFormat::generateAddress($shop_address_obj, [], '<br />', ' '); Edited September 17, 2021 by dauerfrager (see edit history) Link to comment Share on other sites More sharing options...
rictools Posted September 17, 2021 Share Posted September 17, 2021 Ich habe ja noch 1.6 und weiß nicht was in 1.7 normal ist aber ich denke da ist etwas nicht vollständig übersetzt (sind denn alle Länder in englischer Sprache?). Hast du mal in der Übersetzungsfunktion im BackOffice geschaut? Link to comment Share on other sites More sharing options...
dauerfrager Posted October 29, 2021 Author Share Posted October 29, 2021 (edited) Habs mir in Verbindung mit dem S_p_r_a_c_h_e_n Problem bei den Rechnungen nochmal angeschaut. Ja man kann das Land übersetzen, stand auf EN und DE Germany. Jetzt zeigt es Deutschland. Danke für den Hinweis. Habe auch eine Lösung für Rechnungen auf Deutsch und Englisch aber da ich das böse Wort verwendet habe, wird es (noch ?) nicht angezeigt. Edited October 29, 2021 by dauerfrager (see edit history) 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