Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem im customelements_calltoaction.html5 (# wird falsch escaped)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem im customelements_calltoaction.html5 (# wird falsch escaped)

    Wir haben in Contao 5.3 ein Problem im PCT-Eclipse-Template customelements_calltoaction.html5 festgestellt:

    Wenn im Link-Feld ein Insert-Tag mit Fragment verwendet wird, z. B.
    Code:
    {{link_url::3151|urlattr}}#tab_123
    dann wird das # im generierten href doppelt escaped # sodass der Fragment-Anker nicht funktioniert. Ursache ist die Kombination aus |urlattr und zusätzlichem Attribut-Escaping im Template.

    Unser aktueller Fix:
    Wir haben das Problem pragmatisch gelöst, indem wir nach der Generierung des Links ($this->field('link')->html()) das fehlerhafte Escaping im href korrigieren.
    Code:
    <div class="ce_hyperlink">
    <?php
    $html = (string) $this->field('link')->html();
    $html = preg_replace('/(href="[^"]*?)(?:&amp;)?#35;/', '$1#', $html);
    echo $html;
    ?>
    </div>
    Im Standard-Contao-Hyperlink-Element wird das aber nochmal anders gemacht:
    • Insert-Tag auflösen
    • URL einmalig für href vorbereiten (nur & → &amp;, Fragment bleibt unverändert)
    • Fragment separat anhängen
    Damit wird doppeltes Escaping vermieden und die Ausgabe ist Core-konform.

    Danke, wenn ihr das Template nochmal anpasst.

  • #2
    Ah ok. Die entities. Das muss etwas unterschieden werden, weil sonst z.B. email Inserttags frei lesbar ausgegeben werden und nicht mehr verschleiert. -> hier gab es einige Anpassungen in den Versionen

    Ich schau mal nach einer neuen allgemeingültigen Lösung.

    Direkt im Template ist der bessere Weg über Contaos StringUtil Klasse.

    Code:
    <?= \Contao\StringUtil::decodeEntities( $this->field('link')->html() ); ?>
    http://www.premium-contao-themes.com

    Kommentar

    Lädt...
    X