Beiträge getaggt mit realurl

Bug? Falsche Artikelauswahl auf der News-Seite

Ok, ich versuche mal mein Setup zu beschreiben.

Kategorien sehen ungefähr so aus:

  • Kategorie Eins
    • Subkategorie EinsEins
    • Subkategorie EinsZwei
  • Kategorie Zwe
    • Subkategorie ZweiEins
    • Subkategorie ZweiZwei
  • Kategorie Drei

Dann sind da natürlich News-Beiträge, die immer einer Hauptkategorie und (falls diese Unterkategorien hat) Unterkategorien zugewiesen sind. Pro Hauptkategorie gibt es jeweils eine Ausgabe-Seite, die in der Hauptspalte ein Plugin enthält, wo eingestellt ist, dass nur Beiträge einer Kategorie angezeigt werden. So weit passt alles.

Und auf einmal werden auf der Seite in Plugin, das eigentlich nur Beiträge der Kategorie „Kategorie Eins“ und Unterkategorien anzeigen soll, auch Beiträge der Kategorie Zwei angezeigt. Ich habe alles überprüft: Ist die Zuordnung im Artikel richtig gesetzt? Ist das Plugin auf der Seite richtig konfiguriert? Sieht alles gut aus. Hab schon angefangen an meinem Verstand zu zweifeln und an einen mysteriösen Bug in News geglaubt.

Lösung: Damit nur Artikel einer bestimmten Kategorie ausgegeben werden, muss im News-Plugin in der Kategorieauswahl „Show items with selected categories“ ausgewählt werden. Wenn man keine weiteren Einstellungen vornimmt, dann kann damit durch URL Parameter die Kategorieauswahl überschrieben werden. Wenn man RealURL verwendet, merkt man das nicht so schnell. Im RealURL Cache für diese Seite war nämlich ungefähr folgende URL eingetragen: seite/?tx_news_pi1[overwriteDemand][categories]=0 und die auch noch an erster Stelle. d.h. Wenn man die Seite aufruft, dann wird die sprechende URL so umgewandelt, dass die Kategorieauswahl aufgehoben wird.

Damit das nicht wieder passiert, kann man im News-Plugin das Überschreiben von Kategorien per URL deaktivieren: im Tab „Additional“ unter „Disable override demand“.

TYPO3 Multisite / Multidomain und Verlinkung untereinander

Ein Kunde hat eine Website laufen in Deutsch unter der Beispieldomain www.beispiel.de. Er möchte gerne eine englische Version dieser Seite unter einer anderen Domain laufen www.beispiel.eu. Die englischen Inhalte entsprechen nicht immer den deutschen, manche Seiten sind direkt übersetzt, manche Seiten existieren nicht. Und so hatte ich folgende Idee: Ich habe dem Seiten-Datensatz ein neues Feld eingefügt (tx_related_page), in das die Seite der anderen Sprache ausgewählt werden kann. Somit kann im Header hinter einem Flaggensymbol der Link zu der Seite in der anderen Sprache aus dem anderen Seitenbaum versteckt werden. Falls in dem Seiten-Datensatz kein Link hinterlegt ist, wird einfach der Link zur Root-Seite des anderen Seitenbaumes generiert. Mal anschaulich:
– ROOT DE
— Unterseite 1 (Gegenseite Subpage 1)
— Unterseite 2 (keine Gegenseite)
– ROOT EN
— Subpage 1 (Gegenseite Unterseite 1)
— Subpage 2 (keine Gegenseite)
Auf ROOT DE ist der Domain Record für www.beispiel.de und auf ROOT EN ist der Domain Record für www.beispiel.eu.
Auf Unterseite 1 wird die englische Flagge auf Subpage 1 verlinkt, Subpage verlinkt auf Unterseite 1. Da Unterseite 2 keine Gegenseite hat, wird ein Link zu ROOT EN generiert. Und von Subpage 2 ein Link zu ROOT DE.

Den Link in TypoScript zu erzeugen funktioniert so:

20 = IMAGE
20.file = {$assets}Public/Images/{$flagIcon}
20.stdWrap.typolink.parameter.data = field:tx_related_page
20.stdWrap.if.isTrue.data = page:tx_related_page
 
30 = IMAGE
30.file = {$assets}Public/Images/{$flagIcon}
30.stdWrap.typolink.parameter = {$oppositeRootPid}
30.stdWrap.if.isFalse.data = page:tx_related_page

Ohne RealURL hat das prima funktioniert. Dann hatte ich RealURL aktiviert und auf einmal bekam ich nur Links auf die Root-Seite des anderen Seitenbaums. Lange hab ich gesucht, was an der Konfiguration nicht stimmt, ich erspare euch das alles. Das ist die funktionierende Lösung:

Im Setup des Templates muss folgendes ergänzt werden, damit Links zwischen Domains generiert werden:
config.typolinkEnableLinksAcrossDomains = 1

Das nicht vergessen:
config.tx_realurl_enable = 1

In der RealURL Konfiguration müssen die ID der Root-Seiten für die Domains angegeben werden. Ich hatte es zuerst so wie im Beispiel im RealURL FAQ. Das klappt nicht! Aber folgende Konfiguration funktioniert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = [
    '_DEFAULT' => [...]
];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.beispiel.de'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.beispiel.de']['pagePath']['rootpage_id'] = 1;
 
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.beispiel.eu'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.beispiel.eu']['pagePath']['rootpage_id'] = 29;