Content Staging mit Page Builder im Hyvä-Theme: zeitgesteuerte Kampagnen zuverlässig ausliefern
AI generated
Hyvä
phtml
Hyvä Theme
Content Staging mit Page Builder
zeitgesteuerte Kampagnen im Hyvä-Theme zuverlässig ausliefern

Ein Sale-Banner, der pünktlich um Mitternacht erscheint, und eine Kampagnenseite, die am Montagmorgen automatisch wieder verschwindet, klingen einfach, bis Full Page Cache und Edge-Caching mitspielen müssen. Content-Staging-Kampagnen mit Page Builder lösen das im Hyvä-Theme sauber, wenn Vorschau-Modus und Cache-Invalidierung von Anfang an mitgedacht werden.

12 Min. Lesezeit Page Builder Staging-Kampagnen

1. Was Content Staging leistet und wofür es im Hyvä-Theme genutzt wird

Content Staging bündelt Änderungen an CMS-Seiten, CMS-Blöcken oder Kategorieinhalten zu einer Kampagne mit einem festgelegten Start- und optional einem Endzeitpunkt, statt jede Änderung sofort live zu schalten. Damit lässt sich ein Sale-Banner bereits Tage im Voraus fertig gestalten und für den exakten Kampagnenstart einplanen, ohne dass am eigentlichen Starttermin noch jemand manuell eingreifen muss.

Im Hyvä-Theme rendert gestagter Inhalt über exakt dieselben Page-Builder-Content-Type-Templates wie live geschalteter Inhalt, denn die Staging-Funktionalität arbeitet unterhalb der Template-Schicht und tauscht lediglich aus, welche Version eines Contents zu einem gegebenen Zeitpunkt als aktuell gilt. Für die Theme-Entwicklung bedeutet das: Kein Content Type muss speziell staging-fähig gemacht werden, aber Vorschau und Cache-Verhalten verdienen gezielte Aufmerksamkeit.

2. Staging-Kampagnen für zeitgesteuerte Content-Updates anlegen

Eine Kampagne entsteht im Admin über die Aktion Schedule New Update auf einer CMS-Seite oder einem CMS-Block und fasst alle Änderungen, die bis zum geplanten Zeitpunkt vorgenommen werden, zu einem atomaren Update zusammen. Erst wenn der Cron-Job zum geplanten Zeitpunkt läuft, werden die gestagten Änderungen in die aktive Version übernommen, bis dahin bleibt der Live-Inhalt für alle Besucher unverändert sichtbar.

Für ein typisches Wochenend-Sale eignet sich genau dieses Muster: Der Sale-Banner auf der Startseite, die angepasste Kategorielandingpage und ein zusätzlicher CMS-Block mit den Aktionsbedingungen werden gemeinsam einer einzigen Kampagne zugeordnet, sodass am Freitagabend alle drei Elemente synchron erscheinen, ohne dass ein Entwickler zu dieser Uhrzeit noch aktiv sein muss.

3. Vorschau-Modus im Hyvä-Frontend technisch testen

Der Vorschau-Modus lädt eine gestagte Version über eine spezielle Vorschau-URL innerhalb des Admin-Panels, meist eingebettet in ein iFrame, und markiert die Anfrage intern so, dass Magento die gestagte statt der aktiven Version ausliefert. Für das Hyvä-Theme bedeutet das, dass sämtliche Alpine-Komponenten, die auf Page-Builder-Content-Types aufsetzen, etwa Slider oder Countdown-Banner, auch innerhalb dieses iFrame-Kontexts korrekt initialisieren müssen, denn ein fehlerhaft geladenes Skript fällt in der Vorschau sofort auf.

Ein häufig übersehener Punkt ist, dass Tracking- und Analytics-Skripte während der Vorschau nicht ausgelöst werden sollten, da sonst jeder Testaufruf eines Redakteurs als echter Seitenbesuch gezählt wird. Eine einfache serverseitige Prüfung, ob die aktuelle Anfrage eine Staging-Vorschau ist, erlaubt es, solche Skripte gezielt zu unterdrücken, ohne die eigentliche Content-Darstellung zu beeinflussen.


