# Einstellungen (Optionen)
Alle Optionen findest du unter Komponenten → SeminarPlan → Optionen. Anzeigeoptionen kannst du zusätzlich je Menüeintrag überschreiben (Tab Darstellung im Menüeintrag, Wert „Global verwenden“ = Komponentenoption).
# API
| Option | Standard | Bedeutung |
|---|---|---|
| API-Basis-URL | https://api.seminarplan.app | Basis-URL der SeminarPlan-API ohne /v1. |
| API-Key | API-Schlüssel aus den SeminarPlan-Systemeinstellungen (Integrationen → SeminarPlan API-Schlüssel). Wird als Header api-key gesendet. | |
| Medien-Basis-URL | Basis-URL für Bilder und Dateien (uploads/…). Leer = API-URL. | |
| Timeout (s) | 60 | Lese-Timeout je API-Anfrage. |
| Portal | Nur Kategorien dieses Portals anzeigen. Leer = Kategorien ohne Portal (Standard-Webseite). Nützlich, wenn eine Organisation mehrere Webseiten betreibt. | |
| Push-Token | Geheimnis für den Push-Endpunkt; identisch mit dem Sync Token in den SeminarPlan-Systemeinstellungen (Integrationen → Website-Synchronisation). |
# Cache
| Option | Standard | Bedeutung |
|---|---|---|
| Cache-Backend | Dateien | Dateien: PHP-Array-Dateien im Cache-Verzeichnis, durch OPcache beschleunigt (empfohlen). Redis: benötigt die PHP-Erweiterung redis; sinnvoll bei mehreren Frontend-Servern ohne gemeinsames Dateisystem. |
| Cache-Verzeichnis | cache/com_seminarplan | Relativ zum Joomla-Root oder absolut. |
| Redis-Host / -Port / -Passwort / -Datenbank / -Schlüsselpräfix | 127.0.0.1 / 6379 / – / 0 / seminarplan: | Nur für das Redis-Backend. |
| Auto-Sync bei leerem Cache | Ja | Ist der Cache leer (z. B. direkt nach der Installation), füllt der erste Seitenaufruf ihn automatisch. |
| Maximales Cache-Alter (s) | 0 | Zusätzlich während eines Seitenaufrufs synchronisieren, wenn der Cache älter ist. 0 = nur über Aufgabe, CLI oder Push (empfohlen, damit Besucher nie warten). |
OPcache bei CLI-Synchronisierung
Die Datei-Ablage nutzt den PHP-OPcache. Ein Abgleich per Kommandozeile oder System-Cron erneuert den OPcache des Webservers nicht direkt; dort greift die normale Prüfung nach opcache.revalidate_freq Sekunden (Standard 2). Bei opcache.validate_timestamps=0 sollten Syncs über den Joomla-Scheduler (Web), das Dashboard oder den Push laufen, oder du verwendest Redis.
# Anzeigeregeln
| Option | Standard | Bedeutung |
|---|---|---|
| Mindestvorlauf (Tage) | 28 | Reguläre Termine müssen mindestens so viele Tage in der Zukunft liegen. Garantietermine werden bis zum Tag der Durchführung angezeigt. |
| Maximaler Vorausblick (Monate) | 13 | Termine, die weiter in der Zukunft liegen, werden ausgeblendet. |
| Neue Seminare (Tage) | 90 | Seminare, die innerhalb dieser Tage angelegt wurden, gelten als „neu“. |
| MwSt.-Satz (%) | 19 | Für die Bruttoberechnung. |
| Einträge pro Seite | 40 | Seminare pro Seite in Listen. |
| Platzhalter-Standorte | ^(wirtschaftsraum\b\|noch\s+offen\b) | Regulärer Ausdruck; passende Standorte („Wirtschaftsraum …“, „Noch offen“) werden nie angezeigt. |
| Rich-Text bereinigen | Ja | Entfernt beim Abgleich aktive Inhalte aus CRM-Texten (script-Tags, Event-Attribute wie onclick, javascript:-Links, srcdoc/formaction). Tabellen, Bilder, Videos (iframe), Objekte und style-Blöcke bleiben erhalten. Nach einer Änderung Vollabgleich ausführen. |
| Fallback-Bild | Headerbild, wenn Seminar oder Kategorie keines hat. | |
| Titel der Abgekündigt-Kategorie | Abgekündigte Schulungen | Seminare in dieser Wurzelkategorie gelten in Suchergebnissen als abgekündigt. |
Weitere Regeln, die fest eingebaut sind: Es werden nur veröffentlichte Datensätze angezeigt; Seminare brauchen mindestens eine aktive Kategorie; deaktivierte oder blockierte Termine sind nicht buchbar; die CRM-Optionen der Seminare (offenes Seminar, Inhouse, Live-Online, Hybrid, Info-Veranstaltung, Icons ausblenden, Gruppentexte) werden berücksichtigt.
# Standard-Slugs
Die Slugs sind die Aliase der Menüeinträge, die der Menü-Generator anlegt: seminare, kategorien, hersteller, standorte, garantietermine, aktionspreise, neue-seminare, empfohlene-seminare, bewertungen, lernpfade, wissen, seminar-buchung, anfrage, kontakt, raumvermietung, suche. Bereits angelegte Menüeinträge werden durch eine Änderung nicht umbenannt; passe in dem Fall den Alias im Menüeintrag an. Die Slugs einzelner Seminare, Kategorien usw. kommen aus dem Feld Alias in SeminarPlan (Fallback: der Titel).
# Formulare
| Option | Standard | Bedeutung |
|---|---|---|
| Captcha | Global | Joomla-Captcha-Plugin für alle Formulare (z. B. reCAPTCHA, Turnstile); „Nicht verwenden“ schaltet es ab. Unabhängig davon sind Honeypot und Rate-Limit immer aktiv. |
| Formular-Limit | 5 | Maximale Absendungen pro Sitzung und 10 Minuten (0 = unbegrenzt). |
| URL AGB / Datenschutz / Widerrufsbelehrung | Links in den Einwilligungstexten. Leer = URLs aus den SeminarPlan-Systemeinstellungen (Texte und Recht → Rechtstexte). | |
| Kontakt-Telefon / Kontakt-E-Mail | Für Kontaktboxen und Formularhinweise. Leer = Werte der Organisation aus SeminarPlan. |
# Darstellung
Rund 45 Schalter steuern, was Karten, Kopfbereiche, Seminar- und Kategorieseiten anzeigen. Jeder Schalter lässt sich je Menüeintrag überschreiben.
Karten (Seminarkarten in allen Listen und Modulen): Icon, Kategorie, Kurzcode, Kurzbeschreibung, Dauer, Level, nächster Termin, Preis, Badges, Buchen-Button.
Seminarlisten: Layout Liste (eine Karte pro Zeile) oder Raster mit 2, 3 oder 4 Spalten.
Kopfbereich: Headerbild, Icon, Badges, Metazeile (Kategorie, Hersteller, Kurzcode, Bewertung).
Seminarseite: Abschnittsnavigation, Fakten (Dauer, Level, Preis, Teilnehmer, Format), Highlights, Inhaltsdarstellung (Akkordeon, Tabs oder untereinander), Inhaltsabschnitte (Überblick, Kursinhalte, Zielgruppe, Lernziele, Methodik, Zertifizierungen, Vorkenntnisse, Agenda, Zertifikat, Organisatorisches), Termine, Inhouse-Box, Bewertungen, FAQ, verwandte Seminare, Seitenleiste, nächste Termine in der Seitenleiste, Kontaktbox, Lernpfade.
Kategorieseite: Einleitung, Unterkategorien, Seminare, Gruppierung nach CRM-Gruppentext, Lernpfade, Garantietermine, Bewertungen, Beschreibung, Galerie, FAQ, SEO-Text, Nachbarkategorien.
Preise: Zusatz „zzgl. MwSt.“ anzeigen, Darstellung Netto, Brutto oder beides.

