Workshop»Best Practice« mit ContaoThomas Weitzel   think-contao.dePeter Müller   pmueller.de道2. Juni201115 bis 17 Uhr
KurzvorstellungPeter MüllerThomas Weitzelpmueller.dethink-contao.de
Tao道Der Weg. Der Sinn. Das Prinzip.
Contao道Der Schöpfer. Content erzeugen.
Kommt drauf an...Kommt drauf an...Wie macht man das am Besten?Kommt drauf an...Best PracticeKommt drauf an...
Worst CaseWorst Case: So sollte man es definitiv nicht tunDer metaphorische „Griff ins Klo“ Wir beginnen im Folgenden oft mit einem „WC“Und zeigen dann, wie man sauber aus der Sache rauskommt.
Das Projekt "Website" im Überblick Installation1LayoutFunktionenInhalte234Wartung5
Inhaltsübersicht
Webspace testen mit Contao Systemcheck12
Webspace und DateiberechtigungenLinux ist ein MehrbenutzersystemDateiberechtigungen haben drei Klassen:  Besitzer | Gruppe | Alle Es gibt drei mögliche Zugriffsrechte Lesen: 4 PunkteSchreiben: 2 PunkteAusführen: 1 PunktBeispiele 644: Besitzer darf lesen und schreiben | Gruppe und Alle nur lesen 755: Besitzer darf alles | Gruppe und Alle nur lesen und ausführen777: Alle dürfen alles. Einfach zu merken.
Contao und DateiberechtigungenContao benötigt Schreibrechte für seine eigene Dateien Problem:FTP-Benutzer ist Besitzer der Dateien (z. B. w0091763)Der Webserver hat einen anderen Benutzernamen  Häufig wwwrun oder nobodyContao wird vom PHP-Interpreter ausgeführtPHP als Apache-Modul: schnell, aber meist kein SchreibrechtPHP als (Fast)-CGI: Schreibrecht, aber etwas langsamer  SMH: Contao meldet sich zum Schreiben als FTP-Benutzer  an
WC: "Alles auf 777 – dann funzt das"Die 777 ist ein sehr schönes LangstreckenflugzeugAlle Passagiere und die Besatzung ...haben viel Beinfreiheitbefinden sich in einer sicheren UmgebungAuf dem Webspace ist die 777 ein Sicherheitsloch Alle Benutzer und die Skripte können...alle Dateien ändern und löschen alle Ordner mit "Kuckuckseier" bestücken
Versuchen Sie keinesfalls, das Problem durch eine Änderung der Dateiberechtigungen zu lösen! Contao System Check
Best Practice – Installation Der ideale WebspacePHP als Apache-ModulOhne SMH WebspaceumkonfigurierenPHP als FastCGIWebhoster fragen ContaoumkonfigurierenSafe Mode Hack aktivierenin localconfig.php
Inhaltsübersicht
LayoutLayout bestimmt das Erscheinungsbild der SiteStruktur der Seiten KopfbereichNavigationsbereiche Inhaltsbereiche FussbereichFarbschema grafische Elemente (Logo und Deko) Typographie
Der Contao RöntgenblickLayout analysieren
Layout analysierenWC: "Einfach mal loslegen..." Best Practice: "Think first, act then"Den Contao-Röntgenblick entwickelnUmsetzbarkeit eines extern gelieferten Layouts prüfenGrobe Aufteilung des Layouts in Bereiche#header #main#footer Finetuning: Bereiche weiter unterteilen
Kopfzeile (#header)Hauptspalte (#main)Fusszeile (#footer)
Kopfzeile (#header)Inhaltselement Text (#main)Inhaltselement Galerie (#main)Inhaltselement Text .g6 (#main)Inhaltselement Bild.g3 (#main)Inhaltselement Nachrichtenliste.g3 (#main)Inhaltselement  Tabelle.g6  (#main)Inhaltselement Text .g4 (#footer)Inhaltselement Text .g4 (#footer)Inhaltselement Text .g4 (#footer)Inhaltselement HTML Code .g12 (#footer)
Mit Wurzel und StartpunktSeitenstruktur
SeitenstrukturImmer definierenStartpunkt Sprachen-Fallback12
Ohne Startpunkt einer WebsiteMit Startpunkt einer Webseite
Ändern? Nur wenn es wirklich sein muss. Templates
"Template" hat sich im allgemeinen Contao-Sprachgebrauch für alles etabliert, was irgendwie mit Vorlage zu tun hat. Das offizielle Contao-HandbuchSeite 287Template – Definition
Template – Definition Contao-HandbuchBeispielAnderesWortFrontend-Templatemusic_academy.sqlWebsite-TemplateLayoutsfe_page.tplSeitentemplateViewsmod_newslist.tplModultemplatePartialslayout_short.tplSubtemplate
Das Frontend-Template Frontend-Template = Website Seitenstruktur ThemeSeitenlayouts Frontend-ModuleStylesheets Layout-Dateien in /tl_filesTemplates in /templatesInhalte Mitglieder und Benutzer Erweiterungen WC: Jedes Mal mit einer leeren Leinwand anfangen Best Practice: Theme oder Frontend-Template als Basis einsetzen
Das Seitentemplate WC: Jedes Mal ein eigenes Seitentemplate erstellen Best Practice Contao CSS-Frameworkfe_page.tpl einsetzenggfs. zusätzliche Layoutbereiche ggfs. Seitentemplate anpassenAnderes CSS-Framework  fe_page.tpl an HTML-Struktur anpassen Ein Seitentemplate pro Layout
Templates ändern (Worst Case)Templates im SystemordnerIm Editor öffnen und ändern. Speichern. Funktioniert. Scheinbar. NachteileUmständlich Gefährlich Nicht update-sicher
Template ändern (Best Practice) 21
Template ändern – Best Practice Templates update-sicher anpassen Backend-Modul Templates Neues Template erstellt Kopie im Ordner /templatesÄnderungen im Template kommentieren! Name des Templates ggfs. ändern Nach Contao-Update: Kopie mit Original vergleichenÄndern? Nur wenn es wirklich sein muss.
Inhaltsübersicht
FunktionenFunktionen: Interaktive Bestandteile der Site Automatisch generierte Navigationen Kontakt- und Bestellformulare Such- und Kommentarfunktionen Passwortgeschützte Bereiche Forum, Umfrage, Shop  u. v. m. Funktionen benötigen Programmierung Bordmittel oder Erweiterung Ausgabe per Frontend-Modul
Best Practice – Funktionen  Gewünschte Funktionen auflisten Prioritäten für Funktionen vergebenA = ohne geht nichtB = wäre schön, kann aber auch ohne losgehenC = irgendwann, irgendwie, irgendwo  Möglichkeiten zur Umsetzung analysieren Mit Bordmitteln von Contao? Bestehende Erweiterung geeignet? Erweiterung programmieren (lassen)? Frontend-ModuleAussagekräftige Namen vergebenHauptnavigation und Metanavigation
Also known as "Extensions"Best Practice: Erweiterungen
Best Practice – Erweiterungen Less is MorePflegeaufwandFunktionen mit Priorität A nur bewährte ErweiterungenEntwicklung gewährleistet? Erweiterungen beeinflussen sich gegenseitigkann man inaktiv stellenProbleme? ÜberlegenIm Forum suchen Im Forum fragen
Beispiel: Funktion "Breadcrumb"1. Versuch: Modul "Navigationspfad""Startseite" nicht am Anfang DIV mit ein paar Links darin – nicht sonderlich semantisch2. Versuch: Erweiterung [wf_extendedBreadcrumb]Perfekt: Mit "Startseite" und als ULnach Update Probleme mit UmlautenIm Forum gesucht und gefragt => Problem gelöst Und was ist nach dem nächsten Update?
Beispiel: Funktion "Breadcrumb"Mein Kompromiss für den AlltagVerzicht auf die ungeordnete Liste im HTML"Startseite" durch Änderung im Template mod_breadcrumb.tpl
Funktion: Die editierbare Fußzeile
Normale Fußzeile: HTML im Modul Der normale Weg Modul "Eigenes HTML" erstellen HTML pur reinschreiben
Editierbare Fußzeile: Versteckter ArtikelIm Artikelbaum versteckten Artikel erstellen Versteckten Artikel per Insert-Tag im Modul einbinden
Inhaltsübersicht
Inhalt. Content. Inhalt ist der Grund, warum Besucher kommen Vier Arten von Content Text Bilder Audio Video Ein Content-Management-System sollte die Verwaltung von Inhalt vereinfachen ermöglicht die Pflege von Inhalt ohne technische Kenntnisse
Inhaltselemente benutzenInhalte erstellen
Inhalte erstellen – Beispiel
Inhalte erstellen (Worst Case)Alles in ein Elementschlecht zu pflegenfehleranfälligFormatierung schwierigTabellenBilder aber oft Gewohnheit
Inhalte erstellen (Best Practice)Divide et imperaInhaltselementebenutzenElement für 1. ÜberschriftEinteilungnachInhaltFormatierung einfacherTabellen / Bilder per Fernsteuerung
Dateiverwaltung mit SystemSystem – Dateiverwaltung
Best Practice: Dateiverwaltung Konsistente Schreibweise von NamenKleinbuchstaben keine Umlaute und Sonderzeichen keine Leerstellen stattdessen Unter- oder BindestricheAussagekräftige Dateinamenproduktname.jpg ist besser als DSC_00234.jpg
Best Practice: Ordnerstruktur Ordnerstruktur abhängig vom Einzelfall Anforderungen bezüglich Inhalte Anforderungen bezüglich Benutzer
Inhaltsübersicht
Everybody wants to build and nobody wants to do maintenance. Kurt VonnegutNach dem Launch
Wartung – BackupMySQL-Datenbank mit allen Daten SQL-Export mit phpMyAdmin Erweiterung [BackupDB]Dateien und Ordner auf dem Webspaceper FTP Besonders wichtig sind im Ordner system/config/ localconfig.php dcaconfig.phplangconfig.php initconfig.php der Ordner tl_files der Ordner templates Tools vom Webhoster?
Wartung – Update Das Live Update Dienstleistung von iNetRobotsEine Live Update ID: ca. 9,90 Euro für eine Domain und ein JahrMehrere Domains günstiger: z. B. 10 Domains = plus 16 Euro Erweiterung [easyupdate]Manuelles Update per FTP Contao-ZIP entpacken Contao-ZIP vorbereiten Konfig-Dateien löschen /templates/ und /tl_files/ löschen Contao-ZIP hochladenInstall-Tool starten
Wartung – Statistiken (1) Erweiterung [visitors] BesucherzählerZugriffszähler
Wartung – Statistiken (2) Piwik - Open source web analytics Installation auf dem eigenen Webspace Download von piwik.org Integration in Contao mit Erweiterung [PiwikTrackingTag]
Wartung – Statistiken (3) Google AnalyticsIntegration in Contao einfach Kostenlos: Daten liegen auf Googles Server Kostenpflichtig: Der Kaffee beim Besuch des Datenschutzbeauftragen
Vielen Dank für Ihre Aufmerksamkeit.道ck2011.think-contao.de

"Best Practices" in Contao

  • 1.
    Workshop»Best Practice« mitContaoThomas Weitzel think-contao.dePeter Müller pmueller.de道2. Juni201115 bis 17 Uhr
  • 2.
  • 3.
    Tao道Der Weg. DerSinn. Das Prinzip.
  • 4.
  • 5.
    Kommt drauf an...Kommtdrauf an...Wie macht man das am Besten?Kommt drauf an...Best PracticeKommt drauf an...
  • 6.
    Worst CaseWorst Case:So sollte man es definitiv nicht tunDer metaphorische „Griff ins Klo“ Wir beginnen im Folgenden oft mit einem „WC“Und zeigen dann, wie man sauber aus der Sache rauskommt.
  • 7.
    Das Projekt "Website"im Überblick Installation1LayoutFunktionenInhalte234Wartung5
  • 8.
  • 9.
    Webspace testen mitContao Systemcheck12
  • 10.
    Webspace und DateiberechtigungenLinuxist ein MehrbenutzersystemDateiberechtigungen haben drei Klassen: Besitzer | Gruppe | Alle Es gibt drei mögliche Zugriffsrechte Lesen: 4 PunkteSchreiben: 2 PunkteAusführen: 1 PunktBeispiele 644: Besitzer darf lesen und schreiben | Gruppe und Alle nur lesen 755: Besitzer darf alles | Gruppe und Alle nur lesen und ausführen777: Alle dürfen alles. Einfach zu merken.
  • 11.
    Contao und DateiberechtigungenContaobenötigt Schreibrechte für seine eigene Dateien Problem:FTP-Benutzer ist Besitzer der Dateien (z. B. w0091763)Der Webserver hat einen anderen Benutzernamen Häufig wwwrun oder nobodyContao wird vom PHP-Interpreter ausgeführtPHP als Apache-Modul: schnell, aber meist kein SchreibrechtPHP als (Fast)-CGI: Schreibrecht, aber etwas langsamer SMH: Contao meldet sich zum Schreiben als FTP-Benutzer an
  • 12.
    WC: "Alles auf777 – dann funzt das"Die 777 ist ein sehr schönes LangstreckenflugzeugAlle Passagiere und die Besatzung ...haben viel Beinfreiheitbefinden sich in einer sicheren UmgebungAuf dem Webspace ist die 777 ein Sicherheitsloch Alle Benutzer und die Skripte können...alle Dateien ändern und löschen alle Ordner mit "Kuckuckseier" bestücken
  • 13.
    Versuchen Sie keinesfalls,das Problem durch eine Änderung der Dateiberechtigungen zu lösen! Contao System Check
  • 14.
    Best Practice –Installation Der ideale WebspacePHP als Apache-ModulOhne SMH WebspaceumkonfigurierenPHP als FastCGIWebhoster fragen ContaoumkonfigurierenSafe Mode Hack aktivierenin localconfig.php
  • 15.
  • 16.
    LayoutLayout bestimmt dasErscheinungsbild der SiteStruktur der Seiten KopfbereichNavigationsbereiche Inhaltsbereiche FussbereichFarbschema grafische Elemente (Logo und Deko) Typographie
  • 17.
  • 18.
    Layout analysierenWC: "Einfachmal loslegen..." Best Practice: "Think first, act then"Den Contao-Röntgenblick entwickelnUmsetzbarkeit eines extern gelieferten Layouts prüfenGrobe Aufteilung des Layouts in Bereiche#header #main#footer Finetuning: Bereiche weiter unterteilen
  • 21.
  • 22.
    Kopfzeile (#header)Inhaltselement Text(#main)Inhaltselement Galerie (#main)Inhaltselement Text .g6 (#main)Inhaltselement Bild.g3 (#main)Inhaltselement Nachrichtenliste.g3 (#main)Inhaltselement Tabelle.g6 (#main)Inhaltselement Text .g4 (#footer)Inhaltselement Text .g4 (#footer)Inhaltselement Text .g4 (#footer)Inhaltselement HTML Code .g12 (#footer)
  • 23.
    Mit Wurzel undStartpunktSeitenstruktur
  • 24.
  • 25.
    Ohne Startpunkt einerWebsiteMit Startpunkt einer Webseite
  • 26.
    Ändern? Nur wennes wirklich sein muss. Templates
  • 27.
    "Template" hat sichim allgemeinen Contao-Sprachgebrauch für alles etabliert, was irgendwie mit Vorlage zu tun hat. Das offizielle Contao-HandbuchSeite 287Template – Definition
  • 28.
    Template – DefinitionContao-HandbuchBeispielAnderesWortFrontend-Templatemusic_academy.sqlWebsite-TemplateLayoutsfe_page.tplSeitentemplateViewsmod_newslist.tplModultemplatePartialslayout_short.tplSubtemplate
  • 29.
    Das Frontend-Template Frontend-Template= Website Seitenstruktur ThemeSeitenlayouts Frontend-ModuleStylesheets Layout-Dateien in /tl_filesTemplates in /templatesInhalte Mitglieder und Benutzer Erweiterungen WC: Jedes Mal mit einer leeren Leinwand anfangen Best Practice: Theme oder Frontend-Template als Basis einsetzen
  • 30.
    Das Seitentemplate WC:Jedes Mal ein eigenes Seitentemplate erstellen Best Practice Contao CSS-Frameworkfe_page.tpl einsetzenggfs. zusätzliche Layoutbereiche ggfs. Seitentemplate anpassenAnderes CSS-Framework fe_page.tpl an HTML-Struktur anpassen Ein Seitentemplate pro Layout
  • 31.
    Templates ändern (WorstCase)Templates im SystemordnerIm Editor öffnen und ändern. Speichern. Funktioniert. Scheinbar. NachteileUmständlich Gefährlich Nicht update-sicher
  • 32.
  • 33.
    Template ändern –Best Practice Templates update-sicher anpassen Backend-Modul Templates Neues Template erstellt Kopie im Ordner /templatesÄnderungen im Template kommentieren! Name des Templates ggfs. ändern Nach Contao-Update: Kopie mit Original vergleichenÄndern? Nur wenn es wirklich sein muss.
  • 34.
  • 35.
    FunktionenFunktionen: Interaktive Bestandteileder Site Automatisch generierte Navigationen Kontakt- und Bestellformulare Such- und Kommentarfunktionen Passwortgeschützte Bereiche Forum, Umfrage, Shop u. v. m. Funktionen benötigen Programmierung Bordmittel oder Erweiterung Ausgabe per Frontend-Modul
  • 36.
    Best Practice –Funktionen Gewünschte Funktionen auflisten Prioritäten für Funktionen vergebenA = ohne geht nichtB = wäre schön, kann aber auch ohne losgehenC = irgendwann, irgendwie, irgendwo Möglichkeiten zur Umsetzung analysieren Mit Bordmitteln von Contao? Bestehende Erweiterung geeignet? Erweiterung programmieren (lassen)? Frontend-ModuleAussagekräftige Namen vergebenHauptnavigation und Metanavigation
  • 37.
    Also known as"Extensions"Best Practice: Erweiterungen
  • 38.
    Best Practice –Erweiterungen Less is MorePflegeaufwandFunktionen mit Priorität A nur bewährte ErweiterungenEntwicklung gewährleistet? Erweiterungen beeinflussen sich gegenseitigkann man inaktiv stellenProbleme? ÜberlegenIm Forum suchen Im Forum fragen
  • 39.
    Beispiel: Funktion "Breadcrumb"1.Versuch: Modul "Navigationspfad""Startseite" nicht am Anfang DIV mit ein paar Links darin – nicht sonderlich semantisch2. Versuch: Erweiterung [wf_extendedBreadcrumb]Perfekt: Mit "Startseite" und als ULnach Update Probleme mit UmlautenIm Forum gesucht und gefragt => Problem gelöst Und was ist nach dem nächsten Update?
  • 40.
    Beispiel: Funktion "Breadcrumb"MeinKompromiss für den AlltagVerzicht auf die ungeordnete Liste im HTML"Startseite" durch Änderung im Template mod_breadcrumb.tpl
  • 41.
  • 42.
    Normale Fußzeile: HTMLim Modul Der normale Weg Modul "Eigenes HTML" erstellen HTML pur reinschreiben
  • 43.
    Editierbare Fußzeile: VersteckterArtikelIm Artikelbaum versteckten Artikel erstellen Versteckten Artikel per Insert-Tag im Modul einbinden
  • 44.
  • 45.
    Inhalt. Content. Inhaltist der Grund, warum Besucher kommen Vier Arten von Content Text Bilder Audio Video Ein Content-Management-System sollte die Verwaltung von Inhalt vereinfachen ermöglicht die Pflege von Inhalt ohne technische Kenntnisse
  • 46.
  • 47.
  • 48.
    Inhalte erstellen (WorstCase)Alles in ein Elementschlecht zu pflegenfehleranfälligFormatierung schwierigTabellenBilder aber oft Gewohnheit
  • 49.
    Inhalte erstellen (BestPractice)Divide et imperaInhaltselementebenutzenElement für 1. ÜberschriftEinteilungnachInhaltFormatierung einfacherTabellen / Bilder per Fernsteuerung
  • 50.
  • 51.
    Best Practice: DateiverwaltungKonsistente Schreibweise von NamenKleinbuchstaben keine Umlaute und Sonderzeichen keine Leerstellen stattdessen Unter- oder BindestricheAussagekräftige Dateinamenproduktname.jpg ist besser als DSC_00234.jpg
  • 52.
    Best Practice: OrdnerstrukturOrdnerstruktur abhängig vom Einzelfall Anforderungen bezüglich Inhalte Anforderungen bezüglich Benutzer
  • 53.
  • 54.
    Everybody wants tobuild and nobody wants to do maintenance. Kurt VonnegutNach dem Launch
  • 55.
    Wartung – BackupMySQL-Datenbankmit allen Daten SQL-Export mit phpMyAdmin Erweiterung [BackupDB]Dateien und Ordner auf dem Webspaceper FTP Besonders wichtig sind im Ordner system/config/ localconfig.php dcaconfig.phplangconfig.php initconfig.php der Ordner tl_files der Ordner templates Tools vom Webhoster?
  • 56.
    Wartung – UpdateDas Live Update Dienstleistung von iNetRobotsEine Live Update ID: ca. 9,90 Euro für eine Domain und ein JahrMehrere Domains günstiger: z. B. 10 Domains = plus 16 Euro Erweiterung [easyupdate]Manuelles Update per FTP Contao-ZIP entpacken Contao-ZIP vorbereiten Konfig-Dateien löschen /templates/ und /tl_files/ löschen Contao-ZIP hochladenInstall-Tool starten
  • 57.
    Wartung – Statistiken(1) Erweiterung [visitors] BesucherzählerZugriffszähler
  • 58.
    Wartung – Statistiken(2) Piwik - Open source web analytics Installation auf dem eigenen Webspace Download von piwik.org Integration in Contao mit Erweiterung [PiwikTrackingTag]
  • 59.
    Wartung – Statistiken(3) Google AnalyticsIntegration in Contao einfach Kostenlos: Daten liegen auf Googles Server Kostenpflichtig: Der Kaffee beim Besuch des Datenschutzbeauftragen
  • 60.
    Vielen Dank fürIhre Aufmerksamkeit.道ck2011.think-contao.de