<?php
/** @var \Magento\Framework\View\Element\Template $block */
/** @var \Magento\Staging\Model\VersionManager $versionManager */
$versionManager = $block->getData('version_manager');
$isPreview = $versionManager !== null && $versionManager->isPreviewVersion();
?>
<?php if (!$isPreview): ?>
  <script>
    window.dataLayer = window.dataLayer || [];
    dataLayer.push({ event: 'page_view' });
  </script>
  <?php $hyvaCsp->registerInlineScript(); ?>
<?php endif; ?>

4. Zusammenspiel von Content Staging und Full Page Cache bei zeitversetzten Änderungen

Die eigentliche Herausforderung beginnt erst am Kampagnenstart selbst: Der Full Page Cache hält die zuletzt gerenderte, noch nicht gestagte Version einer Seite unter Umständen deutlich über den geplanten Startzeitpunkt hinaus vor, wenn niemand die betroffenen Cache-Einträge aktiv invalidiert. Der dafür zuständige Cron-Job staging_update_cache_context merged die gestagte Version zum geplanten Zeitpunkt in den aktiven Content und stößt die passende Cache-Invalidierung für die betroffenen Entitäten an.

Entscheidend ist dabei das Intervall, mit dem dieser Cron-Job läuft: Bei einer Standardkonfiguration von wenigen Minuten kann eine Kampagne, die exakt um Mitternacht starten soll, tatsächlich erst einige Minuten später sichtbar werden. Für zeitkritische Kampagnen, etwa einen Flash Sale mit einer auf die Minute festgelegten Startzeit, lohnt sich eine Verkürzung dieses Intervalls oder ein gezielter, manuell getriggerter Cache-Flush kurz nach dem geplanten Start.

5. CDN- und Edge-Caching bei Kampagnenstart berücksichtigen

Selbst wenn Magentos eigener Full Page Cache korrekt invalidiert, kann ein vorgeschaltetes CDN oder ein Varnish-Layer die alte Seite noch für die Dauer seiner eigenen TTL ausliefern, da diese Systeme von der internen Cache-Invalidierung durch Magento typischerweise nichts wissen. Für Seiten, die regelmäßig Ziel von Staging-Kampagnen sind, wie die Startseite oder zentrale Kategorielandingpages, lohnt sich eine deutlich kürzere Edge-TTL als für unveränderliche Inhalte wie Produktdetailseiten.

Alternativ lässt sich ein gezielter Purge-Aufruf an das CDN direkt an das Staging-Update-Event koppeln, sodass die betroffene URL exakt zum Kampagnenstart aus dem Edge-Cache entfernt wird, statt auf den Ablauf einer festen TTL zu warten. Das hält die TTL für den Rest des Shops hoch, während zeitkritische Kampagnenseiten trotzdem pünktlich aktualisiert werden.


<?php
declare(strict_types=1);

namespace Mironsoft\StagingCache\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\HTTP\Client\Curl;

/**
 * Purged betroffene URLs am Edge-Cache, sobald eine Staging-Kampagne
 * live geschaltet wurde, statt auf die CDN-TTL zu warten.
 */
class PurgeCdnOnCampaignActivate implements ObserverInterface
{
    /**
     * @param Curl $curl
     */
    public function __construct(private readonly Curl $curl)
    {
    }

    /**
     * Löst den Purge-Request beim CDN für die betroffenen URLs aus.
     *
     * @param Observer $observer
     * @return void
     */
    public function execute(Observer $observer): void
    {
        $urls = (array) $observer->getEvent()->getData('affected_urls');
        foreach ($urls as $url) {
            $this->curl->setHeaders(['X-Purge-Method' => 'single']);
            $this->curl->post($url, []);
        }
    }
}

6. Page Builder Content Types innerhalb einer Staging-Kampagne bearbeiten

