Dokumentation der Sessions vom TYPO3camp Munich 2017
##Samstag, 9. September 2017
###[Opening session]
* #t3[camp]rookies Andreas Wolf
KE Search
Definition of types through class function
KE Search is capable of multiplatform handling
* s. Doku / Bsp. Extension "Search\_hooks" bei Kennziffer \url{https://extensions.typo3.org/extension/ke\_search\_hooks/}
* Indexer registrierne (Typ, Icon, Anzeige)
* Parameter-Array übergeben => Erstellt im BE neuen Typ zur Auswahl
* customIndexer: wird aufgerufen -> main()
* Man kann weitere Linkparameter für Aufruf der Zielseite angeben
* Es gibt einen Log (undokumentiert), hat auch Hook, um Log zu erweiternj
* Eignet sich auch für alle möglichen externen Quellen
* Z.B. Sitemap holen von externer Site (xml oder json),, einzeln aufrufen und indexieren lassen.
* Beispiel: allplan.com (initialer Aufwand ca. 2 Tage, zzgl. Indexer (n x 2h))
* ke\_search: Gute Konfig für Priorisierung
* Gibt viele Hooks => suchen und nutzen!
* Trick: Vor dem indexieren können Begriffe manipuliert werden
* Potentielles Problem: RealURL-URL-Varianten -> Checken, ob Index sich aufbläht
* Bei externen Quellen per Hook möglich, den Text vorher zu parsen, um z.B. bestimmte Strings zu priorisieren (<h1> wrappen o.ä.) oder aus html-Seiten den relevanten Inhalt rauszufiltern.
* KE\_Search nutzt intern MySQL Fulltext-Index (s. Doku dort)
#Eigene Plugins für den CKEditor
am Beispiel einer Multilinks-Extension
#Solr and Fluid
from Timo Hund
You can support the continued development of the Solr extensions by becoming a partner, see \url{https://www.typo3-solr.com/en/sponsors/becoming-a-sponsor/}
Default before < Ext. solr 7.0.0
Using Markers to insert something in the FE
QUESTION
* **For Old Version of Solr 5.x you have to use a Viewhelper to use it**
* **If some tell that they need a future if the prio and the money are there it could be insert in the extension**
Now > Ext solr 7.x
You can use a MVC \& DDD Pattern
You can use Frameworks that can help you to create FE output in fast way => Fluid
The searchAction passes the SearchResultSet to the view
the SearchResultSet can be used to access results, facets, ...
##**Standard solr - **Faceting types
Facets help users to narrow down or filtering the results to find better was they search for
**Content Types**
example -> pages
**Ages**
example -> all what older as 3 days
###options
Query Group => page, News ect.
Flat list of selectable otpins
Flat list based on solr querys => days, last week
###hierachy
Nested tree of options
###numericRange
Numerica range between a min and max value => Price, wodth
###dateRange
Date range between a start and end date => created after this date
##Resources
###Custon Templates
Fluid supprts fallbacksñ
###Custom Translations
###Custom Viewhelpers
Links:
Slides: \url{https://www.slideshare.net/timohund/use-fluid-templating-for-your-typo3-search}]
solrlfuidexample: \url{https://github.com/TYPO3-Solr/ext-solrfluidexample} (Shows how to use custom templates, partials and layouts)
Documetnartion: \url{https://www.typo3-solr.com/en/solr-for-typo3/documentation/} All documentations as PDF
#RESTful APIs mit TYPO3
Plugin mit JSONView und Controller, der Endpunkte abruft
Endpunkt => Welches Model will ich bearbeiten, welche Methode kommt rein?
Ausgabe als JSON statt als Fluid-Template
Mapping der Plugin-Endpunkte per Realurl
Ein-/Ausgabe als JSON
Die Restler Extension für TYPO3 erlaubt das Mapping von URLs auf Controller-Methoden durch PHP Annotations.
* @url GET data/{sessionId}/{userId}
* @param string $sessionId
* @param integer $userId
* @return array\url{https://github.com/Luracast/Restler}
Crawler
* V8: integrate dev branch: version constraint = dev-TYPO3\_8
* Activate extension
* Processing instruction parameters
* \&L=[|1|2|..]
#Bildoptimierung
von: Felix
Websites werden immer bildlastiger - Messungen 2011-heute
2011 ca. 400kb Bildmaterial
heute ca. 1,6 MB Bildmaterial
Falsche Auflösung / Falsches Bildformat / Falsche/keine Komprimierung
Buchtipp "High Performance Images" \url{http://shop.oreilly.com/product/0636920039730.do}
#Budgetierung von Projekten
Dreieck Zeit - Leistung - Kosten
Risk Share: Bei Festpreisprojekten Zeitüberschreitung möglich. Für die Zeiten, die über dem geplanten Zeitraum liegen zahlt der Kunde, aber nur einen wesentlich geringeren Preis, der unter unseren eigenen Kosten liegt.
Kunde und Agentur sind fürs Budget verantwortlich
Wenn Budget gekürzt wird, muß der Kunde auch Kürzung der Leistungen akzeptieren
Agiler Festpreis mit Risk-Share
Bullet-Points für Kunden
Angebote nicht als Liste von Features sondern Benefit für den User.
Abrechnung nach Aufwand
Monitoring von Zeitaufwand Projektfortschritt
Bei Abweichungen frühzeitig gegensteuern, Kommunikation mit Kunde
Mangelnde Kommunikation größtes Prolbem
Kunden müssen Entwicklungsprozess verstehen
#Vagrant
Mögliche Projekte mit verschiedenen Konfigurationen gleichzeitig fahren
PuPHPet => Vagrant boxen generieren. Boxen von PuPHPet abhängig, wenn Versionen dort verschwinden läuft Box nicht mehr.
Mit Ansible kann gewünschter Sollzustand des Servers beschrieben werden.
#Deployment von GIT -> TER
##Projekt-Deployment
* Pipeline definieren, Bsp.: Build, Layout, Deploy
* Jeder Stage eigener Docker Container
* \url{https://git-t3o.typo3.org/t3o/ter/blob/develop/.gitlab-ci.yml}
* Artifacts werden definierte Zeit gespeichert, um kurzzeitig auch statisch drauf zugreifen zu können.
* Man Templates verwenden, um das für andere Schritte zu referenzieren
* Gitlab runner, die bestimmte Prozesse auf unterschiedlichen Servern sind und von Gitlab aufgerufen werden
* Gitlab runner werden getagged und über Tags aufgerufen
* Yaml-Config ist public im GIT
* TER-Projekt: Dev -> Master -> Staging -> live (Manuell)##Extension-Deployment ins TER
* \url{https://github.com/spoonerWeb/be\_secure\_pw/blob/master/.Build/ci/.gitlab-ci.yml}
* Testing Framework-Empfehlung: Nimut
* Automatisch in nächsten Stage wenn alle unittests ok
*
#Docker
Why do we need docker?
Docker is a layered software stack
docker-compose helps orchestrate multiple docker containers
docker-compose.yml defines services
Context of service specifies directory of service's Dockerfile
depends\_on => Specifies ordering of containers, dependend containers run after base containers
volumes\_from
docker-compose.override.yml, docker-compose.dev.yml and docker-compose.prod.yml allow to differentiate between development and production
If you use docker or vagrant depends on the project
If you deploy to a customer who manages everything himself, use vagrant. It's easier to set up and you just give the finished projects and the prerequisites to the customer to deploy himself.
If you deploy to your own server, use docker, as the deployment for dev, test, production can be automated
Code from a presentation: \url{https://github.com/InvisibleKind/docker-typo3}
#sf\_register
\url{https://docs.google.com/presentation/d/1QCMr8Gj2QzQdFiFZbSSBebWy-njSlOq4WbhE\_ph51Lg/edit?usp=drivesdk}
#Schnittstelle Design/Entwicklung
##Typische Reibungspunkte
Übergabe Asserts => Gesammelte Übergabe als ZIP-Datei. Manuelles Assert-Management
Komponenten und UI-Elemente => Manuelle Styleguides
Schriften => Mail mit TTF-Datei
Abstände und Raster => Ausdrucken aller Entwürfe, vollständige Bemaßung
Farbwerte => Hexwerte E-Mail, Pantonefarben
Darstellung auf Mobilgeräten => Gestaltung für die 3-5 wichtigsten Gerätegrößen
Unstruktrurierte Kommunikationskanäle
##Projektablauf
Keine strikte Trennung - Überschneidung und Interdisziplinartität gewünscht
##Prototyping Ausprägungen
Scribbles
Living Prototpye
Flow Charts
Feasability Study
Wireframe (UXPin, axure, invision)
##Zusammenfassung
Unteschiedliche Projekte erfordern unterschiedliche Ausprägungen von Prototyping
Prototyping spart Zeit, Nerven und Ärger und ist ESSENTIELL!
Diskussionsgrundalgen für Konzeptfragen und Funktionalitäten
##Auf zu neuen Welten
Technische Entwicklung hat in den letzten 3-5 Jahren massiv an Fahrt aufgenommen.
Bisherige Werkzeuge für digtale Gestaltung
Photoshop - Bildbearbeitung
Indesign - Printlayout
Illustrator - Komplexe Vektorgrafiken
##Neue Werkzeuge
Sketch - Screendesign
Figma - Kollboratives Screendesign
Experience Design - Screendesign
Sketch
Zugeschnitten auf UI-Design
Vereint Vektoren und Bitmaps
Symbole und modulare Gestaltung
Starker Plugin-Supprt for+ Schnittstellen
Sketch + Craft
Sektch Plugins
* Library
* Duplicate
* Gestaltung mit Dummy-Inhalten
Modulare Gestaltung
Atomic Design - Ansatz von Brad Frost
Atome sind die kleinsten Gestaltungselemente. Daraus werden Moleküle, Organismen und schließlich Seiten aufgebaut
Design-System als Notwendigkeit (komplexität von UI-Elemente hat massiv zugenommen)
Modulare Gestaltung
Atomic Design - Methodik
Pattern Library - Werkzeuge
-> Design System
Neue Werkzeuge für Design-Kommunikation
InVision - Clik-Dummy
Marvel - CLik Dummy
Framer - Hi-Fi Prototyp, Javascript Bibilothek für Prototyping
Atomic - Hi-Fi Design
Aufgepasst
Prototyping muss schneller gehen als reguläre Implementierung
Optimierte Design-Kommunikation
Sketch => Invision
Entwicklung
* Design-Übergabe
* Zeplin - Living Styleguide
* SC5
Start building your own UI Process!
#Baukastensystem
Jo Hasenau
z.B WrapBootstrap als Basis
Extension "Themes": Noch verwendets fast niemand
Beispiel: Ipresentyou.de:
* Einfach Website im FE zusammenbauen
* Unterschied zu FE-editing: Ziel ist, sehr einfache Sites durch Laien per Drag \& drop bauen zu lassen
* Evtl. Beispiel: Extension von den GRÜNEN
* Themes läuft theoretisch ohne Gridelements, aber für Container braucht man GE
* bootstrap theme liefert kpl. TS für Aufbau mit
* Klassen bei Config der durch Themes hinzugefügten Felder in tt\_content sind generisch und unabhängig vom Framework. Daher könnte Framework gewechselt werden.
* => Mapping zwischen den Klassen in der Extension
*
#TYPO3 und Composer
##Basics
* wir installieren TYPO3 und alle Extensions per Composer -> das komplette Projekt braucht eine composer.json
* man kann die composer.json von Hand anlegen, aber besser ist eine fertige Distribution; s. \url{https://github.com/TYPO3/TYPO3.CMS.BaseDistribution}
* Vorteil: Web-Root wird in einen Unterordner gelegt, damit ist composer.json etc. nicht online verfügbar (Sicherheitsrisiko!)
##Hands on
Wie man eigene Extensions einbindet
mkdir t3cm
composer create-project typo3/cms-base-distribution t3cm/ 8.7.0
cd t3cm
composer require georgringer/news
composer require typo3-ter/static-info-tables
Wenn TYPO3 mit Composer installiert wird, läuft es im Composer-Mode. Dann können keine Extensions per Extension Manager installiert werden.
###Für lokale Extensions
Extension anlegen
mkdir demoext
cd demoext
touch composer.json
* { "type": "typo3-cms-extension", "name": "andreaswolf/demoext", "description":"Awesome demo extension" }
Extension in einem Ordner außerhalb des Web-Root ablegen und path-Repository verwenden
-> in der composer.json im Root folgenden Eintrag hinzufügen:
* { **"type"**: **"path"**, **"url"**: **"./demoext/" **}
*composer require andreaswolf/demoext:@dev
@dev ist nötig. weil die Extension keine Versionsnummer hat und damit für "nicht stabil" gehalten wird -> das interessiert uns hier aber nicht, weil die Extension ja mit dem restlichen Projekt versioniert wird
Alternative: Man setzt den branch-alias in der Extension.
\url{https://wiki.typo3.org/Composer}
###Änderungen an offiziellen Extensions/dem Core/anderen Paketen über Patches
* Composer-Patches-Plugin installieren
* \url{https://github.com/netresearch/composer-patches-plugin}
* Meta-Paket in der composer.json:
* "repositories": [
* {
* "type": "package",
* "package": {
* "type": "metapackage",
* "name": "andreaswolf/projectpatches",
* "version": "1.0.3",
* "require": {
* "netresearch/composer-patches-plugin": "dev-master@dev"
* },
* "minimum-stability": "dev",
* "extra": {
* "patches": {
* "helhum/realurl": [
* {
* "url": "./patches/realurl-domain-language.patch"
* }
* ]
* }
* }
* }
* }
* ]
* composer require andreaswolf/projectpatches
*
*
#TYPO3 Forms
* != Form Framework --> verstehe ich nicht, es geht hier doch um EXT:form aus dem Core, insofern ist es das Form Framework
* Warum neu?: Alte Ext. nicht mehr gut genug zum refactoren
* Yaml statt TS
* Bsp.: Feedback-Formular:
* Im BE Wizard mit advanced Settings
* Konfig komplett in yaml, nicht in DB
* Viel Potential: S. Doku und config Optionen!
* Ähnlich wie in TS einfach einzelne Elemente überschreiben
* Konkrete Einstellungen:
* Allowedextensionpath
* Lieber nicht im BE löschen, da ja nicht in DB, sondern wirklich futsch
* Es gibt auch FE-Backend Config
* Workspaces: Änderung bestehendes Formular nicht als preview möglich (da ja nicht in DB)
* Lokalisierung noch nicht ausgereift.
* ist eines der großen Themen für TYPO3 v9
* Konzept sollte klar sein: Bei jeder Änderung durch Redakteure wird die yaml-Datei überschrieben. Wenn Datei also als Code definiert und in GIT, dürfen es Redakteure nicht ändern. Wenn Red. ändern können sollen, dann halt nicht versionieren und wie content behandeln.
* Finisher
* Save to database, etc.
* Prinzipiell beliebige Klasse, die alles Mögliche machen kann.
* Formulardaten: in yaml/options sind Felder definiert. Die Namen entsprechen Der Items im übergebenen Objekt
* Je Finisher ein Identifier
* Name für Editor => Auswählbar im Modul im BE
* Beispiel: Success-Fin. -> Fluid template rendern
* In FormDefinitionOverrides kann in TS überschrieben werden
* Serverseitige Feldübergreifende Validierung würde man im Finisher machen
* Clientseitige Validierung nichts vorbereitet, muss man immer selbst machen.
* Der Core will sich aktuell nicht auf ein Frontend Validierungs-Framework festlegen.
* Es wird mittels HTML 5 Features clientseitig validiert (required, type specific checks).
* Persönlicher Eindruck:
* Extrem leistungsfähiges Dev-Tool für komplexe Anwendungen
* Ansonsten: Zum Glück gibt es Powermail
* Diesen persönlichen Eindruck kann ich nicht ganz teilen. Sicherlich kann noch viel optimiert werden (Language Handling, Conditions etc.). Aber der neue Form Editor ist ein Meilenstein. Die Extension ist super jung und nicht vergleichbar mit powermail, was bereits seit Jahren am Markt ist und weiterentwickelt wird. Es ist aktuell eher als eine Verschmelzung aus formhandler und powermail zu sehen und hat nicht das Ziel, powermail in seiner Gesamtheit zu ersetzen. So wird das Form Framework bspw. nie Core-seitig Marketingauswertungen integrieren.
#Zuverlässigkeit und Nachhaltigkeit für TYPO3-Extensions
##Frei wie in "Freie Rede", nicht wie in "Freibier"
\url{https://coders.care/de/blog/artikel/}
Freie Software =! Freeware
GPL bestärkt Freiheit, nicht Kostenlosigkeit
GPL Widerspruch zu kommerziellen Lizenzen
"Freemium" funktioniert nur bei neuem Code
Verkauf von GPL-Software ist nicht nachhaltig
##Treffen sich drei Deutsche .. ... gründen sie einen Verein
* Gemeinnützige Bank für TYPO3-Projekte
* Hauptbudget für Core Development
* Inkubator für TYPO3-Extensionprojekte
* Zu viel Bürokratie und Zeit
* Zu wenig Zeit, um Arbeit zu finanzieren
GPL § 4 "You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee."
##Kleinvieh macht auch Mist.
* DIe Crowd braucht eine kritische Masse
* Kampagnen verschlingen Budgets
* Erreiche das Ziel, sonst gibt's kein Geld
* Benötigt andere Quellen nach Erstfinanzierung
* Kickstarter für TYPO3-Extensionprojekte
##Zuverlässigkeit
* Eine Extension, die mit bestimmter Funktion problemlos mit dem TYPO3-Core funktioniert
* Im Zusammenspiel mit anderen Extensions
* Bugfixes und Wartungs-Releases
* Sicherheit und Qualitätskontrollen
* Kompatible mit bis zu 3 TYPO3-Versionen
* Dasselbe gilit für PHP, xxSQL und andere
* Neue Features auf dem Stand der Technik
* Zusammenarbeit mit anderen Extensions
* Offenes Ohr für Bedürfnsse des Markts
##Responsiveness
* Ticketstystem für Bugs und Features
* Schnelle Rückmeldung bei Notfällen
* Kompetenten Erfassung der Notfalldaten
* Vernünftige und aktive Kommunikation
* Hohe Verfügbarkeit, wenn nötig 24/7
Müssen von Projekten leben können
Fokus auf Projektmanagement und Integration
Oft wenig bis gar kein Entwicklungswissen
Schwer, verwendete Extensons zu kontrollieren
Zwickmühle zwischen Entwicklern und kunden
##Kunden
* Brauchen eine zuverlässige, beständige Lösung
* Anwendung und Inhalts-Bearbeitung im FOkus
* Wenig WIssen über Entwicklung/Projektmgmt.
* Schwer, verwendete Extensions zu kontrollieren
* Schwer mit Entwicklern zu kommunizieren
Es ist Vertrauenssache .. und keine Frage des Preises
##Service Level Agreements
für TYPO3-Extensions
Berücksichtigt Entwickler und Agenturen genauso wie Kudnen und Anwender
Stellt 5 verschiedene Service-Level bereit
Von kleiner Firma bis großen Unternehmen
Stundensätze sind durch das Level festgelegt
##Vertragsverhandlungen
Aktuell machen wir Verträge mit Entwickern
In enger Zusammenarbeit mit TYPO3 GmbH
Wir teilen uns Werkzeuge und Prozesse
SLAs inder der Begutachtungsphase durch Anwalt
Immer noch offen für Vorschläge
##Unser Ziel
Bug-Fixing und Erstellung neuer Features
Zuverlässige Dienste für Unterzeichner
Unterstützt Partner mit qualifiziertem Team
Managt Verträge und Kommunikation
Schafft solide Vertrauensbasis für TYPO3
##Was wir nicht machen werden
Konzeptionelles Design und Integratorarbeiten
Komplettservice für Agenturprojekte
Core-Arbeit - aber Unterstützung mit Budget
Andere Entwicklung, außer TYPO3-Exensions
Kickstarten neuer Extensions
\url{https://coders.care/blog/overview/}
###Sonntag, 10. September 2017
#Scrum
* Arbeit in Intervallen (Sprints), an deren Ende jeweils immer ein potenziell auslieferbares Produkt steht.
* Daily Meeting
* Sprint Planning
* Review (Wer es gemacht hat präsentiert das Ergebnis)
* Retrospective (Was ist gut/schlecht gelaufen?)
* Backlog (Konzept) wird während der Entwicklung spezifiziert/erweitert.
* 3 Rollen: Entwickler, Product Owner (Kunde), Scrum Master (Leading Servant)
##Higher success rate of IT projects because of
* Focus on business value
* Agiler Festpreis => Preis und Zeit fest, Leistung variabel
* Die wichtigsten Dinge werden zuerst erledigt, die unwichtigsten könnten wegfallen
* Cooperation with customer
* Reduction of communication losses
*
* Clear and short rules
* Performance increase in team
* Durch kurze Zyklen, Reviews und Retrospective laufende Verbesserung möglich
*
##Some experience
* Team starts to improve significantly
* ... after 4-5 sprints
* Customer starts to understand complexity of stories
* ... after 4-5 sprints
* Recurring short developmen tcycle with deliverable roduct keeps development focus
* Arbeiten werden nicht auf die lange Bank geschoben
* Agile background allows to adopt and integrate changes
##Where to scrum
* Agile project supported by customer
* Dev-Team with at least 3 persons
* Project runs "months"
* Complete project specification / classic waterfall project
* Dev-Team with at least 3 prersons
* Project runs "months"
* => "Scrum but" classic project to the outside, but internal Scrum with only internal PO
* Dev-"Team" only 1 or 2 persons
* Short overall project time of some weeks
* => Scrum makes no sense
##BUT...
* Focus on business value
* Define possible target groups
* Define tasks not in a technicial way
* Business value focused tasked allow easier priorization
* (+) Customer describes what he really needs
* (+) Dev-Team can use ther expertise
* (+) Result better fits the project target
##Estimation poker
* Human can estimate relative but not absolut
* compare tasks with each other
* don't think in hours/days but in relative "values"
* Estimate all together (Dev-Team with customer)
* (+) Common understanding of task
* (+) Common understanding of complexity
* (+) different viewpoints reduce risk of misestimation
##Short "sprints" with Go-Live ready product
* Milestones that result in deliverable product
* Aprroval in regular periods
* (+) Keeps focus on result
* (+) Reduces stress in project end
* (+) target still in mind of everybody
##Retrospective
Project review after the project
Milestone retrospective
-> what went fine, what went wrong
-> how to get rid ot the "wrongs"
-> strenghten the good things
##What about remote teams???
###Remote team means...
* you just can go in the room next door
* More complex communication
* Intensiving individual "drawbacks"
* danger of hiding
* Complexity of team building
###Ideas..
* Invest in remote communication (Hardware,Bandwith)
* Rotation of people (offsite / onsite)
* Focus on strong methodology
* In case of even dstributed teams double the roles into "assistant" subroles
#TYPO3 für Newbies
von Christina Hauk @chauk und Conny Eder @connyeder
Was können wir tun, um #t3rookies den Einstieg in TYPO3 zu erleichtern?
- Guide für Newbies als Doku von offizieller Seite
- (interne) Guidelines definieren
* - aktive Kommunikation- Mentor bereitstellen
- regelmäßiger Wissensaustausch / Vorträge
- Newbies an die Community heranführen
Weitere Diskussion: TYPO3 Slack #t3onboarding
#Testing
Unit, functional, acceptance testing
Unit tests liegen im Tests/Unit ordner
Controller und Domain model tests nur das, was vom Extension builder generiert wurde.
Bei Domain Models nur Unit-Tests für komplexe Getter/Setter
Unit-Tests für Services
Acceptance tests mit Codeception
Nimut testing framework
TYPO3 Console
Installation mit Composer
Selenium mit Google Chrome driver
Composer dependencies cachen, damit sie nicht bei jedem stage neu gezogen werden
Stages:
* PHPCS
* phplint
* unit tests
Gitlab mit Docker verwenden
Functional tests => mysql oder andere Abhängkeiten als Services (Docker container) einbinden
Acceptance tests => selenium/standalone-chrome
Trusted Host test ausschalten: typo3cms configuration:set SYS/trustedHostpattern ".*"
Öffentliches Repository der Extension inkl. GitLab CI Konfiguration: \url{https://gitlab.com/derhansen/comments}
##TYPO3 Performance
Markus Sommer @delaramas
Probleme in TYPO3 mit Performance entstehen meist mit den Extensions.
Der Core ist schnell und bietet Möglichkeiten um die Performance auch mit Extensions schnell zu bekommen.
Stellen, an denen man Stellschrauben drehen kann:
TYPO3/Ext
Server:
* Hardware (bedingt Einfluss)
* Apache HTACCESS vom Core verwenden, dort sind die wichtigsten Einstellungen gesetzt.
* Caching von Dateien aktivieren
* HTTP/2PHP/Database
Dateien
* Metadaten entfernen, wird nicht von imagemagick etc entfernt
* CSS und JS komprimieren, compressCSS und compressJS nur verwenden, wenn es nicht anders möglich ist, da die TYPO3 Funktion stark Performance benötigtClient (Browser/Frontend)
* Lazy Loading
* Responsive Images (auch über TYPO3 srcsets verwenden)
* ServiceWorker
*
*
#Lightening Talks
Kurze Vorträge zu verschiedenen Themen
##themes Extension
präsentiert von @bunnyfield
Beispiel: CodersCare Blog
\url{https://extensions.typo3.org/extension/themes/}
*
##Diskussion: TypoGento
Middleware zur Vernetzung von TYPO3 und Magento - wird allerdings seit einigen Jahren nicht mehr unterstützt
Diskussion rund um die Möglichkeiten der Fortsetzung
##Diskussion: Ersatz für Fluid TYPO3
Flux zu langsam, mit was kann es abgelöst werden?
Vorschlag:
- Gridelements
##Grunt/Gulp/Webpack
@andreaswo
Taskrunner um z.B. SASS zu kompilieren, Bilder fürs Web zu optimieren oder JS-Apps builden
Grunt wird wohl nicht mehr weiterentwickelt
Gulp und/oder Webpack als Alternative
Webpack: Builden von JS-Apps -> aus vielen kleinen Modulen eine einzelne JS-Datei machen
Babel: Übersetzen moderner JS-Dialekte z.B. ECMA2015 in besser kompatible Dialekte; kann direkt in den Workflow mit Webpack eingebaut werden
zusätzlich auch Sourcemaps etc. nutzbar
D
*
#Automatisiertes Upgrade von TYPO3 6 -> 8
Upgrade von Wizards von 6 auf 7 sind auch in der 8er noch im Core enthalten.
\url{https://github.com/ElementareTeilchen/upgrader}
#TYPO3 Backend für Redakteure
\url{https://www.slideshare.net/pk77/get-happy-editors-with-a-suitable-typo3-backend-configuration}
Rechte nur über Gruppen vergeben.
Für jeden Bereich eigene Gruppe, die die entsprechenden Rechte setzt.
Mountpoints über eigene Gruppen regeln
Editor-Gruppen erben Rechte von den Bereichs-Gruppen
User enthält nur persönliche Daten, Rechte werden ausschließlich von seiner Gruppe gesetzt.
Über Page-TSConfig festlegen, welchem Benutzer/Gruppe eine Seite standardmäßig gehört
Was der Redakteur nicht braucht, kann über TSConfig ausgeblendet werden.
#Ansible
Ansible als Werkzeug, um reproduzierbare Server-Konfiguration zu bekommen.
Alternativen: Puppet, Chef
Ansible verwendet Playbooks, die festlegen, welche Module mit welcher Konfiguration verwendet werden.
Playbooks bestehen aus Rollen, die in YAML verschiedene Aufgaben definieren.
Inventar Playbook <-> Rollen <-> Tasks
Es wird der gewünschte Soll-Zustand definiert.
#T3CM17, Sonntags-Ganztages-Track
#================================
#, 10.9.2017
Neues und Aktuelles in TYPO3 8
------------------------------
.) What's new - Slides / Patrick Lobacher
\url{https://typo3.org/download/release-notes/whats-new/}
.) Customization (Logos) Backend
Configuration im Extension Manager der Backend-Extension
.) Clear all cache im Backend löscht tatsächlich alle Caches
Bis auf bei Extension-Entwicklung (ViewHelper)
typo3\_console - Extension
-> ./typo3cms extension:dumpautoload
Cache in typo3temp ist nach typo3temp/var/Cache gewandert
Clear Cache in this page im Baum (Kontextmenü) dazugekommen
.) Datenprozessoren
Wurden vor fluid\_style\_content hinzugefügt (davon benötigt!)
Früher per PHP-Userfunc z.B. kleinrechnen von Bildern, ...
Jetzt in Fluid-Template per Datenprozessoren
Siehe What's-New TYPO3 7.4
.) PhpStorm - Settings
Resource-Root setzen!
Schema-Dateien generieren (mit typo3\_console) und in PhpStorm einbinden -> Autovervollständigung
Keymap Promoter in PhpStorm :-) -> Lernen von Tastenkombinationen
.) ViewHelper
Evolution des ViewHelpers (anhand nl2br) von 6.2 bis 8.7 durch Code-Vergleich checken!
-> 6.2: render() -> langsam!
-> 7 LTS: renderStatic() -> gecacht + inline-Syntax möglich und implements CompilableInterface
-> 8 LTS: wieder schneller ;-)
typo3/sysext/fluid/Classes/ViewHelper
Als Vorlage für neue Viewhelper ist format- nl2br Viewhelper ganz gut geeignet.
.) TypoScript
-> www.tsref.de
Philosophie-Änderung! Eigentlich nur mehr Controller, Darstellung wird nicht mehr in TS, sondern in ViewHelper gemacht!
Jetzt Rohdaten in TypoScript auslesen und an ViewHelper zur Bearbeitung übergeben
z.B. stdWrap:
-> Getting-Data Funktionen
-> Override and conditions Funktionen
-> Parsing data Funktionen => viel besser in Viewhelpern!
Ausnahme: hierarchisches Menü wenn nicht über Menü-Prozessor sondern in TS gebaut
.) EXT Form
Formulare auch als yaml Dateien in andere Projekte exportierbar!
.) Upgrade auf TYPO3 8
ext\_tables.php wird nicht mehr in Frontend ausgewertet
Infos über Breaking Changes / (speziell TCA) über Upgrade Analysis im Install Tool -> inkl. Doku und Referenzen zu nötigen Code-Änderungen
So Dinge wie Mail-Adresse und Name setzen! (Es könnten Extensions auf die Werte zugreifen und nicht funktionieren, wenn nichts drin steht)
.) Conditions nach Möglichkeit vermeiden!
Blähen Cache brutal auf!
Kostet Performance!
Dinge wie UserAgents auch schon ausgemistet.
Bootstrap - Basis-Extension und Projektstruktur
-----------------------------------------------
3 Extensions:
-> Basiseinstellungen / Funktionen für alle Projekte gleich (ot\_bootstrap3)
-> Theme - Extension
-> Projektanpassungen
-> t3jquery Dummy (nur ext\_emconf.php)
-> dafür, dass Extensions die Abhängigkeit auf t3query haben befriedigt sind.
.) Seit TYPO3 8 ist Einbindung von Templates über Hook möglich, somit im Extremfall gar kein Template in Datenbank mehr nötig
=> ot\_bootstrap3
.) In URL \&debug=1\&no\_cache=1 anhängen -> Eigene Debug-Toolbox wird angezeigt (Boxen, PID, Layout)
.) ext\_tables.sql
-> Zusätzliche Einträge für für Bootstrap (Spalten für versch. Devices und Animationen, CSS-Klassen für inneren und äußeren Container, ...)
-> Well immer in inneren Container!
-> Jetzt über Felder im Backend eintragen, in Zukunft für Redakteure eventuell als Auswahlliste
-> eventuell auch in Zukunft Abstände für alle versch. Auflösungen/Devices (space before/after ... XS, SM, MD, LG)
Eher minimal halten und Dinge verwenden, die schon da sind! SOnst bläht sich Datenbank zu sehr auf!
-> type\_of\_submenu für Auswahl welches Untermenü (z.B. an manchen Stellen Mega-Menu)
-> canonical\_url zur SEO
-> ...
.) ext\_emconf.php
-> Abhängigkeiten für Ladereihenfolge und Settings bezüglich TER (Updates), ...
-> dividers2tab nicht mehr nötig
.) ext\_localconf.php
-> TS einbinden über Hook
.) Eigene Viewhelper
-> z.B. Header im Footer nocht erlaubt (nicht valides HTML), somit ersetzen von Überschriften durch strong und Klassen
.) MenuProcessor interessant für aufwendige Sonderfälle, alte Variante über hierarchisches Menü in TypoScript ist nach wie vor gut verwendbar und getestet!
.) TCA - Änderungen / Ergänzungen
-> Configuration/TCA/Overrides/tabelle.php
-> tsconfig.de -> Doku für tsconfig
-> docs.typo3.org/typo3cms/TCAReference/ -> Doku für TCA
-> z.B. zusätzlich Einschränkungen für Redakteure an manchen Stellen wie Einschränkung von Bildanzahl und -typ etc.
-> Ansehen im Backend über Configuration->...
.) SEO - Ergänzungen
-> Einfach als zusätzliche Felder definieren
-> z.B. Opengraph für Facebook
=> ot\_theme123
.) TS-Hook registrieren in ext\_localconf.php
.) Classes/Hooks/TypoScriptHook.php aus ot\_bootstrap3 kopieren und anpassen
.) Configuration/TypoScript/setup.txt und constants.txt
-> in TypoScript Object Browser richtiges Einbinden überprüfen!
=> Alternativ über AddStaticFile und Einbinden über Datenbankeintrag
Eigene Contentelements vs. Mask Extension \& mask\_export
-------------------------------------------------------
-> Mask-Extension definitiv gut und einfach verwendbar, insbesondere in Zusammenhang mit mask\_export
-> Code - Export bei Mask-Extension als Basis für eigene Extensions verwendbar, allerdings eventuell noch nicht am letzten Stand (z.B. IconFactory)
-> Selbststudium
-> Mask eventuell bei TYPO3 Core Update Bremsklotz
-> Manuell
-> \url{https://docs.typo3.org/typo3cms/extensions/fluid\_styled\_content/7.6/AddingYourOwnContentElements/}
-> siehe z.B. ot\_bt3carousel