rss feed: CDATA in CDATA und script tag

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • gingebaker
    Contao-Nutzer
    • 20.10.2010
    • 22

    #1

    rss feed: CDATA in CDATA und script tag

    Hallo miteinander

    Nachdem ich einen RSS Feed mit dem Nachrichten Modul erstellt hatte, war dieser mit dem Browser Safari nicht zu öffnen. Firefox öffnete ihn ohne Probleme.

    Nach einem W3C Check des Feeds konnte ich folgende Ursache lokalisieren:
    HTML-Code:
    <description><![CDATA[<p>Recently I.... blabla ....
    <script><![CDATA[ ... script ...]]></script>
    </p>]]></description>
    Also ein CDATA Tag im CDATA Tag welcher den Feed nicht mehr validieren lässt...

    Der "innere" CDATA Tag stammt aus der Videobox Erweiterung. Genaugenommen aus dem Template. Ich hab mir einstweilen beholfen indem ich die CDATA Tags aus dem Videobox-Template entfernt habe.

    Weiters bleibt jetzt noch eine Empfehlung auf der W3C Seite zurück. Das script tags im rss auch nichts zu suchen hätten... (siehe Anhang)

    Sollte man in der Feed Klasse im Core speziell solche Tags rausfiltern?
    Feed.php (Zeile 138)
    PHP-Code:
    $xml .= '      <description><![CDATA[' . preg_replace('/[\n\r]+/', ' ', $objItem->description) . ']]></description>' . "\n"; 
    
    zusätzlich erweitern mit:
    PHP-Code:
    str_replace(array("<![CDATA[","]]>"),array("",""),$objItem->description);
    preg_replace('/<script.*<\/script>/','',$objItem->description); 
    
    Da diese Tags sowieso in einem Feed nichts zu suchen haben würd ich die Stelle am besten finden.
    Nur mal ein Vorschlag? Vielleicht gibt auchnoch nen anderen Weg, den ich gerade übersehe.

    mfg, tom
    Angehängte Dateien
  • gingebaker
    Contao-Nutzer
    • 20.10.2010
    • 22

    #2
    ...hat dieses Problem sonst noch niemand nachvollziehen können? Oder liegt es an einer falschen Einstellung meinerseite?

    mfg
    Tom

    Kommentar

    • gingebaker
      Contao-Nutzer
      • 20.10.2010
      • 22

      #3
      kann ich für sowas ein ticket erstellen?

      mfg
      tom

      Kommentar

      • Toflar
        Contao-Urgestein
        • 15.06.2009
        • 4476

        #4
        Siehe News.php ab Zeile 140:
        PHP-Code:
        // Prepare the description
        $strDescription = ($arrArchive['source'] == 'source_text') ? $objArticle->text : $objArticle->teaser;
        $strDescription = $this->replaceInsertTags($strDescription);
        $objItem->description = $this->convertRelativeUrls($strDescription, $strLink); 
        
        Es wird also der Text oder Teaser vom Newseintrag genommen. Jetzt erklär Du mir mal, wie da ein <script>-Tag da rein kommt?
        Contao Core-Entwickler @terminal42 gmbh
        Wir sind Contao Premium-Partner!
        Für Individuallösungen kannst du uns gerne kontaktieren.
        PS: Heute schon getrakked?

        Kommentar

        • gingebaker
          Contao-Nutzer
          • 20.10.2010
          • 22

          #5
          Hallo.
          Danke für die Rückmeldung.

          Ich hab die RSS Ausgabe so eingestellt das ich nicht den Teasertext verwenden will sondern die kompletten Beiträge. Siehe ersten Screenshot...

          Dadurch gibt:
          PHP-Code:
          $strDescription = ($arrArchive['source'] == 'source_text') ? $objArticle->text : $objArticle->teaser; 
          
          den Inhalt der Spalte "text" des jeweiligen Nachrichteneintrages aus der Tabelle tl_news zurück. In der Spalte Text ist auch der Videobox Inserttag bzw. könnten dort auch andere Script Tags sein wenn man z.b. das <script> Tag für den WYSIWYG Editor erlaubt.
          siehe 2ten Screenshot...

          übersehe ich immer noch was?

          mfg
          Tom
          Angehängte Dateien

          Kommentar

          • Toflar
            Contao-Urgestein
            • 15.06.2009
            • 4476

            #6
            Ach so, Du hast da den InsertTag verwendet

            Naja, unglückliche Situation Weil eigentlich gehört da kein <script> mit rein, aber der InsertTag generiert den natürlich, weil man via InsertTag keinen Zugriff mehr auf die $GLOBALS hat, um dort JS-Files zu adden (bzw. Zugriff schon, aber da ist's schon zu spät)...von daher ist das weder ein Videobox-Bug, noch ein Contao-Bug, noch ein Anwenderfehler. Es ist einfach nix von allem - dumm gelaufen

            Aber beheben könnte man es wirklich indem Contao <script> filtern würde bei RSS-Feeds. Aber da wünsch ich Dir heute schon viel Spass, das Leo zu erklären
            Contao Core-Entwickler @terminal42 gmbh
            Wir sind Contao Premium-Partner!
            Für Individuallösungen kannst du uns gerne kontaktieren.
            PS: Heute schon getrakked?

            Kommentar

            • gingebaker
              Contao-Nutzer
              • 20.10.2010
              • 22

              #7
              okay, ja dann bin ich schon mal beruhigt das ich da nichts übersehen habe. Jedenfalls danke für die Unterstützung und vielleicht schreib ich mal ein Ticket, schauen was passiert...

              Und danke für das gelungene Videobox Modul!

              mfg
              tom

              Kommentar

              Lädt...