Redakteure bearbeiten Page-Builder-Content-Types innerhalb einer Kampagne mit demselben Drag-and-Drop-Editor wie bei direkten Änderungen, und jeder im Theme registrierte Custom Content Type steht dort automatisch zur Verfügung, ohne zusätzliche Registrierung für den Staging-Kontext. Wichtig wird es bei Custom Content Types, die zur Laufzeit eigene Logik ausführen, etwa ein Countdown-Banner, der die verbleibende Zeit bis zu einem Ereignis berechnet.

Ein solcher Countdown darf sich in der Vorschau nicht auf das tatsächliche Serverdatum verlassen, sondern muss das im Staging-Kontext hinterlegte Vorschau-Datum verwenden, sonst zeigt die Vorschau für den Redakteur einen völlig falschen Countdown-Stand an. Der ViewModel des Content Types sollte deshalb konsequent über eine injizierte Datumsquelle arbeiten, die im Vorschau-Fall das gestagte Datum liefert und im Live-Betrieb das reale Serverdatum.


<?php
declare(strict_types=1);

namespace Mironsoft\CountdownBanner\ViewModel;

use Magento\Framework\View\Element\Block\ArgumentInterface;
use Magento\Staging\Model\VersionManager;
use Magento\Framework\Stdlib\DateTime\DateTime;

/**
 * Liefert das für Countdown-Berechnungen relevante Datum, unter
 * Berücksichtigung des Staging-Vorschau-Kontexts.
 */
class CountdownDateProvider implements ArgumentInterface
{
    /**
     * @param VersionManager $versionManager
     * @param DateTime $dateTime
     */
    public function __construct(
        private readonly VersionManager $versionManager,
        private readonly DateTime $dateTime,
    ) {
    }

    /**
     * Gibt das aktuell relevante Datum als Unix-Timestamp zurück.
     *
     * @return int
     */
    public function getReferenceTimestamp(): int
    {
        if ($this->versionManager->isPreviewVersion()) {
            return (int) $this->versionManager->getVersion()->getData('created_at');
        }
        return $this->dateTime->gmtTimestamp();
    }
}

7. Rollback bei fehlerhaften Kampagnen und Konfliktbehandlung

Solange eine Kampagne noch nicht live geschaltet wurde, lässt sie sich im Admin problemlos verschieben oder ganz löschen, ohne dass der Live-Content jemals betroffen war. Nach dem Merge in die aktive Version gibt es dagegen keinen einfachen Undo-Button mehr, ein Rollback bedeutet in der Praxis, eine neue Kampagne anzulegen, die den ursprünglichen Zustand wiederherstellt, weshalb sich ein Snapshot des Vorzustands vor größeren Kampagnen immer auszahlt.

Überlappen sich zwei Kampagnen auf derselben Entität, etwa weil ein Redakteur versehentlich zwei Sale-Kampagnen mit sich überschneidenden Zeiträumen anlegt, löst Magento den Konflikt anhand von Priorität und Zeitpunkt der Erstellung auf, was für Beteiligte selten intuitiv nachvollziehbar ist. Vor umsatzstarken Phasen wie einem Black-Friday-Wochenende lohnt sich deshalb ein bewusster Test überlappender Kampagnen auf einer Staging-Umgebung, um solche Überraschungen vorab auszuschließen.

8. Praxisbeispiel: Zeitgesteuerte Sale-Kampagne für ein Wochenende

Eine typische Wochenend-Kampagne startet freitags um achtzehn Uhr und endet sonntags um dreiundzwanzig Uhr neunundfünfzig, mit einem Startseiten-Banner, einer angepassten Kategorielandingpage und reduzierter Edge-TTL für genau diese beiden Seiten. Die Vorschau wird bereits am Mittwoch mit dem Marketing-Team abgenommen, während die technische Seite parallel prüft, ob der Cache-Purge-Mechanismus für den geplanten Startzeitpunkt korrekt konfiguriert ist.

Während des eigentlichen Kampagnenstarts lohnt sich eine kurze aktive Beobachtung: ein Blick ins Cron-Log, ob der Staging-Update-Job pünktlich gelaufen ist, und ein Blick auf die Cache-Hit-Rate, um sicherzustellen, dass Besucher tatsächlich die neue Version sehen. Für den Fall, dass der geplante Job sich verzögert, hilft ein vorbereiteter, manueller Cache-Flush-Befehl, um den Startzeitpunkt notfalls von Hand nachzuziehen, statt tatenlos auf den nächsten Cron-Lauf zu warten.

