Skip to content

Konfigurationsreferenz

Dieses Plugin hat keine System-Config-Einstellungsseite. Es gibt keine config.xml und daher auch keine Erweiterungen > Meine Erweiterungen > Konfigurieren-Seite für Ultimate Popups. Die gesamte Konfiguration liegt auf einzelnen Popup-Datensätzen, die unter Inhalte > Ultimate Popups in der Administration verwaltet werden.


Entity: ssd_popup

Die zentrale Entity. Eine Zeile = ein Popup.

SpalteDAL-FeldTypPflichtBeschreibung
ididUUIDJaPrimärschlüssel.
version_idversionIdUUIDJaShopware-Versionsschlüssel (in Produktion immer live).
activeactiveBooleanGibt an, ob das Popup aktiviert ist. Standard: false. Inaktive Popups werden nie angezeigt.
namenameString (255)JaInterne Bezeichnung, nur in der Admin-Liste sichtbar.
cms_page_idcmsPageIdUUIDJaFK auf cms_page.id — das Desktop-CMS-Layout, das im Modal angezeigt wird.
cms_page_version_idcmsPageVersionIdUUIDJaVersion der verknüpften CMS-Seite.
mobile_cms_page_idmobileCmsPageIdUUIDOptionales FK auf cms_page.id für Smartphone-Viewports (XS, SM). Fällt auf cms_page_id zurück, wenn NULL.
mobile_cms_page_version_idmobileCmsPageVersionIdUUIDVersion der mobilen CMS-Seite.
tablet_cms_page_idtabletCmsPageIdUUIDOptionales FK auf cms_page.id für Tablet-Viewports (MD). Fällt auf cms_page_id zurück, wenn NULL.
tablet_cms_page_version_idtabletCmsPageVersionIdUUIDVersion der Tablet-CMS-Seite.
display_frequencydisplayFrequencyStringWie oft das Popup demselben Browser angezeigt wird. Standard: always. Siehe Anzeigehäufigkeit-Enum. Nicht gerätespezifisch.
modal_sizemodalSizeStringBootstrap-Modal-Größenklasse für Desktop. Siehe Modalgröße-Enum. Gerätespezifisch.
vertical_alignverticalAlignString (20)Vertikale Position für Desktop. Siehe Vertikale-Ausrichtung-Enum. Gerätespezifisch.
hide_headerhideHeaderBooleanDesktop-Header ausblenden. Blendet den Modal-Header aus; positioniert den Schließen-Button als Overlay. Standard: false. Gerätespezifisch.
light_close_buttonlightCloseButtonBooleanZeigt das Schließen-Symbol (×) in Weiß, damit es auf dunklem Popup-Hintergrund sichtbar bleibt. Gerätespezifisch. Standard: false.
display_triggerdisplayTriggerStringAuslöser für Desktop. Standard: immediate. Siehe Anzeigeauslöser-Enum. Gerätespezifisch.
display_delaydisplayDelayInteger (unsigned)Desktop-Verzögerung in Sekunden vor dem Öffnen (Auslöser immediate) und Wartezeit als No-Hover-Fallback für exit_intent. NULL = keine Verzögerung (Standard 30 s für den Exit-Intent-Fallback). Gerätespezifisch.
custom_csscustomCssLongTextDesktop-eigenes CSS, das für dieses Popup injiziert wird. Die Zeichenfolge </style> wird bei der Ausgabe entfernt. Gerätespezifisch.
required_consent_cookiesrequiredConsentCookiesJSON-ArrayDesktop-Liste von Cookie-Namen, die der Besucher (im Cookie-Banner der Storefront) akzeptieren muss, bevor das Popup angezeigt wird. NULL/leer = unabhängig von der Einwilligung anzeigen. Gerätespezifisch.
targeting_modetargetingModeStringSeiteneinschränkungsstrategie. NULL = alle Seiten. Siehe Zielmodus-Enum.
target_routestargetRoutesJSON-ArrayArray von Routen-Schlüsseln. Verwendet, wenn targeting_mode = 'page_restriction'. Siehe Zielrouten-Schlüssel.
custom_urlscustomUrlsJSON-ArrayArray von relativen URL-Mustern. Verwendet, wenn targeting_mode = 'custom_url'. Unterstützt *-Wildcard.
custom_fieldscustomFieldsJSONShopware Custom-Fields-Erweiterungspunkt.
created_atcreatedAtDateTimeWird automatisch beim Erstellen gesetzt.
updated_atupdatedAtDateTimeWird automatisch beim Aktualisieren gesetzt.

Per-Viewport-Override-Spalten

Neun Einstellungen sind pro Gerät konfigurierbar. Die obige Basis-Spalte enthält den Desktop-Wert; jede hat zusätzlich nullable tablet_*- und mobile_*-Override-Spalten. NULL in einer Override-Spalte bedeutet Desktop-Wert übernehmen — dies ist der gesperrte Zustand (er wird nie aus Leerheit abgeleitet, weshalb custom_css das Flag AllowEmptyString trägt, damit ein explizit leerer Override erhalten bleibt). Die Auflösung ist ein flaches Coalesce: effectiveTablet = tablet ?? desktop, effectiveMobile = mobile ?? desktop (keine Tablet→Mobil-Kaskade).

