+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Aktivieren eines System-Plugins zerschießt File-Codierung

  1. #1
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    157
    Bedankte sich
    23
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard Aktivieren eines System-Plugins zerschießt File-Codierung

    Hallo,

    mal wieder etwas aus dem Bereich Kuriositäten:

    Ich habe ein einfaches selbst geschriebenes System-Plugin:

    PHP-Code:
    <?php defined'_JEXEC' ) or die( 'Restricted access' ); 
    global 
    $mainframe;
    $mainframe->registerEvent'onAfterDispatch''myfunc' );

    function 
    myfunc( &$row, &$params )  {
    }
    ?>
    Wenn ich dieses Plugin mit einem XML-Manifest installiere, dann ändert sich die File-Codierung:

    mit deaktivierten Plugin:

    Kodierung: UTF-8
    Content-Type: text/html; charset=utf-8


    mit aktiven Plugin

    Kodierung: ISO-8859-1
    Content-Type: text/html; charset=utf-8

    Dies hat dann zur Folge, dass Umlaute zerschossen werden.

    Irgendwelche Ideen?

    Tia, J.
    Geändert von joomlix (10.06.2011 um 16:04 Uhr)

  2. #2
    Wohnt hier Avatar von Joomla-Hilfe
    Registriert seit
    12.08.2010
    Beiträge
    4.157
    Bedankte sich
    109
    Erhielt 1.258 Danksagungen
    in 984 Beiträgen

    Standard

    Wie sind die Dateien dieses Plugins codiert?
    Danke?

    Stell dir vor, es geht, aber keiner kriegt's hin.
    In vielen Fällen bleibt der Hirntod jahrelang unbemerkt. (Nuhr)

  3. #3
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    157
    Bedankte sich
    23
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Utf-8 ............

  4. #4
    Hat hier eine Zweitwohnung Avatar von Matrikular
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    39
    Beiträge
    1.440
    Bedankte sich
    219
    Erhielt 593 Danksagungen
    in 441 Beiträgen

    Standard

    Generell sollte man in der Form kein Plugin (mehr) schreiben, da es sich um Legacy Code handelt. Abgesehen davon: fehlt die spitze Klammer nur hier durch 'nen Copy & Paste Fehler, oder sieht dein Code wirklich so aus (?php defined ...) ?
    Joomla! Development? Hire me! | Teach Yourself Programming in Ten Years

  5. #5
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    157
    Bedankte sich
    23
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Ok, ich der Sache auf der Spur. Sobald myfunc etwas ausgibt, wird dies als aller erstes im Dokument ausgegeben, damit ist die Kodierung die des Webservers und nicht mehr die der Seitendefinition.

    Was ich eigentlich erreichen möchte: Es soll eine Zeile an erster Stelle nach <body> eingefügt werden. Eigentlich müsste dann ja in der index.php des Templates ein Event ausgelöst werden. Wird aber nicht. Heißt das, ich kann mir das Plugin sparen und muss myfunc in der index.php des Templates fest eincodieren?

  6. #6
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    157
    Bedankte sich
    23
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Zitat Zitat von Matrikular Beitrag anzeigen
    Generell sollte man in der Form kein Plugin (mehr) schreiben, da es sich um Legacy Code handelt. Abgesehen davon: fehlt die spitze Klammer nur hier durch 'nen Copy & Paste Fehler, oder sieht dein Code wirklich so aus (?php defined ...) ?
    Stimmt, aber wir sind ja noch bei J1.5.
    Stmimt auch, C&P-Fehler meine Maus hat nen Wackelkontakt in der linken Maustaste. Ist korrigiert.

  7. #7
    Hat hier eine Zweitwohnung Avatar von Matrikular
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    39
    Beiträge
    1.440
    Bedankte sich
    219
    Erhielt 593 Danksagungen
    in 441 Beiträgen

    Standard

    auch bei 1.5 war / ist der code legacy und wurde hauptsaechlich fuer rueckwaertskompatibilitaet zu php4 verwendet.
    PHP-Code:
    <?php
    defined
    ('_JEXEC') or die;
    jimport('joomla.plugin.plugin');
    class 
    plgGroupPluginName extends JPlugin
    {
        public function 
    __construct(&$subject$config)
        {
            
    parent::__construct($subject$config);
        }

        public function <
    event>()
        {
        }
    }
    Nachtrag: Benutze für dein Vorhaben das onAfterRender Event. Dort kannst du nach dem Body-Tag suchen und dahinter deinen Code einfügen.

    Das könnte ungefähr so aussehen:

    PHP-Code:
    $myString 'MyString';
    $body JResponse::getBody();
    $body str_replace ('<body>''<body>' $myString$body);
    JResponse::setBody($body); 
    Geändert von Matrikular (10.06.2011 um 16:43 Uhr)
    Joomla! Development? Hire me! | Teach Yourself Programming in Ten Years

  8. Erhielt Danksagungen von:


  9. #8
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    157
    Bedankte sich
    23
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Herzlichen Dank für den Tipp mit JReponse.

    Prinzipiell wird jetzt zwar valider XHTML-Code erzeugt, jedoch hat das alles mein Problem mit der Zeichencodierung nicht löscht.
    Daher hier ein Hack mit iconv:

    PHP-Code:
    $body iconv("UTF-8""ISO-8859-1"$body); 

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein