schachbulle / contao-adressen-bundle
Adressen-Verwaltung für Contao 4.13 und Contao 5
Package info
github.com/Samson1964/contao-adressen-bundle
Type:contao-bundle
pkg:composer/schachbulle/contao-adressen-bundle
Requires
- php: ^8.1
- contao/core-bundle: ^4.13 || ^5.0
- psr/log: ^1.1 || ^2.0 || ^3.0
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^9.5
Suggests
None
Provides
None
Conflicts
- contao/core: *
- contao/manager-plugin: <2.0 || >=3.0
Replaces
None
README
Adressen-Verwaltung für Contao 4.13 und Contao 5.
Das Bundle pflegt zentrale Kontaktdatensätze und gibt sie an beliebiger Stelle der Website aus – als Inhaltselement, über einen Insert-Tag oder über zwei Frontend-Module.
Voraussetzungen
| PHP | ^8.1 (geprüft mit 8.3) |
| Contao | ^4.13 || ^5.0 (geprüft mit 4.13.58 und 5.7.7) |
Installation
composer require schachbulle/contao-adressen-bundle
Anschließend die Datenbank aktualisieren:
vendor/bin/contao-console contao:migrate
Funktionen
Backend-Modul „Adressen"
Unter Inhalte → Adressen werden die Datensätze gepflegt: Name, Anschrift, bis zu vier Telefon- und zwei Faxnummern, sechs E-Mail-Adressen, Bankverbindung, Homepage und Profile in sozialen Netzwerken, ein Foto sowie ein öffentlicher Visitenkarten-Text.
Telefon- und Faxnummern werden beim Speichern in die internationale Schreibweise nach
DIN 5008 umgewandelt: aus 030/1234567 wird +49 30 1234567. Damit das gelingt, müssen
Vorwahl und Rufnummer durch ein Leerzeichen, einen Schrägstrich oder einen Bindestrich
getrennt sein — aus einer durchgehenden Ziffernfolge lässt sich die Ortsnetzkennzahl nicht
erschließen. Mobilnummern erkennt das Bundle auch ohne Trenner. Gelingt die Umwandlung
nicht, erscheint eine Meldung am Feld mit einem Vorschlag zur Schreibweise.
Für jede Angabe lässt sich getrennt festlegen, ob sie im Frontend erscheinen darf
(*_view-Schalter). Ein Statussymbol in der Liste zeigt, ob eine Adresse aktiv und ob sie
irgendwo auf der Website eingebunden ist.
Über die Kopfleiste stehen ein CSV-Import und ein CSV-Export bereit. Beim Import
werden nur Spalten übernommen, die es in tl_adressen wirklich gibt; die erste Zeile der
Datei muss die Spaltennamen enthalten.
Zusätzlich gibt es einen Spezialfilter, der alle Adressen anzeigt, die sich eine E-Mail-Adresse mit einem anderen Datensatz teilen.
Kategorien
Unter Adressen → Kategorien (tl_adressen_categories) werden frei definierbare
Kategorien gepflegt, die einer Adresse zugewiesen werden können. Das Suchmodul kann darauf
einschränken.
Inhaltselement „Adresse"
Gibt eine ausgewählte Adresse aus. Einstellbar sind eine Funktion/ein Amt (erscheint vor dem Namen), ein Zusatztext, die Beschränkung auf einzelne E-Mail-Adressen sowie ein abweichendes Foto und Bildformat.
Insert-Tag
{{adresse::ID}}
{{adresse::ID::Funktion}}
{{adresse::ID::Funktion::Funktionsinfo}}
Zusätzlich kann das Foto gesteuert werden:
{{adresse::12::Präsident::foto=0}} Foto ausblenden
{{adresse::12::Präsident::foto=120,90}} Foto in abweichender Größe
Frontend-Module
| Modul | Beschreibung |
|---|---|
Adressensuche (adressen_suche) |
Volltextsuche über alle Adressfelder, optional eingeschränkt auf Kategorien. Der Parameter email=1 schaltet eine kompakte Ansicht frei, aus der sich die ausgewählten E-Mail-Adressen in die Zwischenablage kopieren lassen. |
Wertungsreferenten (adressen_wertungsreferenten) |
Tabelle der Verbände/Bezirke mit dem jeweils zuständigen Referenten. |
URL-Parameter der Suche: s (Suchbegriff), funktion[] (Kategorie-IDs), join
(and/or), email (kompakte Ansicht).
Cronjobs
| Service | Intervall | Aufgabe |
|---|---|---|
schachbulle.adressen.cron.extrahieren |
täglich | Ermittelt, auf welchen veröffentlichten Seiten jede Adresse eingebunden ist, und schreibt die URLs nach tl_adressen.links. |
schachbulle.adressen.cron.kontrollieren |
1. Jan/Apr/Jul/Okt, 04:00 Uhr | Verschickt an alle aktiven, eingebundenen Adressen eine E-Mail mit den gespeicherten Daten und der Bitte um Korrekturmeldungen. |
Achtung: Der Kontroll-Cronjob verschickt E-Mails an echte Empfänger. Er tut das erst, wenn in den Einstellungen der Haken „Kontroll-E-Mails scharfschalten" gesetzt ist. Ohne diesen Haken gehen alle E-Mails ausschließlich an den eingetragenen Test-Empfänger.
Systemeinstellungen
Unter System → Einstellungen → Adressen lassen sich ein Standardbild und die Bildgröße festlegen, die verwendet werden, wenn eine Adresse kein eigenes Foto hat.
Unter System → Einstellungen → Adressen: Kontroll-E-Mails wird der Kontroll-Cronjob konfiguriert:
| Feld | Bedeutung |
|---|---|
| Absenderadresse | Ohne Eintrag verschickt der Cronjob nichts. |
| Absendername | Wird als Absender angezeigt und dient als Grußformel am Ende der E-Mail. |
| Antwortadresse | Leer lassen, um die Absenderadresse zu verwenden. Schreibweise mit Namen erlaubt. |
| Betreff | Betreffzeile der E-Mail. |
| Grußformel | Steht am Ende der E-Mail, HTML erlaubt. Leer = Absendername. |
| Basis-URL für Fotos | Vollständige Adresse der Website. Leer lassen, um kein Foto anzuzeigen. |
| Kontroll-E-Mails scharfschalten | Erst mit Haken gehen die E-Mails an die echten Kontakte. |
| Test-Empfänger | Empfänger im Testmodus. |
Fehlt die Absenderadresse – oder im Testmodus der Test-Empfänger – bricht der Cronjob ab
und schreibt eine Meldung in das Log contao.cron.
Sämtliche Texte der E-Mail stehen in der Sprachdatei und lassen sich über eine eigene Sprachdatei im Projekt überschreiben:
Schlüssel unter TL_LANG['MSC'] |
Inhalt |
|---|---|
adressen_cron_anrede |
Anrede |
adressen_cron_einleitung |
Einleitungsabsatz |
adressen_cron_felder |
Beschriftungen der aufgelisteten Felder |
adressen_cron_texte |
Spambot- und Foto-Hinweise, Seiten-Einleitung, Schlusssatz |
Die Beschriftungen des Suchmoduls stehen unter TL_LANG['MSC']['adressen_suche'].
Templates
| Template | Verwendung |
|---|---|
ce_adressen.html5 |
Inhaltselement „Adresse" |
ce_adressen_default.html5 |
Alternative für das Inhaltselement (über customTpl wählbar) |
ce_adressen_inserttag.html5 |
Ausgabe des Insert-Tags |
adresse_ergebnisse.html5 |
Modul „Adressensuche" |
mod_adressen_referenten.html5 |
Modul „Wertungsreferenten" |
Entwicklung
vendor/bin/phpunit # Unit-Tests (tests/)
Die Tests laufen auch ohne composer install im Bundle – der Bootstrap
(tests/bootstrap.php) registriert dann einen eigenen PSR-4-Autoloader und bindet
optional eine Contao-Referenzinstallation ein (Pfad über die Umgebungsvariable
CONTAO_TEST_DIR).
Konventionen:
declare(strict_types=1);in jeder PHP-Datei- Kommentare, Dokumentation und DCA-Labels auf Deutsch
- API-Unterschiede zwischen Contao 4.13 und Contao 5 werden über
ContaoAdressenBundle::isContao5()bzw.Classes\Kompatibilitaetgekapselt
Lizenz
LGPL-3.0-or-later
Frank Hoppe