Seite 1 von 1

[4.9.6] Meta-Tag Encoding

Verfasst: Fr 27. Feb 2015, 14:14
von Oldperl
Servus,

aus irgendwelchen Gründen greift in der Code-Generator Klasse (contenido/classes/code_generator/class.code.generator.standard.php) die Erstellung des Meta-Tags zum Encoding nicht richtig. Meine Vermutung ist/war, dass das entsprechende globale Array nicht korrekt ist. Ohne das aber nochmal gegen zu checken (ich habe auf die Schnelle nicht mal die Generierung gefunden) und da wir ja eh immer weniger auf globale Vars setzen wollten, habe ich die Stelle in der Methode _getBasicMetaTags() (ab Zeile 410) geändert und nutze dort nun die cApiLanguage-Klasse um benötigte Angaben direkt aus der DB zu holen.

Code: Alles auswählen

// add charset or content type meta tag        
        $cApiLanguage = new cApiLanguage($this->_lang);
        $encoding = $cApiLanguage->get('encoding');
        if (getEffectiveSetting('generator', 'html5', 'false') == 'true') {
            $metaTags[] = array(
                'charset' => $encoding
            );
        } elseif (getEffectiveSetting('generator', 'xhtml', 'false') == 'true') {
            $metaTags[] = array(
                'http-equiv' => 'Content-Type',
                'content' => 'application/xhtml+xml; charset=' . $encoding
            );
        } else {
            $metaTags[] = array(
                'http-equiv' => 'Content-Type',
                'content' => 'text/html; charset=' . $encoding
            );
        }
Mit dieser Änderung wird nun der Tag, entsprechend der Einstellungen bei den Sprachen, immer korrekt gesetzt.

Gruß aus Franken

Ortwin

Re: [4.9.6] Meta-Tag Encoding

Verfasst: Do 5. Mär 2015, 09:38
von Dodger77
DIe Änderung funktioniert natürlich. Es hätte aber wohl auch gereicht, den Frontend-Cookie zu löschen. :shock:

DIe globale Variable $encoding wird in der Session gespeichert, siehe:

https://git.contenido.org/projects/CON/ ... ontent.php

(Zeilen 102ff.)

Re: [4.9.6] Meta-Tag Encoding

Verfasst: Do 5. Mär 2015, 10:08
von Oldperl
Danke Ingo, das hab ich noch gar nicht gesehen :wink:
Da sieht man aber mal den Nachteil solcher Cookies als Cache. Eventuell wäre hier sowieso zu empfehlen das komplette Handling für die encoding-Var über die cRegistry umzusetzen, so hat man es dann zentral. Dabei sollte man aber eine Trennung von Frontend- und Backend-Encoding beachten.

Gruß aus Franken

Ortwin

Re: [4.9.6] Meta-Tag Encoding

Verfasst: Do 5. Mär 2015, 10:43
von Dodger77
Bis ich mich daran erinnert habe, hatte ich auch schon einige Zeit in der Encoding-Hölle verbracht. :wink:

Ich finde auch, dass das ungünstig ist. Man kann ja schlecht alle Nutzer auffordern, mal eben ihre Cookies zu löschen.

Und einfach wild alle Dateien im Verzeichnis zur Session-Speicherung zu löschen, könnte auf Shared-Hosting-Umgebungen Probleme bereiten. :twisted:

Vielleicht wäre so etwas ein Ansatz, falls das in der Session bleiben müsste:

http://stackoverflow.com/questions/5193 ... p-sessions