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 beliebge 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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{% 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 Benutzer und Gruppen in DokuWiki verwenden
- In Zikula lassen sich mit Hilfe unterschiedlicher Authentifizierungsmethoden Nutzer auf verschiedenen Quellen einbinden und mischen. So kann man sich beispielsweise mit dem OAuth-Modul via Facebook, …
Ein Blick auf die Entwicklungen des News-Moduls
- Das News-Modul von Zikula blickt auf eine lange Historie zurück. Schon als ich vor etwa 20 Jahren das erste mal mit PostNuke in Berührung kam, war dort ein News-Modul an Bord. War die Funktionalität …
Zikula Aktualisierung 2.0.13 mit Sicherheitspatches von Symfony
- Der Zikula Core ist soeben in der Version 2.0.13 erschienen, da eine Reihe von sicherheitsbezogenen Änderungen in Symfony eingeflossen sind. Hier der Link zu den einzelnen Änderungen: Changelog für …
Spannende Neuerungen im Zikula Core
- In Zikula 3 werden endlich weitere hilfreiche Funktionen von Symfony verwendet. Zikula 2.x hat bereits auf Symfony 3.4.x aufgesetzt, aber aus Rücksicht auf die Abwärtskompatibilität noch nicht alle …
Neue Versionen von Content und MultiHook
- Seit gestern steht das Content-Modul in der Version 5.1.0 zum Download bereit. Zu den neuen Funktionen zählen neben kleineren Verbesserungen, etwa für den Inhaltstyp zur Integration von Informationen …