Umlaute in eigens entwickelten Plugins

Hallo Bei der Verwendung von Templates habe ich zwei Probleme mit Umlauten. 1. Problem: Statische Anzeige: Kommt ein Umlaut vor, so wird nur ein leeres Fenster angezeigt, außer die tlp-Datei wird im ANSI-Format gespeichert. Woran kann das liegen? 2, Bei der Verwendung eines „Ext.tree.TreePanel“ (wie in der suppliers.php) werden nur die Knoten angezeigt, welche keine Umlaute enthalten. Was müsste hier geändert werden?

Kannst du deine Probleme etwas konkreter beschreiben? Am besten mit konkretem Beispiel-Code

Hier der Code des Templates: [code]{extends file=“backend/index/parent.tpl”} {block name=“backend_index_body_inline”}{/block}[/code] Die beidem Ext.Button’s “Hinzufügen” und “Löschen” erzeugen des erste Problem Es existiert in der Datenbank ein Datensattz “Zubehör”, welcher nicht angezeigt wird (Alle anderen werden angezeigt) Der Controller hierfür ist auch eine eigene Entwicklung, braucht du auch diesen Code?

Ja, der komplette Code wäre super. Ggf. auch per PM. Mit welchem Code-Editor & Betriebssystem & FTP-Client arbeitest du denn? Welches Server-System? Art / Devirat? Das ist in jedem Fall kein Standardproblem - da unsere Default-Module ja genauso vorgehen - werden denn dort die Umlaute korrekt angezeigt? Bezüglich der Ajax-Daten, man muss / sollte ein utf8_encode auf beschreibende Inhalte ausführen, bevor diese zurückgegeben werden - wenn man das nicht macht, werden die Umlaute aber maximal falsch angezeigt - also das eine Zeile komplett fehlt, hatte ich bislang noch nicht. Fehlt diese auch direkt im Output der Ajax-Abfrage, oder wird diese nur nicht dargestellt?

Hi, die Templates müssen Latin1 (ISO 8859-1) formatiert werden. Wenn das nicht geht, reicht es auch wenn die Texte mit Htmlentities escapet werden. Und Sachen die mit Json formatiert werden, müssen vorher mit mit Utf8_encode auf UTF8 gebracht werden. Ansonten wird der Text aus dem Json-Stream entfernt. Beispiele: new Ext.Button ({ text: "Hinzufügen", handler: this.addGroup, scope:this }), new Ext.Button ({ text: 'Löschen', handler: this.deleteGroup, scope:this }) public function shopListAction() { $sql = " ( SELECT 0 as id, 'Global' as name ) UNION ( SELECT cm.id, CONCAT(cm.name, ' (', l.locale, ')') FROM s\_core\_multilanguage cm, s\_core\_locales l WHERE cm.locale = l.id ) ORDER BY id "; $rows = Shopware()-\>Db()-\>fetchAll($sql); foreach ($rows as &$row) { $row['name'] = utf8\_encode($row['name']); } echo json\_encode(array('data'=\>$rows, 'count'=\>count($rows))); } Viele Grüße Heiner

Alle Templates sind vom Original-Template geerbt. Es wurden die Dateien aus dem Modul „Documente“ als Vorlage verwendet. Lokales Testsystem: OS: Windows 7 32-Bit Server: Apache 2.2.11 (XAMPP 1.7.1) PHP Version: 5.2.9 Shopware: 3.5.2 Code-Editor: Dreamviewer CS5 11.0 Build 4964 Ich konnt folgenden POST abgreifen: [{"id":"1","text":"Fred","leaf":"1"},{"id":"6","text":"Speicherkarten 2GB","leaf":"1"},{"id":"16","text":"Bluetooth","leaf":"1"},{"id":"24","text":"Speicherkarten 4GB","leaf":"1"},{"id":"25","text":"Speicherkarten 8GB","leaf":"1"},{"id":"26","text":null,"leaf":"1"}] „text“:null" ist die Stell, wo „Zubehör“ in der DB steht. @Stefan Hamann, wie kann ich dir das Plugin per „PM“ schicken. Gibt es da eine Option im Forum?

Habe dir eine eMail geschickt :wink:

Hi, das bestätigt meine Vermutung. :wink: 1. Die Templates sind nicht Latin1 (ISO 8859-1) formatiert 2. Es fehlt der Utf8-Encode vor dem Json-Encode. VG Heiner

Der Fehler tritt auch in den Templates auf, welche vom offiziellen Shopware-Template erben.

Hi, was meinst du damit genau? Werden auch bein anderen (Shopware-)Modulen die Umlaute falsch angezeigt? Dass du von Shopware-Templates erbst, wäre nur relerant wenn dort die Umlaute auch falsch angezeigt werden. Ich sag das nur, weil in deinem Beispiel die Umlaute schon falsch angegeben sind: text: unescape("Hinzufügen"), title:'U¨bersicht', Außerdem zerstört dein Editor (Dreamviewer ) beim Speichern gerne mal die Templates. :frowning: Viele Grüße Heiner

Bei den Originalmodulen treten keine Fehler auf. Ich habe versucht mich an den Vorgaben zu halten. Das der Dreamviewer öfters mal Dateien zerstört kann ich leider bestätigen.

In allen anderen Modulen werden die Umlaute richtig angezeigt. Der Fehler tritt nur in dem selber entwickelten Plugins auf.

Hattest du meine eMail dazu gesehen? Also das kann im Endeffekt nur daran liegen, dass Dreamweaver die Dateien in einem falschen Modus zurück überträgt. Was passiert denn, wenn du das Template eines unserer Originalmodule veränderst und neu hochlädst? Das dürfte dann danach ja auch zerstört sein. In meiner Testumgebung, haben die Umlaute direkt gepasst. Am Plugin selbst liegt es also nicht

1 Like

Danke für die Mail so funktioniert es. Es kann auch an meinem Testsystem liegen, welches benutzt du?

Ich verwende unser VMWare-Image - das kannst du auch benutzen :wink: http://www.shopware.de/wiki/Downloads_cat_448.html Basis: Debian Squeezy

Ich muß mich hier auch noch mal einklinken. Habe bei dem einen oder anderen Plugin das Problem, das im Backend die Umlaute falsch dargestellt werden. Ich installiere das Plugin, und alle Daten, die ich in der Bootstrap.php unter ‘textaera’ bzw. ‘text’ eingegeben habe, werden richtig dargestellt. Dann aktiviere ich das Plugin, klicke auf speichern, nur werden jetzt die Texte im Frontend und im Backend verstümmelt. Alle Dateien sind ISO Latin 1. Ich verzweifel hier langsam. Wer kann mir hier helfen? In der .htaccess ist AddDefaultCharset auskommentiert. Liegt es am Server? Danke Frank

Die Kollation der Datenbank ist latin1_swedish_ci, das müßte doch passen, oder? Bitte um Hilfe. In der Datenbank steht es nach dem speichern im Backend auch falsch, aund wenn ich es dort ändere und speicher ist es wieder falsch. Grüße Frank

Arbeitest du auf der VM?

Nein, am Liveshop.

Du könntest dir mal mein Varianten-Eigenschaften Plugin runterladen - dort gibt es für die Speicherung von Umlauten in den Konfigurationsfeldern einen UTF8 - Fix - damit geht es ggf. auch in deinem Plugin!