Liste der Anhänge anzeigen (Anzahl: 1)
Catalog Manager – Wechsel zwischen den Sprachen in der Detailansicht
Ich hab mit dem Catalog Manager ein Backend Modul namens "Projekte" erstellt.
Dann hab ich im Modul zwei Eingabefelder angelegt:
- project_description_de
- project_description_en
Das Modul wird bei einer zweisprachigen Contao-Seite verwendet (DE/EN).
Im Template (ctlg_view_master_projects.html5) gebe ich nun immer (je nachdem in welchem Seitenbaum ich mich befinde) die richtige Projekt-Beschreibung aus:
Code:
{{iflng::de}}
<?= $this->project_description_de ?>
{{iflng::en}}
<?= $this->project_description_en ?>
{{iflng}}
... der Kunde will das so, d.h. die Eingabefelder für DE- und EN-Text sollen direkt untereinander erscheinen.
So wie hier zu sehen: Anhang 25540
Das funktioniert soweit.
Doch nun zu meinem Problem:
Wenn ich mich in der Detailansicht eines Projekts befinde:
www.domain.at/de/projekt-details/projekt-titel
... und dann mit dem Modul "terminal42/contao-changelanguage" zur EN-Version der Seite wechsle, komme ich hier hin:
www.domain.at/en/project-detail
... es wir die englsiche Projekt-Detail-Seite ohne Inhalt angezeigt – da das Alias in der URL (projekt-titel) nicht mitgegeben wurde.
Kann ich diesen Alias beim Sprachwechsel irgendwie mitgeben?
So dass der Wechsel zu EN dann hier hin führt:
www.domain.at/en/project-detail/projekt-titel
Dass der Alias eines Projekts immer in der gleichen Sprache ist, ist OK.
Danke für eure Hilfe und Expertise!
lg Georg
Liste der Anhänge anzeigen (Anzahl: 1)
Habs jetzt mal geschafft den Hook zu aktivieren.
Und zwar so:
Code:
<?php
// src/EventListener/ChangelanguageNavigation.php
namespace App\EventListener;
/**
* @Hook("changelanguageNavigation")
*/
class ChangelanguageNavigation
{
public function __invoke(\Terminal42\ChangeLanguage\Event\ChangelanguageNavigationEvent $event)
{
// The target root page for current event
$targetRoot = $event->getNavigationItem()->getRootPage();
// The target language (en or de)
$language = $targetRoot->rootLanguage;
if($GLOBALS['TL_LANGUAGE'] == $language):
dump($event->getUrlParameterBag());
// diese Ausgabe ist bei allen Versuchen leer
// d.h. von der Projekt-Detailseite-DE werden beim Wechsel zur Projekt-Detailseite-EN keine Parameter mitgegeben
// falls ich es schaffe dass der Alias der vorigen Seite als Parameter mitgegeben wird, dann würde ich in etwa so fortfahren:
// den Alias der vorigen Seite abfragen
// $alias = $event->getUrlParameterBag()->getUrlAttribute('items');
// Pass the new alias to ChangeLanguage
// $event->getUrlParameterBag()->setUrlAttribute('items', $alias);
endif;
}
}
Den Hook kann ich zwar nun verwenden, aber wie man in den Kommentaren im Code sieht scheitere ich an meinem eigentlichen Vorhaben ;)
Hier nochmal mein Urpsrungsproblem:
Ich möchte ja beim Wechsel von:
company.at/de/projekte/projekt-alias
... zu:
company.at/en/projects/projekt-alias
... keine leere Seite vorfinden.
Nun muss ich beim Wechsel zur englischen Detailansicht-Seite irgendwie den Alias oder die ID vom aktuellen Projekt mitgeben.
Das krieg ich nicht hin.
Egal was ich hier eingebe:
Anhang 25545
... egal ob "ctlg_projekte", "id", "auto_item", "items" oder "projekte" – nichts kommt auf der englischen Detailseite an :rolleyes:
Der UrlParameterBag ist dort immer leer:
Code:
Terminal42\ChangeLanguage\Navigation\UrlParameterBag {#1029 ?
-attributes: []
-query: []
}