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

Zikula Framework in Version 3 veröffentlicht
- Heute haben wir das finale Release von Zikula Core 3.0.0 veröffentlicht. Es basiert auf Symfony 5.1 sowie Twig 3 und verwendet unter anderem Bootstrap 4 und Font Awesome 5. Einen grundlegenden …
Zikula 3 erscheint als Release Candidate
- Heute wurde der erste Release Candidate für Zikula Core 3.0.0 veröffentlicht. Einen grundlegenden Überblick über die wichtigsten Änderungen sowie die weiterführenden Links zur Dokumentation und zu den …
Zikula Core Dokumentation in neuem Gewand
- Schon seit einiger Zeit werden im GitHub-Repository des Zikula Core die Dinge dokumentiert, die zusätzlich zu den Handbüchern von Symfony, Doctrine, Twig, Bootstrap usw. zu beachten sind. Nun wurde …
Weitere neue Features in Zikula Core 3
- Nachdem wir bereits in einigen Artikeln zu Zikula 3 die Änderungen unter der Haube, umfangreiche Modernisierungen, Möglichkeiten für dynamische Formulare und Neuerungen rund um Übersetzungen …
Zikula 3 bringt zahlreiche Neuerungen rund um Übersetzungen
- Nachdem zwischen den Jahren der komplette Unterbau von Zikula 3 auf Stand gebracht worden ist, hat sich der nächste Sprint dem Übersetzungssystem gewidmet. In diesem Beitrag wird kurz dargestellt, …