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.
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.
Im Standard-Contao-Hyperlink-Element wird das aber nochmal anders gemacht:
Danke, wenn ihr das Template nochmal anpasst.
Wenn im Link-Feld ein Insert-Tag mit Fragment verwendet wird, z. B.
Code:
{{link_url::3151|urlattr}}#tab_123
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="[^"]*?)(?:&)?#35;/', '$1#', $html);
echo $html;
?>
</div>
- Insert-Tag auflösen
- URL einmalig für href vorbereiten (nur & → &, Fragment bleibt unverändert)
- Fragment separat anhängen
Danke, wenn ihr das Template nochmal anpasst.

Kommentar