# SEO & Ausgabe
| Option | Standard | Bedeutung |
|---|---|---|
| Sprache der CRM-Inhalte | de | Sprachcode der Seminartexte. Weicht er von der Seitensprache ab, bekommen die Inhalte ein lang-Attribut (Barrierefreiheit). |
| Strukturierte Daten | Ja | schema.org-JSON-LD ausgeben (Course, Event, ItemList, LocalBusiness, Article, BreadcrumbList). |
| Breadcrumbs erweitern | Ja | Kategoriepfad und Seminar an die Joomla-Breadcrumbs anhängen. |
| Komponenten-CSS laden | Ja | Das schlanke Stylesheet der Komponente laden. Abschalten, wenn dein Template eigene Styles mitbringt. |
Unabhängig von den Optionen setzt die Komponente pro Seite genau eine H1, einen Canonical-Link (auch für Seitennummern), rel="prev/next", OpenGraph-Tags und markiert Formulare, Suche, Erfolgsseiten und leere Listen als noindex,follow. Eine XML-Sitemap aller Katalogseiten liefert index.php?option=com_seminarplan&view=sitemap&format=xml.
# Berechtigungen
Standard-Joomla-Aktionen (Konfigurieren, Optionen, Verwalten) plus die Aktion Synchronisieren (Dashboard-Schaltflächen und Cache leeren).