Modul: Werbeeinblendung¶
Stand
Code-Analyse vom 2026-04-22 gegen sachpool.de, WebEdition 9.2.3, PHP 8.3.
Zweck¶
Dynamische Werbebanner-Einblendung auf fast allen Seiten im Login-Bereich —
oben oder seitlich positioniert. Redakteure konfigurieren Banner als Objekte
der Klasse werbung (classid 17, 51 Objekte Stand April 2026). Das Frontend
rendert sie als Bootstrap-Carousel mit Auto-Rotation.
Template-Struktur¶
sachpool-portal/werbeeinblendung/
├── werbung-oben.tmpl (196) Carousel oberhalb des Contents
├── werbung-seitlich.tmpl (197) Carousel seitlich (Desktop fixed)
├── werbung-iteration.tmpl (171) Einzel-Werbungsobjekt rendern (listview)
├── werbung-iteration-multiobject.tmpl (292) Gleiche Struktur für Block-Iteration
└── werbung-editor.tmpl (195) Backend-Input für Redakteure
Einbindung auf Seiten¶
Fast alle Login-Bereich-Templates binden ein:
<we:include type="template" id="196" once="true" /> <!-- oben -->
... Content ...
<we:include type="template" id="197" once="true" /> <!-- seitlich -->
Datenmodell: Werbung-Klasse (classid 17)¶
Pro Werbe-Objekt bis zu 10 Banner (hartkodiert, keine Schleife):
| Feld | Typ | Rolle |
|---|---|---|
werbebanner1 … werbebanner10 |
img | Das Bild pro Slot |
link1 … link10 |
link | Standard-Link (WebEdition-intern) |
speziallink1 … speziallink10 |
text | Externer Link (überschreibt linkN), öffnet target=_blank |
Ein Werbe-Objekt ist entweder ein Einzel-Banner oder eine Banner-Serie (bis 10).
Mehrere Werbe-Objekte per Werbe-Slot möglich (über multiobject_WerbebannerObenMO).
Redakteur-Konfiguration¶
In jedem Content-Dokument / Objekt (werbung-editor.tmpl, 195)¶
Der Redakteur hat auf jedem Dokument zwei Sets an Schaltern:
Werbung oben:
- werbung-oben (Checkbox) — Schalter
- werbung-oben-size (Select):
- 1 = 100 % Breite (responsive bis 1110 px) — Default
- 2 = 541 × 137 px (Der Sachpool Format)
- 3 = 970 × 90 px (Super Leaderboard)
- 4 = 728 × 90 px (Leaderboard)
- 5 = 468 × 60 px (Banner)
- werbung-oben-links (Checkbox) — linksbündig statt zentriert
- Auswahl der Werbe-Objekte (WerbebannerOben-Block → multiobject_WerbebannerObenMO)
Werbung seitlich:
- werbung-seitlich, werbung-seitlich-size (1–4), werbung-seitlich-links
- 1 = 100 % Breite (responsive bis 200 px)
- 2 = 200 × 550 px (Der Sachpool Format)
- 3 = 160 × 600 px (Wide Skyscraper)
- 4 = 300 × 600 px (Ad Unit)
- Banner-Auswahl via <we:collectionSelect name="Werbebanner-Seitlich">
Render-Pipeline¶
werbung-oben.tmpl (196)¶
- Lokale
werbung-oben-Variable → globale Variable (damit Includes sie sehen) - Block-Sammler: alle
WerbebannerOben-Objekte aus dem Dokument in$GLOBALS['werbeIDs'](kommasepariert) - Fallback auf Multi-Object-Feld: falls
WerbebannerObenMOgesetzt, überschreibt - Carousel rendern:
- Inline-CSS je nach
werbung-oben-size(harte Pixel-Werte) - Auto-Rotation:
data-interval="6000"(6 Sekunden)
werbung-iteration.tmpl (171)¶
Rendert pro Objekt bis zu 10 Slides — werbebanner1..10 mit entsprechenden Links:
<we:ifNotFieldEmpty type="img" name="werbebanner1">
<we:ifNotFieldEmpty name="speziallink1">
<!-- speziallink hat Vorrang, target=_blank -->
<we:field type="text" name="speziallink1" nameto="currentAdLink" to="global" />
<we:setVar nameto="currentAdLinkTarget" to="global" value="_blank" />
<we:else />
<!-- sonst WebEdition-interner Link mit eigenem target -->
<we:field type="link" name="link1" only="href" ... />
<we:field type="link" name="link1" only="target" ... />
</we:ifNotFieldEmpty>
<div class="carousel-item <we:ifPosition ... first ...>active</we:ifPosition>">
<a href="..." target="...">
<we:field type="img" name="werbebanner1" class="d-block" />
</a>
</div>
</we:ifNotFieldEmpty>
<!-- ... 10x wiederholt für werbebanner2, 3, ..., 10 ... -->
werbung-iteration-multiobject.tmpl (292)¶
Identische Logik, aber mit <we:ifPosition type="block" name="werbeblock"> statt
type="listview". Wird für alte Block-basierte Iteration genutzt (Legacy).
werbung-seitlich.tmpl (197)¶
Analog, aber:
- Position fixed bei Desktop (> 1850 px), static darunter (responsive)
- Responsive-Media-Query-Cut bei 1850 px
- Left/Right je nach werbung-seitlich-links-Flag
Bekannte Altlasten¶
→ interne Datei HANDLUNGSEMPFEHLUNGEN.md im Repo-Root
- 🟢 Maximal 10 Banner pro Objekt (Hardcode-Grenze)
- 🟢 Mehrere auskommentierte Alt-Varianten (
<we:block>-Pattern,<we:listview type="collectionitems">) in den Haupttemplates - 🟢 Inline-Styles mit Pixel-Werten — schwer responsive anzupassen
- 🟢 Carousel-Controls mit
opacity: 0.1— fast unsichtbar (UX-Review)
Siehe auch¶
- Objekte & Klassen — Klasse
werbung(id 17) - Tarifrechner, Vergleichsportale — nutzen Werbe-Einbindung