FeldDesktop (Basis)Tablet-OverrideMobil-Override
CMS Seitecms_page_id (+ Version)tablet_cms_page_idmobile_cms_page_id
Modalgrößemodal_sizetablet_modal_sizemobile_modal_size
Vertikale Ausrichtungvertical_aligntablet_vertical_alignmobile_vertical_align
Header ausblendenhide_headertablet_hide_headermobile_hide_header
Helles Schließen-Symbollight_close_buttontablet_light_close_buttonmobile_light_close_button
Anzeigeauslöserdisplay_triggertablet_display_triggermobile_display_trigger
Verzögerungdisplay_delaytablet_display_delaymobile_display_delay
Eigenes CSScustom_csstablet_custom_cssmobile_custom_css
Erforderliche Cookie-Einwilligungrequired_consent_cookiestablet_required_consent_cookiesmobile_required_consent_cookies

PopupEntity::getViewportConfig() gibt die aufgelöste { desktop, tablet, mobile }-Matrix zurück, die die Storefront an das JS-Plugin ausliefert. PHP löst nur die Vererbung auf; das JS wählt das aktive Gerät anhand des --sw-current-breakpoint des Themes und wendet die Werte dieses Geräts an (mit erneuter Anwendung bei Breakpoint-Wechsel).

Assoziationen auf ssd_popup

AssoziationTypZiel-EntityPivot-Tabelle
rulesMany-to-manyrulessd_popup_rule
salesChannelsMany-to-manysales_channelssd_popup_sales_channel
categoriesMany-to-manycategoryssd_popup_category
productsMany-to-manyproductssd_popup_product
cmsPageMany-to-onecms_page
mobileCmsPageMany-to-onecms_page
tabletCmsPageMany-to-onecms_page

Pivot-Tabellen

ssd_popup_rule

Verknüpft ein Popup mit Shopware-Rule-Builder-Regeln (UND-Logik — alle angehängten Regeln müssen zutreffen).

SpalteTypBeschreibung
popup_idBINARY(16)FK auf ssd_popup.id
ssd_popup_version_idBINARY(16)FK auf ssd_popup.version_id
rule_idBINARY(16)FK auf rule.id

ssd_popup_sales_channel

Verknüpft ein Popup mit Verkaufskanälen. Leer = auf allen Kanälen anzeigen.

SpalteTypBeschreibung
popup_idBINARY(16)FK auf ssd_popup.id
ssd_popup_version_idBINARY(16)FK auf ssd_popup.version_id
sales_channel_idBINARY(16)FK auf sales_channel.id

ssd_popup_category

Verknüpft ein Popup mit Kategorien. Wird nur geprüft, wenn target_routes 'category' enthält.

SpalteTypBeschreibung
popup_idBINARY(16)FK auf ssd_popup.id
ssd_popup_version_idBINARY(16)FK auf ssd_popup.version_id
category_idBINARY(16)FK auf category.id
category_version_idBINARY(16)FK auf category.version_id

ssd_popup_product

Verknüpft ein Popup mit Produkten. Wird nur geprüft, wenn target_routes 'product' enthält.

SpalteTypBeschreibung
popup_idBINARY(16)FK auf ssd_popup.id
ssd_popup_version_idBINARY(16)FK auf ssd_popup.version_id
product_idBINARY(16)FK auf product.id
product_version_idBINARY(16)FK auf product.version_id

Enums

Modalgröße-Enum

Werte für die Spalte modal_size.

WertBezeichnungBootstrap-Klasse
modal-smKleinmodal-sm
nullStandard (Desktop-Basis)(keine)
modal-mdStandard (Tablet/Mobil-Override)(keine) — Sentinel für „expliziter Standard", damit der Override sich von NULL = vererben unterscheidet
modal-lgGroßmodal-lg
modal-xlExtra Großmodal-xl
modal-fullscreenVollbildmodal-fullscreen

Vertikale-Ausrichtung-Enum

Werte für die Spalte vertical_align.

WertBezeichnungVerhalten
null(keine)Bootstrap-Standard — ausgerichtet nach oben.
topObenWie Standard.
centerMitteCSS-Flexbox align-items: center auf .modal-dialog.
bottomUntenCSS-Flexbox align-items: flex-end auf .modal-dialog.

Anzeigehäufigkeit-Enum

Werte für die Spalte display_frequency.

WertBezeichnungSpeicher
alwaysImmerNichts gespeichert.
once_per_sessionEinmal pro SitzungSession-Cookie ssd_popup_<id> (ohne Ablauf, über Tabs hinweg geteilt, beim Schließen des Browsers gelöscht).
once_per_dayEinmal pro Tag (24 h)localStorage-Schlüssel ssd_popup_<id> mit Zeitstempel.
once_everEinmaliglocalStorage-Schlüssel ssd_popup_<id>.

Anzeigeauslöser-Enum

Werte für die Spalte display_trigger.

