contao / core

Contao 3 → see contao/contao for Contao 4
GNU Lesser General Public License v3.0
491 stars 213 forks source link

Probleme mit Insert-Tags in <title>, URL, etc. #2853

Closed NinaG closed 12 years ago

NinaG commented 12 years ago

Es gibt mittlerweile tolle Insert-Tags mit denen man Wörter z. B. als fremdsprachig oder Abkürzung markieren kann, wenn der Text-Editor nicht zur Verfügung steht (beispielsweise in Seitennamen -> Navigation). Leider gibt es aber mit der Umsetzung noch ein paar Bugs die den tatsächlichen Einsatz dieser Insert-Tags behindern.

Beispielhafte Insert-Tags um die es hier geht: {{lang::en}}english words{{lang}} {{abbr::zum Beispiel}}z. B.{{abbr}} {{acronym::Elektronische Datenverarbeitung}}EDV{{acronym}}

Problem 1: Die Insert-Tags im <title> Wenn man diese Insert-Tags beispielsweise im Seitennamen oder Seitentitel einsetzt, damit sie in der Navigation und in der Breadcrumb korrekt dargestellt werden, gibt es leider ein Problem mit dem <title>

Dort steht dann schnell mal:

<title><abbr title="Abkürzungserklärung">Abkürzung</abbr> - Projektname</title>

Der HTML-Befehl innerhalb von <title> ... </title> wird dabei jedoch leider nicht aufgelöst, sondern genau so sichtbar ausgegeben, was eine normale Verhaltensweise von <title> ist, aber natürlich doof aussieht und auch für SEO mies ist.

Lösungsvorschlag: Diese Insert-Tags sollten im <title> ignoriert werden, so dass nur der Originalbegriff für <title> generiert wird, aber nicht das restliche HTML.

Problem 2: Die Insert-Tags im Alias Die Insert-Tags werden auch im Alias mit ausgegeben, so dass man dann beispielsweise sowas im Alias stehen hat: abbrerklaerungabkuerzungabbr.html

Lösungsvorschlag: Diese Insert-Tags sollten im Alias ignoriert werden, so dass dort nur der Originalbegriff ausgegeben wird: abkuerzung.html

Problem 3: Die Insert-Tags in News-/Event/etc.-Titeln Wenn man diese Insert-Tags beispielsweise für den News-Titel definiert, kommt Contao durcheinander, weil es beim Link versucht die HTML-Umsetzung im Link-title auszugeben.

Das sieht dann so aus:

<h2><a href="blog/items/.....html" title="Den Artikel lesen: &lt;abbr title=" abkürzungserklärung="">Abkürzung"&gt;<abbr title="Abkürzungserklärung">Abkürzung</abbr></a></h2>

Lösungsvorschlag: Diese Insert-Tags sollten im title des Links ignoriert werden, so dass es dann so aussieht:

<h2><a href="blog/items/.....html" title="Den Artikel lesen: Abkürzung"><abbr title="Abkürzungserklärung">Abkürzung</abbr></a></h2>

Soweit ich das sehen kann, sind das alle Orte an denen es zu einer Fehlausgabe kommt. Wenn diese behoben sind ist es dann endlich möglich, dass man diese für die Barrierefreiheit hilfreichen Insert-Tags korrekt einsetzt :)

Related issues: #2889

--- Originally created on February 7th, 2011, at 03:41pm (ID 2853)

leofeyer commented 12 years ago

Behoben in 576a9992e8fe676472f5d7488810fbb3. Die Änderungen waren jedoch wesentlich umfangreicher, als nur die drei oben genannten Stellen :(

--- Originally created on February 24th, 2011, at 01:37pm

Toflar commented 12 years ago

Die uns aber eine nette neue Funktion strip_insert_tags() bringt :)

--- Originally created on February 24th, 2011, at 01:48pm

BugBuster1701 commented 12 years ago

Hier ist wohl das "t" verrutscht? (functions.php):

function specialchars($strString, $blnSriptInsertTags=false)
{
    if ($blnSriptInsertTags)
        $strString = strip_insert_tags($strString);
    }

besser:

function specialchars($strString, $blnStripInsertTags=false)
{
    if ($blnStripInsertTags)
        $strString = strip_insert_tags($strString);
    }

--- Originally created on March 3rd, 2011, at 12:49am

leofeyer commented 12 years ago

--- Originally completed on March 4th, 2011, at 02:45pm

fritzmg commented 9 years ago

This change introduced inconsistent behaviour in a multi-domain setup under Contao 3.2.20. Assume the following site structure:

domain1.com
- Start
  - Lorem
    - {{inserttag}} Ipsum
    - {{inserttag}} Dolor
    - {{inserttag}} Sit
domain2.com
- Start

Each of "Lorem"'s subpages have an insert tag in their page name (title field). Assume that there is a Navigation Module with the reference Page set to "Lorem". This Navigation Module is included in the page layout of both domains.

When you open domain1.com in the frontend, the navigation module will show

However, when you open domain2.com in the frontend, the navigation module will show

This happens due to the following code:

[1] Other page types are not affected. They always have the insert tag in the title of the page in the navigation module.

Contao 3.3 and up handles this differently now, but I would like to see this addressed again for Contao 3.2 too if possible. Why not just remove the insert tags for the <title> tag? e.g. directly in fe_page.