9. Checkliste für zuverlässiges Content Staging im Hyvä-Theme

Content Staging entfaltet seinen Wert vor allem dann, wenn Vorschau, Cache-Invalidierung und Edge-Caching als zusammenhängendes System betrachtet werden, statt jeden Teilbereich isoliert zu betrachten. Ein Redaktionsteam, das eine Kampagne sauber vorbereiten kann, aber am Starttermin von einem trägen CDN ausgebremst wird, erlebt das Feature am Ende trotzdem als unzuverlässig, auch wenn Magento selbst korrekt funktioniert hat.

Die folgende Übersicht fasst die wichtigsten Prüfpunkte für ein zeitkritisches Kampagnen-Setup zusammen, damit vor dem nächsten Kampagnenstart nichts Grundlegendes übersehen wird.

Prüfpunkt Wann prüfen Verantwortlich Konsequenz bei Versäumnis
Kampagne in Vorschau vollständig getestet Mehrere Tage vor Go-Live Redaktion + Entwicklung Fehlerhafte Inhalte werden live sichtbar
Cron-Intervall für Staging-Update passt zur Zeitkritikalität Vor jedem zeitkritischen Start Entwicklung Verzögerte Sichtbarkeit nach geplantem Start
Edge-TTL für betroffene Seiten reduziert oder Purge konfiguriert Vor Kampagnenstart Entwicklung/DevOps Alte Inhalte bleiben trotz Magento-Update sichtbar
Tracking-Skripte in der Vorschau unterdrückt Bei Einrichtung neuer Content Types Entwicklung Verfälschte Analytics-Daten durch Redakteurstests
Überlappende Kampagnen auf Staging getestet Vor umsatzstarken Phasen Redaktion + Entwicklung Unvorhersehbare Konfliktauflösung im Live-Betrieb
Manueller Cache-Flush-Ablauf dokumentiert Einmalig, vor der ersten zeitkritischen Kampagne DevOps Keine schnelle Reaktion bei verzögertem Cron-Lauf

Mironsoft

Hyvä-Theme-Entwicklung und Luma-Migration

Noch auf Luma unterwegs oder ein Hyvä-Theme, das nicht rund läuft?

Wir entwickeln Hyvä-Themes für Magento von Grund auf oder migrieren bestehende Luma-Shops sauber, mit Tailwind CSS, Alpine.js und ohne unnötiges JavaScript-Gepäck.

Luma-zu-Hyvä-Migration

Bestehenden Shop strukturiert und ohne Funktionsverlust auf Hyvä umstellen.

Custom-Theme-Entwicklung

Individuelles Hyvä-Theme nach Design-Vorgaben von Grund auf umsetzen.

Performance-Optimierung

Core Web Vitals und Ladezeiten im Hyvä-Frontend gezielt verbessern.

10. Zusammenfassung

Content Staging mit Page Builder im Hyvä-Theme

Kernidee

Content-Staging-Kampagnen bündeln zeitgesteuerte Änderungen, ohne dass jemand zum Starttermin manuell eingreifen muss.

Vorschau

Vorschau-Modus läuft im selben Template-System, verlangt aber eigene Behandlung von Tracking-Skripten und Datumslogik.

Cache-Kopplung

Full Page Cache und Edge-Caching müssen aktiv an den Kampagnenstart gekoppelt werden, sonst verzögert sich die Sichtbarkeit.

Praxis

Zeitkritische Kampagnen verlangen kurze Cron-Intervalle, gezielte Purges und eine aktive Beobachtung während des Go-Live-Fensters.

11. FAQ: Content Staging mit Page Builder im Hyvä-Theme

