Unterschiedliche Startseiten je Domain oder Einstellung einbinden

in  Zikula Apps , , , ,

Unterschiedliche Startseiten je Domain oder Einstellung einbinden

Eine häufige Anforderung besteht darin, die Startseite eines Projektes individuell anzupassen. Zikula bietet zwar die Möglichkeit, eine Controller-Aktion sowie die zu übergebenden Argumente in der Grundkonfiguration einer Seite einzustellen, allerdings ist diese Funktionalität bislang doch eher eingeschränkt. Mit einigen Modulen, wie etwa Content, sind zwar unterschiedliche Inhalte je Sprache auf ein und derselben Seite möglich, aber auch das kann nicht alle Varianten abdecken. Also was für Möglichkeiten gibt es? 😕

Zum Glück kann man in Symfony ganz einfach beliebige Controller-Aktionen von einem Template aus aufrufen und diese somit einbinden 👷‍♂️ Der folgende Code zeigt exemplarisch, wie sich abhängig von beliebigen Bedingungen oder auch für verschiedene Domains unterschiedliche Module beziehungsweise Content-Seiten einstellen lassen. Es wird immer eine von drei verschiedenen Inhaltsseiten gezeigt; außer am Wochenende: denn samstags sollen die Newsartikel aufgelistet werden und am Sonntag wird die Sitemap von Content aufgerufen.

{% set weekDay = 'now'|date('N') %}
{% set startModule = weekDay == '6' ? 'MUNewsModule' : 'ZikulaContentModule' %}
{{ app.request.attributes.set('_zkBundle', startModule) }}
{{ app.request.attributes.set('_zkModule', startModule) }}
{% if weekDay == '6' %}
    {% render(controller(
        'MU\\NewsModule\\Controller\\MessageController::viewAction',
        {sort: '', sortdir: 'asc', pos: 1, num: 10}
    )) %}
{% elseif weekDay == '7' %}
    {{ render(controller(
        'Zikula\\ContentModule\\Controller\\PageController::sitemapAction'
    )) }}
{% else %}
    {% set startPage = 'meine-seite' %}
    {% if app.request.schemeAndHttpHost == 'https://seite1.de' %}
        {% set startPage = 'andere-seite' %}
    {% elseif app.request.schemeAndHttpHost == 'https://seite2.de' %}
        {% set startPage = 'dritte-seite' %}
    {% endif %}
    {{ render(controller(
        'Zikula\\ContentModule\\Controller\\PageController::displayAction',
        {slug: startPage}
    )) }}
{% endif %}

Wie man sieht, sind der Phantasie hier kaum Grenzen gesetzt. Wer sich für die Details interessiert, kann im entsprechenden Abschnitt der Symfony-Dokumentation weiterlesen.

Weitere Beiträge in Kategorie Zikula Apps

Symfony 6.2.7 korrigiert CSRF-Problem im SecurityBundle
- Am ersten Februar, also vor genau einem Monat, wurden mit Symfony 6.2.6 zwei Sicherheitsprobleme adressiert. Ein Patch im SecurityBundle hatte allerdings auch valide Use Cases gebrochen, wie zum …
Flexible Tabellenspalten im EasyAdminBundle
- Vor kurzer Zeit haben wir das EasyAdminBundle (EAB) in die Entwicklungsversion von Zikula 4 integriert um das alte Admin-Interface abzulösen. Seitdem beobachten wir natürlich stets, was sich bei …
Kommende Neuerungen in Symfony 6.2
- Gegenwärtig laufen die Arbeiten an der nächsten Symfony-Version 6.2. Wie immer gibt es regelmäßige Einblicke in die wichtigsten, zu erwartenden Features und Verbesserungen. Dieser Beitrag zeigt im …
Zikula 4 - Ansätze für ein leichtgewichtigeres User Management
- Im Rahmen der Schlankheitskur vom Zikula Core sind einige Altlasten bereits entfernt worden. Das Admin-Interface baut nun auf dem EasyAdminBundle auf. Ein größerer Knoten, den es noch zu entwirren …
Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle
- Im letzten Beitrag wurde unter anderem dargestellt, dass Zikula 4 nun das EasyAdminBundle (EAB) integriert um das alte Admin-Interface abzulösen. Zwischenzeitlich sind die Arbeiten daran etwas …