Das Camp fand in Essen am 20. und 21.04.2024 im Unperfekthaus statt. Wir hatten etwa 50 Teilnehmer.
Es folgt eine Auflistung der Sessions und deren Themen. Die Namen geben den „Moderator“ der Session wieder, d. h. derjenige der entweder die Session vorgeschlagen oder sich bereit erklärt hat, zu dem Thema was zu sagen/machen.
- wie PHP in Twig migrieren
- Twig Filter anlegen, wo und wie
- eigene Twig Templates anlegen
- Twig Ordnerstruktur
- benötigte Blöcke herausfinden (GitHub/vendor)
- Bugfixing & Debug-Mode
- Idee für Referenz oder Verlinkung bei Generierung von neuem Template, als Link zu GitHub oder vielleicht sogar mit so einer Art Preview-Mode
- Phpstorm ai PHP zu Twig
- man muss nicht 2025 Barrierearm mit seiner Webseite sein, aber bei "grundlegenden Änderungen" oder Kontaktformular usw. hat man entsprechende Verpflichtung
- "Barriere-Frei" geht per se nicht bei Webseiten - eher "barrierereduziert" verwenden
- Accessibility-Tools sind eher mit Vorsicht zu geniessen - die Ladezeit geht in den Keller und der User muss erstmal die Einstellung vornehmen
- Aria-Attribute: sind wichtig, müssen aber stimmen! - ansonsten "verschlimmbessern" eher die Seite
- Klassifizierung nach A/AA/AAA - AA sollte mindestens erreicht werden
- es gibt spezielle Media-Queries für das Thema - eine Aufstellung machen Joachim und Ingolf für das Handbuch
- "Barriere-Check" anhand der Contao-Demo besprochen
- Webseite sollte von vornherein kontrastreich gestaltet werden - ohne das "dunkles Grau auf hellem Grau..."
- Einfache Sprache: wie findet jemand die Umschaltung bzw. den Seitenzweig
- Unterscheidung zwischen "Leichte Sprache" vs. "Einfache Sprache" - siehe https://www.inklusion-kultur.de/infoportal/kommunikation-information/leichte-und-einfache-sprache/
- Testen z. B. WAVE Web Accessibility Evaluation Tools als Browser-Tool - bestes "Tool" ist jemand, der die entsprechende Einschränkung hat auch https://www.experte.de/barrierefreiheit, https://polypane.app/ oder Mobilapp https://play.google.com/store/apps/details?id=asada0.android.cvsimulator / https://apps.apple.com/us/app/chromatic-vision-simulator/id389310222, https://apps.apple.com/us/app/chromatic-vision-simulator/id389310222 https://chromewebstore.google.com/detail/visbug/cdockenadnadldjbbgcallicgledbeoc?pli=1 / https://addons.mozilla.org/de/firefox/addon/visbug/
- Selbstbewertung BITV https://bitvtest.de/tests-und-beratung/selbst-testen/bitv-selbstbewertung
- Webseite mit Tab-Taste testen
- Barrierereduzierung und SEO ergänzen sicht oft
- Wunsch wäre, dass Contao-Core-Elemente die Aria-Auszeichnungen richtig ausgibt
- Beispielseite mit Individualimplementierung https://access-for-all.ch/ - ggf. als Erweiterung machbar
- Wie gehe ich besten mit meiner Code-Versionierung um, damit ich später auch noch etwas wiederfinde?
- siehe Präsentationsfolien github-repo oder hier
- Gesetz: https://www.bmas.de/DE/Service/Gesetze-und-Gesetzesvorhaben/barrierefreiheitsstaerkungsgesetz.html
- Zusammenfassung: https://www.verdure.de/magazin/strategie/barrierefreiheitsstarkungsgesetz-websites-2025-bfsg-bitv-wcag/
- siehe auch zum Thema "Zumutbarkeit" https://de.wikipedia.org/wiki/Zumutbarkeit
- Kunden auf Frist hinweisen und dokumentieren um keine "Angriffsfläche" für juristische Auseinandersetzungen zu haben
Diese gewünschte Session war eine Wiederholung des Vortrags von der Contao Konferenz 2023. Die Folien sind bereits auf der Konferenz-Website verfügbar.
Inhaltlich wurden die folgenden Punkte berücksichtigt:
- Modernes CSS (was ist das eigentlich)
- Graceful Degradation
- Progressive Enhancement
- Graded Browser Support
- Interop
- Anwendungsbeispiele
- Dienst contao.contact vorgestellt und Intention am Beispiel lindesbs.contao.contact erklärt.
- Bundle ist frei verfügbar
- Einbindung der VCF und QRCode Generierung über weiteres Paket vorgesehen (https://github.com/lindesbs/MemberQRCode); dieses wird noch erweitert durch ContentElemenete/Module für die Einzel und Mehrfachgenerierung von VCF/QRCode
- Vortrag von Joachim in "Kurzdurchlauf"
- "Fünfzig Prozent des Werbebudgets sind raus geworfenes Geld" (Henry Ford)
- Wie ist Werbung messbar? Mit Zeitung, Radio, Fernseher - ist das nicht machbar... => Gießkannenprinzip.
- Kanäle: Anzeigen/Ads, E-Mails/Newsletter, Webseite?
- Kosten für: Inhalte, Anzeigenplätze
- Verbindung zwischen Werbekosten zu Käufen per Analytics - wie gut ist Analytics?
- Analytics ist so gut, wie man es konfiguriert - die Interaktionen müssen passend gemessen werden
- Tracking-Links in normale E-Mails einbauen (kein Personenbezug einbauen)
- Auswertung in Matomo per "Kombiniertes Reporting"
- "Trüffel-Tipps":
- Kampagnen-Parameter kürzen (z. B. yourls.org)
- Kampagnen-Parameter mtm_* und utm_* werden entfernt - daher eigene Parameter verwenden (in Matomo konfigurierbar)
- Datenverlust in Analytics beheben - Matomo kann Consent-Bannerfrei eingesetzt werden / Adblocker können umgangen werden (siehe Blockliste z. B. uBlock Origin)
- Ladezeit beachten - erst nach vollständigem Laden, wird Matomo-Track befeuert
- Tracking von Bildschirmauflösung und Browsererweiterungen abschalten, damit kein Fingerprinting erfolgt
- Tipp: Matomo auf eigenem Server
- Neues Reporting-Tool für Matomo-Daten in Vorbereitung
Inhalt der Session waren die Möglichkeiten für Agenturen/Freelancer, um Kundenprojekte möglichst schnell abzuschließen
Persönliche Vorgehensweise (Stefan):
- Code & Extensions:
- Standard Felder in RSCE anlegen und dann für die verschiedenen ContentElemente per include einbinden
- Standard-Template-Parts die zu den Standard-Feldern gehören
- Innerhalb des Templates haben wir ein Customer-Ordner, wo fest vorgefertigte Werte des Kunden bereitgestellt werden.
Bsp.:
- Standard-Werte für die Eingabefelder
- vorgefertigte Farbwerte für die Klassen / SCSS-Variablen
- eine extra DB / Extension um Kundenspezifische Einstellungen für:
- Footer
- Header
- zu definieren - Bsp.:
- Standard-Farbwerte
- Standardwerte für Eingabefelder
- Daten des Kunden die relevant für die Webseite sind
- Festlegen, welche art von Header(Navi) oder Footer erscheinen soll. Bsp.: Compact, Expanded, Custom ...
- zu definieren - Bsp.:
- Nutzung eines Install-Scripts / Copy-Scripts:
- Install-Script
- automatische Erstellung von:
- Domain
- DB+DBUser
- SSH/FTP-Zugang
- SSL
- automatisches Speichern der Passwörter in einem Passwort-Manager (bsp. 1password) mittels Script
- automatische Installation von Contao & den Extensions
- Mittels:
- SSH
- 1password-CLI
- FTP
- PHP
- Command-Pattern
- Plesk-Api (XML)
- Git-Commands
- Contao-Manager
- automatische Erstellung von:
- Install-Script
- Copy-Script
- Domain, DB, Zugang müssen manuell angelegt werden
- mittels Bash
- komplettes Contao-Projekt herunterladen
- entzippen und einrichten
- Diskussion und Feedback in der Runde
- Vorschlag:
- besser Composer verwenden und Projekt installieren statt komplettes Projekt herunterzuladen
- statt Kundenordner mit Standardwerten:
- Stylemanager-Extension verwenden
- Standardwerte (bsp. Klassen) mittels Stylemanager festlegen
- Fields & Template-Parts über anderen Ordner, statt unter Templates
- Prüfung: kann man RSCE-Configs einfach über das Templates-Menü von Contao verwalten?
- Verwaltung über Git, Packagist und Composer
- könnte allerdings schwierig bei privaten Repos werden. Möglichkeit:
- Zugriff über composer.json ermöglichen
- Pakete in Contao-Manager per Zip hochladen
- könnte allerdings schwierig bei privaten Repos werden. Möglichkeit:
- hat sich der Aufwand des Install-Scripts gelohnt?
- Wie viele Kunden habt ihr?
- Was machst du, wenn auf anderen / aktuellen Projekten Änderungen passieren?
- Aktuell mittels Subscription werden die Code-Updates finanziert
- Code-Update
- müssen in allen Projekten der Code upgedated werden?
- Alternativ: Überlegung, ob man Projekte unabhängig voneinander weiterentwicklet. Sprich Änderungen in einem Projekt nicht mittels Updates im anderen Projekt übernehmen
- grundsätzliche Frage, wie kriegst du die Code-Updates rein, die auf der Original-Domain stattfinden & die du in deinem aktuellen Projekt brauchst.
- alternative Möglichkeiten bsp.:
- Extensions (einfache Updates möglich)
- Themes (einfache Updates möglich). Möglichkeiten:
- damals unter anderem von Aschemp entwickelt
- extra vorgesehen, für die Nutzung von Darstellung / Themes
- wird nur einmalig bei erst-installation verwendet
- SQL-Datei, Templates, SCSS, JS, ... zu inkludieren
- Vorschlag:
- Viele verschiedene Möglichkeiten
- Einfache Systemupdates über den Manager oder Trakked
- Deployment vom lokalen Rechner mittel Phing, MagePHP, Deployer o.ä.
- Integration von Tools in Deployment Systeme (Gitlab CI, Jenkins o.ä.)
- Kommunikation / Datei-Share
- Libre Workspace
- Nextcloud
- SeaFile
- Projekte / Aufgaben
- aWork
- Redmine
- Trello
- Clickup
- Moco
- Zeiterfassung
- Clockodo
- Wiki / Doku
- Xwiki
- Wiki.js
- Bookstack
- Gitlab
- Automatisierung
- zapier
- make
- n8n.io
- Fernwartung
- Rustdesk
- HoptoDesk
- Monitoring
- Uptime Kuma
- Icinga
- StatusCake
- Backup
- Monkey für Joomla / Wordpress
- Verschiedene Wege, das Monorepo in eine Managed-Edition einzubinden, um Änderungen im Browser testen zu
können: Symlink über Composer oder direkte Entwicklung in
vendor
. - Eigenen Fork erstellen und als Remote hinzufügen.
- Pull-Request auf github.com erstellen.
- Installation bzw. Aktivierung von Yarn 4, um die Assets zu builden.
- leider bestand hier kein Interesse und die Session ist nicht zustande gekommen.
- Wen das Thema (TypeScript-first schema validation with static type inference) trotzdem interessiert, kann sich unter folgendem Link informationen einholen zod.js
- An welchen Stellen unseres Auftragsablaufes kann KI eingesetz werden?
- Unterstützung bei Kommunikation wie E-Mails (Chrome-Erweiterung)
- Zusammenfassung von Texten wie Vertäge
- Texterstellung - Achtung: Texte checken!; z. B. Produktbeschreibung
- Generierung von Sitemap als Grafik z. B. Octopus
- Wireframe generieren z. B. Relume
- Generierung von Bildern, erweitern von Bildern z. B. bei unpassenden Formaten, Icons (z. B. Indesign)
- Generierung von JS Snippets
- SEO z. B. Zusammenfassungen/Description, Alt-Texte von Bildern
- Marketing
- Überwachung von Websitesinhalten
- Präsentationen z. B. mit Gamma.app, Video generieren
- Harpa Ai
- aus Screenshot bearbeitbare Seite machen Uizard
- Chatbot - aktuell die Unterschiede in der Handhabung bei der Konfiguration
Tools:
- https://www.chatbase.co/
- https://www.relume.io/
- https://www.voiceflow.com/
- https://harpa.ai/
- https://gamma.app/
- https://www.kamoto.ai/
- https://www.heygen.com/
- https://poe.com/explore?category=Official
- https://uizard.io/
- https://huggingface.co/
- https://chat.lmsys.org/ --> LLM Testseite
Angestoßen wurde die Session vom Event-Team und rund 15 Personen besuchten die Session
Im ersten Teil der Session wurde das Format Barcamp thematisiert.
Sowohl in der Contao Community als auch in anderen Communities sind die Besucherzahlen zu Camps rückläufig. Das
mag noch an Auswirkungen der Pandemie liegen, es wurde auch diskutiert, dass das Format als solches nach 15 Jahren
an Attraktivität verloren hat.
Zur Frage, ob das Format besser in der Woche oder am Wochenende stattfinden sollte, gab es unterschiedliche Meinungen:
- für Einzelkämpfer besser am Wochenende
- für Angestellte, die zu Veranstaltungen geschickt werden, ist es während der Woche besser
Vorteile des Formats Barcamp:
- Möglichkeit, viel und in Kommunikation zu lernen
- individueller Know-How Transfer möglich
- geringerer Ticketpreis
- Fokus auf Community/Netzwerken
Spezielle Nachteile des Formates Barcamp:
- das Format lässt sich Chefs schwieriger vermitteln, da unklare Inhalte
Allgemeiner Nachteil der Veranstaltungen:
- zusätzliche Belastung durch Hotel, Anfahrt etc durch Preissteigerungen
Ideen für das Camp:
- denkbar wäre eine Terminierung Freitag/Samstag
- Themenpunkte des letzten Camps auf Website(s) veröffentlichen
- Mischformate (vorgegebene Themengruppen)
- Kombination mit Colleges
- Kombination mit anderen CMS
- Banner der Veranstaltung auch in der Doku
Fragerunde, wie Besucher vom Camp erfahren haben:
- Slack, explizite Ansprache
- Idee, die nächste Veranstaltung im Anschluss zu verkünden (ist in Kiel/Camp 2024 passiert)
- nicht anwesende Personen anschrieben
Alternative Formate zum Camp:
- Mix-Events
- Sommerfest mit Workshops
- Fuckup-Night im Abendprogramm
Im zweiten Teil der Session wurde das Format Konferenz thematisiert.
Wie beim Camp auch gibt es rückläufige Besucherzahlen in allen Communities. Besprochen wurde die Zielgruppe und
mit welchen Motivationen Besuchergruppen haben:
- Lowpreis vs. Highpreis
- Lowpreis/Einsteiger: weniger Vor-Ort für Angestellte, viel Online
- Highpreis: Agenturen/Firmen schicken die "Head-Ofs" (mehr Budget)
Konsens herrschte bei der These, dass Online-Formate eine Konkurrenz wurden. Diese wurden durch Corona professionalisiert und bringen weniger Arbeitszeitausfall und weniger Kosten mit sich.
Weitere Ideen/Themen zur Konferenz:
- bezahlte Anzeigen (CA-Budget nutzen)
- Idee: in SoMe-active Nutzer als Influencer nutzen
- Wie können Agenturen erreicht werden?
- explizite Themenstränge beibehalten
- Bedürfnisse/Wünsche abfragen
- Speaker-Suche ist aufwändig/müßig
- finanziell werden Speaker aus der Community benötigt
- Meta-Themen: Mitarbeiterführung, Projektleitung
- Security-Themen
- Symfony Community
Weitere Topics
- brauchen wir neue/weitere Online-Formate
- offene Online-Stammtische
Nennenswerte Unterschiede von Contao zu anderen Redaktionssystemen, die im Arbeitsalltag oder im Gespräch mit Kunden auftauchen:
- Andere CMS bieten eine API
- Inhalte in Contao sind sehr verschachtelt (immer Seiten, Artikel, Inhaltselemente), andere CMS sind da flacher
- Schulungsbedarf bei Contao
- Das CMS muss zum Job passen: Je nach Anforderungsprofil des Jobs ist der Aufwand höher auch geringer. Auch die Verfügbarkeit von Erweiterungen spielt eine Rolle
- Contao hat ein komplexes Rechtemanagement: Es lässt sich sehr viel sehr fein einstellen, man muss sich aber auch damit auseinandersetzen.
- Weniger Features des CMS erlauben manchmal mehr Kontrolle. Gegen manche Contao-Features muss man regelrecht ankämpfen.
Es haben sich unterschiedliche Herangehensweisen herauskristallisiert: Alles über das Backend steuern vs. alles „im Template hardcodieren“. Je nach Arbeitsweise passt ein CMS, besser als das andere. Die eierlegende Wollmilchsau wird es eher nicht geben.
Andere CMS, die in der Contao Community je nach Anforderung auch verwendet werden:
- Registrierung
- Einbindung
- Tracking von Seiten
- Security-Hinweise
- es wurden verschiedene Wege für Refinanzierung erörtert
- "early-adopter-programm" wie bei MetaModels, Contao-Bootstrap, Include-Erweiterung - also mit Programmierung in Vorleistung gehen und einen finanziellen Beitrag für sofortige Nutzung bekommen; Ingolf hat im Vorfeld zu "EAP" eine Umfrage bei Agenturen gemacht und das ist für viele eine gute Option für die Projektplanung; bei dem "EAP" sind die Erweiterung nach Finanzierung für alle frei verfügbar
- klassisches Fundraising like Kickstarter - wenig Bereitschaft im DACH-Bereich für diese Variante der Finanzierung
- Klassische Bezahlvariante - ggf. vorhandene Lizenzbedingungen beachten
- eigene "Community" wie bei Isotope mit dem "Circle" - da reichen Einnahmen nur für Bugfixes/Support aber nicht für große Neuentwicklungen/Features
- Variante mit freier Verfügbarkeit und zu bezahlenden Plugins
- schwierig ist die Umstellung von bisherigen kostenlosen Varianten zu einer Bezahlvariante
- Abklärung, was inhaltlich gemeint ist.
- Es existieren Tools/Plugins für Console/PHPStorm, die einem die Grundlagen abnehmen, wie z. B.:
- SkeletonBundle (https://github.com/contao/skeleton-bundle)
- ContaoMakerBundle (https://github.com/contao/maker-bundle)
- Spezielle Plugins für Contao existieren bisher nicht, Wunsch war z.B. DCA Struktur Unterstützung, File->New mit ContentElements/Modules etc.
- Allgemein bekannte Plugins (https://plugins.jetbrains.com/plugin/7219-symfony-support)
Finale Besprechung bezüglich Tools zum Entwickeln mit Docker, plain oder ddev (https://ddev.com/)
- Historie
- Warum gibt es den ThemeManager und wie ist er entstanden
- Bestandteile des ThemeManagers
- Core Features wie Seo-Headlines & Hintergrundbilder
- Arbeiten mit dem ThemeManager
- Dokumentation
- Wie installiere ich erwerbbare Themes
- Fragen & Antworten
- Unterschiede zwischen Xliff 1 und 2
- Vorstellung von "Contao2Xliff"
- Duplizieren des Seitenbaums
- Zielgruppe ist "normale Contao-User"
- Vorstellung von "XLIFF-Ex-Import":
- Konsolen-Tool
- Steuerung über eine Konfigdatei
- Automatisierung per Cronjob möglich
- Debugmöglichkeiten bei z. B. bei unklaren Zuordnungen
- Zielgruppe ist eher Admins, die automatisierte Export/Importe einrichten wollen oder MetaModels dabei haben
- bei beiden muss man bei Erweiterungen gucken, was geht
- Kurze Diskussion was Code Qualität überhaupt ist
- Vorstellung von Rector und den Einsatz bei Terminal42 https://github.com/terminal42/contao-build-tools
- Einsatz von Tools im Contao Monorepo
- Tools welche z.B. bei MetaModels zum Einsatz kommen: https://phpcq.github.io/
Beschäftigt haben wir uns ganz im Allgemeinen mit 2 Ideen, die es so bisher nicht gibt. Hier mal stichwortartig etwas detaillierter:
- Sammlung erweiterter Inhaltselemente/Module
- sollte out-of-the-box funktionieren (Bundle installieren, Elemente stehen funktionsfähig zur Verfügung)
- Umsetzung als echte Inhaltselemente (keine RSCEs)
- einige Ideen:
- Module
ToTop
(ein Button, der sich automatisch einblendet und bei Klick auf der Seite nach oben springt) - Module
ScrollPosition
(ein einfacher Balken, der anzeigt, wie weit man sich auf der Seite bereits nach unten bewegt hat) - Element
Responsive Gallery
(einfach responsive Galerie mit einigen neuen Features, z.B. Spans über Spalten)
- Module
- ein Audit-Modul um Fehler/Probleme schnell/früh zu erkennen
- regelmäßige Audit´s möglich (Command per Cron)
- erweiterbar um neue eigene Prüfungen zu ergänzen
- jede Prüfung möglichst mit eigenen Werten konfigurierbar
- Konfiguration mittels eigener yml-Datei (für einfaches Kopieren in andere Installationen)
- einige Ideen für entsprechende Prüfungen:
- gibt es im System noch "(Kopie)"-Markierungen?
- ist in der Startseite der Alias auf
index
gesetzt - wie groß werden die Log-Dateien insgesamt
- ist ein Route-Prefix für das Backend konfiguriert
- Bild 1: Konfiguration
- Bild 2: Auswertung