1Was unterscheidet eine Staging-Kampagne von einer direkten Änderung an einer CMS-Seite?
Eine direkte Änderung wird sofort beim Speichern live sichtbar, während eine Staging-Kampagne die Änderung erst zu einem festgelegten Zeitpunkt aktiviert. Bis dahin bleibt der bisherige Inhalt für alle Besucher unverändert bestehen.
2Müssen Page-Builder-Content-Types im Theme speziell für Staging vorbereitet werden?
Nein, Staging arbeitet unterhalb der Template-Schicht und liefert einfach die zum jeweiligen Zeitpunkt gültige Version eines Contents aus. Besondere Aufmerksamkeit verdienen nur Content Types mit eigener Laufzeitlogik, etwa Countdown-Banner, die das Vorschau-Datum berücksichtigen müssen.
3Warum sollte man Tracking-Skripte während der Vorschau unterdrücken?
Ohne diese Prüfung zählt jeder Testaufruf eines Redakteurs als echter Seitenbesuch in den Analytics-Daten, was die späteren Kampagnenauswertungen verfälscht. Eine einfache Prüfung auf den Vorschau-Kontext löst dieses Problem zuverlässig.
4Warum reicht die Invalidierung des Full Page Cache allein oft nicht aus?
Ein vorgeschaltetes CDN oder ein Varnish-Layer kennt die interne Cache-Invalidierung von Magento typischerweise nicht und liefert die alte Version bis zum Ablauf seiner eigenen TTL weiter aus. Für zeitkritische Seiten braucht es deshalb einen gezielten Edge-Purge oder eine kurze Edge-TTL.
5Wie zeitgenau lässt sich der Start einer Kampagne tatsächlich steuern?
Das hängt vom Intervall des zuständigen Cron-Jobs ab, der die gestagte Version zur aktiven Version macht. Bei Standardkonfiguration können mehrere Minuten zwischen geplantem und tatsächlichem Startzeitpunkt liegen, was sich bei Bedarf durch ein kürzeres Cron-Intervall verbessern lässt.
6Wie geht man mit einem Countdown-Banner um, der in der Vorschau falsch angezeigt wird?
Der ViewModel des Countdown-Banners sollte das Referenzdatum nicht direkt vom Server beziehen, sondern über eine Abstraktion, die im Vorschau-Kontext das gestagte Datum liefert. So zeigt die Vorschau für Redakteure denselben Countdown-Stand, der auch am geplanten Starttermin live zu sehen wäre.
7Was passiert, wenn zwei Kampagnen dieselbe CMS-Seite zu überlappenden Zeiträumen ändern?
Magento löst den Konflikt anhand von Priorität und Erstellungszeitpunkt auf, was für Beteiligte selten sofort nachvollziehbar ist. Ein bewusster Test überlappender Kampagnen auf einer Staging-Umgebung vor umsatzstarken Phasen verhindert unangenehme Überraschungen.
8Lässt sich eine bereits live geschaltete Kampagne einfach rückgängig machen?
Nicht direkt, denn nach dem Merge in die aktive Version gibt es keinen einfachen Undo-Mechanismus mehr. Ein Rollback bedeutet in der Praxis, eine neue Kampagne anzulegen, die den vorherigen Zustand wiederherstellt, weshalb sich ein Snapshot vor größeren Kampagnen lohnt.
9Warum lohnt sich eine aktive Beobachtung während des Kampagnenstarts?
Auch bei sorgfältiger Vorbereitung kann ein verzögerter Cron-Lauf oder ein träges CDN dazu führen, dass Inhalte nicht pünktlich sichtbar werden. Ein Blick ins Cron-Log und auf die Cache-Hit-Rate während des Go-Live-Fensters erlaubt es, notfalls manuell einzugreifen.
10Für welche Art von Inhalten lohnt sich Content Staging im Hyvä-Theme besonders?
Vor allem für regelmäßig wiederkehrende, zeitlich klar begrenzte Kampagnen wie Wochenend-Sales, saisonale Landingpages oder befristete Aktionsbanner. Für einmalige, dauerhafte Content-Änderungen ohne festen Zeitplan bringt der zusätzliche Kampagnen-Overhead dagegen wenig Mehrwert.