WertBezeichnungVerhalten
immediateSofort (beim Seitenaufruf)Öffnet nach display_delay Sekunden (oder sofort, wenn NULL).
exit_intentExit-Intent (beim Verlassen der Seite)Öffnet bei mouseleave von document.documentElement mit event.clientY < 0. Auf Nicht-Hover-Geräten (Touch) fällt es auf eine zeitgesteuerte Anzeige nach dem display_delay des Geräts zurück (Standard 30 s; 0 = sofort).

Zielmodus-Enum

Werte für die Spalte targeting_mode.

WertBezeichnungVerhalten
null(keine)Popup erscheint auf allen Seiten.
page_restrictionSeitenbeschränkungPopup erscheint auf den in target_routes aufgeführten Routen.
custom_urlBenutzerdefinierte URLPopup erscheint auf Pfaden, die Muster in custom_urls entsprechen.

Zielrouten-Schlüssel

Werte, die im JSON-Array target_routes gespeichert werden.

SchlüsselShopware-RoutennameStandard-Storefront-Pfad
homefrontend.home.page/
cartfrontend.checkout.cart.page/checkout/cart
checkout_confirmfrontend.checkout.confirm.page/checkout/confirm
checkout_finishfrontend.checkout.finish.page/checkout/finish
loginfrontend.account.login.page/account/login
productfrontend.detail.page/detail/<id>
categoryfrontend.navigation.page/<kategorie-seo-url>

ACL-Berechtigungen (ssd_popup)

Das Modul registriert Berechtigungen im Shopware-Berechtigungssystem unter der Kategorie content mit dem Schlüssel ssd_popup.

RolleGewährtAbhängigkeiten
viewerssd_popup:read, ssd_popup_rule:read, ssd_popup_category:read, ssd_popup_product:read, ssd_popup_sales_channel:read, cms_page:read, rule:read, category:read, product:read, sales_channel:read, sales_channel_type:readKeine
editorssd_popup:update, ssd_popup_rule:create, ssd_popup_rule:delete, ssd_popup_category:create, ssd_popup_category:delete, ssd_popup_product:create, ssd_popup_product:delete, ssd_popup_sales_channel:create, ssd_popup_sales_channel:deletessd_popup.viewer
creatorssd_popup:createssd_popup.viewer, ssd_popup.editor
deleterssd_popup:deletessd_popup.viewer

Weisen Sie diese Rollen unter Einstellungen > System > Berechtigungen zu, wenn Sie Admin-Benutzer auf Ansicht oder Bearbeitung beschränken möchten.


Storefront-Controller-Route

RoutennameHTTP-MethodePfadBeschreibung
frontend.ssd-digital.popup.contentPOST/ssd-digital/popup/content/{id}Nur XHR-Endpunkt. Akzeptiert ein device-Formularfeld (desktop, tablet, mobile). Gibt das gerenderte CMS-Seiten-HTML für dieses Popup und Gerät zurück. Vom JS-Plugin genutzt, um Popup-Inhalte bei Bedarf zu laden.

Administration-API-Route

RoutennameHTTP-MethodePfadBeschreibung
api.action.ssd-popup.consent-cookiesGET/api/_action/ssd-popup/consent-cookiesGibt die auswählbaren Cookie-Consent-Optionen ({ value, label }) für das Feld Erforderliche Cookie-Einwilligung zurück. Wird aus Shopwares registrierten Cookie-Gruppen aufgebaut, ohne die Gruppe „Erforderlich" und versteckte Einträge. Wird vom Popup-Editor verwendet.

Entity-Erweiterungen

Das Plugin erweitert folgende Shopware-Core-Entities mit Back-Reference-Assoziationen (schreibgeschützt, intern genutzt):

EntityErweiterungsfeldTyp
categoryssdPopupsMany-to-many-Rückverweis auf ssd_popup
productssdPopupsMany-to-many-Rückverweis auf ssd_popup
cms_pagessdPopupsMany-to-many-Rückverweis auf ssd_popup
rulessdPopupsMany-to-many-Rückverweis auf ssd_popup
sales_channelssdPopupsMany-to-many-Rückverweis auf ssd_popup

Das Plugin registriert einen Eintrag im Shopware Cookie-Manager:

EigenschaftWert
Cookie-GruppeErforderlich (cookie.groupRequired)
Snippet-NamessdUltimatePopup.cookie.name → „Ultimate Popup"
Cookie-Bezeichnerssd_ultimate_popup
Ablauf30 Tage

Die eigentlichen Häufigkeitsbeschränkungsdaten werden unter Schlüsseln nach dem Muster ssd_popup_<popup-id> gespeichert: Einmal pro Sitzung nutzt ein Session-Cookie (ohne Ablauf), Einmal pro Tag und Einmalig nutzen localStorage. Dieser ssd_ultimate_popup-Eintrag ist lediglich die Deklaration im Cookie-Manager, die den Besucher darüber informiert, dass das Plugin diesen erforderlichen Browser-Speicher nutzt; der 30-Tage-Wert gilt für den Deklarationseintrag, nicht für das Session-Cookie (das beim Schließen des Browsers gelöscht wird).

Your Vision. Signed, Sealed, Delivered.