© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
für den Launch einer
TYPO3-Website
Checkliste
mit vielen nützlichen Tipps & Tricks
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Ist der HTML-Code valide?
https://validator.w3.org/public
nicht nur Startseite prüfen!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Wurde Google Search Console
für die Website eingerichtet?
https://www.google.com/webmasters/tools/public
page.meta.google-site-verification = CODE
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
robots = PAGE
robots {
typeNum = 201
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:text/plain
}
10 = TEXT
10 {
wrap (
User-Agent: *
Allow: /
Disallow: /fileadmin/Daten/
Disallow: /*?id=*
Sitemap: /?eID=dd_googlesitemap
)
	 }
}
Ist „robots.txt“ vorhanden?
Wird dynamisch mittels TypoScript erzeugt
kein Disallow für CSS und JS
RealURL-Konfiguration
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAU
LT']['fileName']['index']['robots.txt']['keyVal
ues']['type'] = 201;
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Kann GoogleBot auf mobile Version
der Website zugreifen?
https://www.google.com/webmasters/tools/mobile-friendly/public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
TYPO3-Extension
„dd_googlesitemap“
Ist die Google-Sitemap vorhanden?
Eintragen in:
robots.txt
Google Search Console


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Wurde Meta-Tag für Robots auf
„index, follow“ gesetzt?
page.meta.robots = {$meta_robots}
meta_robots = index,follow


über Constants steuern
überprüfbar z.B. mit Chrome Extension „SEO Indexability“
https://chrome.google.com/webstore/detail/seo-indexability/mnkcondlhkdpglcdobgohdilckbcbjaj
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Sind Seiten, welche aus Listenelementen
generiert werden, aus SEO-Sicht eindeutig?
Eindeutigkeit gefordert für:
title-Tag
meta-Tag „description“
H1



dürfen nicht gleich sein!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden Webfonts asynchron geladen?
Google Fonts: JavaScript
um Seitenladevorgang nicht aufzuhalten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Wurden große PNGs verkleinert?
https://tinypng.com/public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Wurden die Performance-Killer beseitigt?
https://gtmetrix.com (PageSpeed, YSlow)
https://developers.google.com/speed/pagespeed/insights/
public
public
nur grobe Probleme lösen!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden JavaScript- und CSS-Dateien
komprimiert?
Code in .htaccess einkommentieren
config.compressCss = 1
config.compressJs = 1
page.includeCSS {
bezeichnung = {$templates}css/datei.css
bezeichnung.disableCompression = 1
}
Ausnahme
[BE][compressionLevel] = 5
[FE][compressionLevel] = 5
demnächst vielleicht mehr dazu...
ABER:
noch besser
mit Grunt!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden http-Requests für JavaScript-
und CSS-Dateien reduziert?
config.concatenateCss = 1
config.concatenateJs = 1
config.concatenateJsAndCss = 1


page.includeJS.titel = datei.js
page.includeJS.titel.excludeFromConcatenation = 1
sinnvoller Titel („fancybox“ besser als „file1“ etc.)
Ausnahme
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Einträge unter „Berichte“
im TYPO3-Backend geprüft?
gibt Auskunft über problematische
Einstellungen, fehlerhafte Extensions etc.
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist der Pfad zu „templates“
über Konstante gesetzt?
Pfad am Entwicklungssystem in constants.ts definieren
Pfad am Live-System im Template-Datensatz überschreiben


templates = fileadmin/pfad/zu/templates/
plugin.tx_myext.styles = {$templates}css/myext.css


etwaige Vorkommen aufspüren:
- SSH: grep -r -i "fileadmin/pfad/zu/templates" .
- Suche im TypoScript Object Browser
- TYPO3-Suche im Backend
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle Übersichtsseiten von
der Suche ausgenommen?
über Seiteneigenschaften von der Suche ausschließen:
Listenansichten
Suchformular
Suchresultate
etc.




© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
[SYS][displayErrors] = 2
[SYS][devIPmask] = 'unsere IP-Adresse'
Wurden die Debugging-Settings
angepasst?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
options.clearCache.all = 1
Kann die Redaktion den Cache löschen?
UserTsConfig:
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden unnötige Eingabefelder
für die Redaktion ausgeblendet?
Steuerung über Access Lists
... nicht über TCEFORM


TCEFORM.table.field.disabled = 1
auch für Admins gesperrt!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle Einträge in „Database
Compare“ (Install Tool) behandelt?
wesentlich einfacher, solange
Website noch nicht online ist
zur Sicherheit vorher ein mysqldump
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Datei- und Verzeichnis-
berechtigungen angepasst?
Apache-User
ab TYPO3 6.x im Install-Tool überprüfbar


chown -R www-data:www-data pfad
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist der Scheduler korrekt eingerichtet?
im Backend überprüfen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Laufen die Scheduler-Tasks auch
bei Ausführung über cron?
manuelle Ausführung: php.ini
Ausführung via cron: php_cli.ini


unterschiedliche PHP-Konfigurationen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Werden im TypoScript-Object-Browser
Fehlermeldungen ausgegeben?
existieren alle eingebundenen Dateien?
sind Klammern korrekt gesetzt?


kann Teile von TypoScript deaktivieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist das TYPO3-Admin-Panel
für Admins aktiviert?
admPanel.enable.preview = 1
admPanel.enable.cache = 1
UserTsConfig:
page.config.admPanel = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist das TYPO3-Admin-Panel
für Redakteure aktiviert?
admPanel.enable.preview = 1
UserTsConfig:
page.config.admPanel = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Können Extensions über das Repository
aktualisiert werden?
[SYS][curlUse] = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wird der Suchindex (ke_search)
automatisch erneuert?
Task im Scheduler einrichten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
config.linkVars = L(0-3)
Sind die Werte der LinkVars eingeschränkt?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurde das Install-Tool-Passwort geändert?
in KeePass eintragen
in SharePoint eintragen


sicheres Passwort mit KeePass generieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
TCEMAIN.permissions {
	 userid = 3
	 groupid = 1
	 ### optional Zugriffsrechte
	 //user = show, editcontent, edit, delete, new
	 //group = show, editcontent, edit, delete, new
}
Wird die Benutzergruppe „Zugriff“ neuen
Seiten automatisch zugewiesen?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Configuration Presets
auf „Live“ umgestellt?
Install Tool ab TYPO3 6.x
[SYS][clearCacheSystem] = 1
manuell aktivieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden Extensions aktualisiert?
verringert Sicherheitsprobleme
erleichtert möglicherweise spätere Updates


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle nicht benötigten
Extensions vom Server gelöscht?
verringert Sicherheitsprobleme
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurde das Caching aktiviert?
config.no_cache = {$no_cache}
Extbase: non-cacheable actions
(ext_localconf.php)


bereits während der Entwicklung aktivieren!
Tipp: Caching immer aktiv, jedoch
mittels Admin-Panel deaktiviert!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Sind die Dateitypen für den Upload
sinnvoll eingeschränkt?
[GFX][imagefile_ext] = 'jpg,jpeg,png,gif'
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurde die TYPO3-Version auf
den letzten Stand gebracht?
https://get.typo3.org/public
wget get.typo3.org/7.6 --content-disposition
tar xzvf datei.tar.gz
innerhalb einer Version gibt es keine
Datenbank-Updates, sondern nur bug fixes
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Ist die .htaccess vorhanden?
_.htaccess in .htaccess umbenennen
cp typo3_src/_.htaccess ./.htaccess
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wird .htaccess von Apache berücksichtigt?
<Directory /var/www/html/pfad/zu/projekt/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
prüfen, ob .htaccess aktiv
„absichtlicher“ Fehler in .htaccess muss Error 500 erzeugen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurde das Error-Log am Server geprüft?
404-Fehler und andere Probleme prüfen
tail -f /var/logs/apache2/error.log | grep 404

vhosts-Konfiguration > sites-enabled
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Sind noch Referenzen auf den
Entwicklungs-Server vorhanden?
grep -r -i "dev.website.com" .
TypoScript-Object-Browser durchsuchen
interne TYPO3-Suche
SSH



© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurden Datenbank-Dumps
und Tar-Archive gelöscht?
Transfer-Daten entfernen:
Live-Server
Development-Server


Sicherheit & Speicherplatz
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Werden Benutzereingaben gegen
Cross-Site-Scripting abgesichert?
GeneralUtility::removeXSS($string)
Eingabefelder mit JavaScript-Code testen:
<script>alert(document.cookie)</script>
Eingabewerte behandeln:
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist das Favicon vorhanden?
page.shortcutIcon = favicon.ico
Transparenz erhalten
favicon.ico in root-Verzeichnis platzieren


falls nur eine Website in TYPO3-Instanz
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist das Stylesheet für die
Druckansicht vorhanden?
Chrome > Entwicklertools > Console > Rendering Settings
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden etwaige Test-E-Mail-Adressen
ausgetauscht?
Powermail
eigene Extensions


Konfiguration zentral über Constants
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden mehrfach eingefügte
JavaScript-Bibliotheken entfernt?
z. B. Powermail (jQuery)
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die Extension „sourceopt“
installiert und konfiguriert?
page.config.sourceopt.enabled = 1
page.config.sourceopt.formatHtml = 1
nicht komprimieren:
robots.txt
Newsletter


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die parsetime-Ausgabe deaktiviert?
config.debug = 0
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die 404-Seite definiert?
[FE][pageNotFound_handling] = 'seite-nicht-gefunden'
keine ID angeben, sondern RealURL-Pfad
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde eine Datei für Wartungsarbeiten
angelegt?
HTML-Datei: „Derzeit werden Wartungsarbeiten durchgeführt...“
[FE][pageUnavailable_handling] = 'unavailable.html'
[FE][pageUnavailable_force] = 1
Kontaktinformationen inkludieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist RealURL aktiviert?
config.tx_realurl_enable = 1
diverse Anpassungen nach serialisiertem Code platzieren
serialisierte Konfiguration schneller
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Sind unwichtige Verweisseiten aus dem
RealURL-Pfad ausgeschlossen?
z.B. „/main-nav/“
mittels „dd_googlesitemap“ leicht überprüfbar
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden die Links überprüft?
https://validator.w3.org/checklink
http://home.snafu.de/tilman/xenulink.html
public
public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die Website mit einem
Accessibility-Checker überprüft?
http://achecker.ca/checker/
http://wave.webaim.org/
public
public
grobe Probleme behandeln
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wird der Cache bei Änderung von
Listenelementen automatisch gelöscht?
TCEMAIN.clearCacheCmd = 1,20,126
TCEMAIN.clearCacheCmd = all


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist der Page-Browser für Listenansichten
eingerichtet?
Konfiguration
Styling


sind genug Testdatensätze vorhanden?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Können einzelne Extensions im
Frontend deaktiviert werden?
Steuerung über Constants
Ausnahme über [SYS][devIPMask]
Bootstrap-Alert o. Ä. einblenden



© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist der Zeilenabstand für Überschriften
sinnvoll gesetzt?
kann bei zu kurzen Überschriften am
Testsystem übersehen werden
global setzen: body { line-height: 1.3 }
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Werden im Entwicklertool des
Browsers Fehler angezeigt?
fehlende Bilder
fehlende CSS-Dateien
JavaScript-Fehler
http-Requests in https-Umgebung




© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die Lightbox HTML5-konform?
rel-Attribut nicht valide in HTML5
die meisten Lightbox-Varianten können über data-Attribute
gesteuert werden

© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die Scrollbar eingeblendet,
damit die Seite nicht „hüpft“?
body { overflow-y: scroll }
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden Inline-Styles ins externe
Stylesheet übertragen?
HTML-Code sollte keine Inline-Styles enthalten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wird Extension-JavaScript global
oder lokal eingebunden?
Extension auf (fast) allen Seiten: Ressourcen global einbinden
page.10.includeFooterJS.banner = typo3conf/ext/pfad/zu/banner.js

über Constants steuern, ob lokal oder global
Extension nur auf einzelnen Seiten:
Ressourcen in Extension lokal über
PageRenderer einbinden

© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden die „to do“-Kommentare
behandelt?
https://www.jetbrains.com/help/phpstorm/10.0/todo-tool-
window.html
https://www.jetbrains.com/help/phpstorm/10.0/defining-todo-
patterns-and-filters.html
public
public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Entspricht der PHP-Code der
Spezifikation „PSR-2“?
http://blog.jetbrains.com/webide/2012/11/more-php-formatting-
options-and-bundled-code-styles-for-ps/
public
Ctrl + Alt + L
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurde der Code ins SVN-Repository
eingecheckt?
nicht zu viel committen!
ignore list (*.log, baseurl.ts,...)
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden die Einträge im Deprecation-Log
überprüft?
Einträge eigener Extensions behandeln
Einträge fremder Extensions behandeln, damit
Deprecation-Log nicht zugemüllt wird


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden alle devLog-Aufrufe entfernt?
grep -r -i "::devLog" .
nicht benötigte devLog-Aufrufe entfernen
über Constants steuerbar machen


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
https://www.youtube.com/watch?v=1PCX5uqBfFY
Natürlich nicht! :-)
Datenbank-Tuning
Grunt/Gulp
Bower
SVN-Export-System
SVG statt PNG
...







TYPO3-Checkliste

  • 1.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke für den Launch einer TYPO3-Website Checkliste mit vielen nützlichen Tipps & Tricks
  • 2.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO Ist der HTML-Code valide? https://validator.w3.org/public nicht nur Startseite prüfen!
  • 3.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO Wurde Google Search Console für die Website eingerichtet? https://www.google.com/webmasters/tools/public page.meta.google-site-verification = CODE
  • 4.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO robots = PAGE robots { typeNum = 201 config { disableAllHeaderCode = 1 additionalHeaders = Content-type:text/plain } 10 = TEXT 10 { wrap ( User-Agent: * Allow: / Disallow: /fileadmin/Daten/ Disallow: /*?id=* Sitemap: /?eID=dd_googlesitemap ) } } Ist „robots.txt“ vorhanden? Wird dynamisch mittels TypoScript erzeugt kein Disallow für CSS und JS RealURL-Konfiguration $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAU LT']['fileName']['index']['robots.txt']['keyVal ues']['type'] = 201;
  • 5.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO Kann GoogleBot auf mobile Version der Website zugreifen? https://www.google.com/webmasters/tools/mobile-friendly/public
  • 6.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO TYPO3-Extension „dd_googlesitemap“ Ist die Google-Sitemap vorhanden? Eintragen in: robots.txt Google Search Console  
  • 7.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO Wurde Meta-Tag für Robots auf „index, follow“ gesetzt? page.meta.robots = {$meta_robots} meta_robots = index,follow   über Constants steuern überprüfbar z.B. mit Chrome Extension „SEO Indexability“ https://chrome.google.com/webstore/detail/seo-indexability/mnkcondlhkdpglcdobgohdilckbcbjaj
  • 8.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke SEO Sind Seiten, welche aus Listenelementen generiert werden, aus SEO-Sicht eindeutig? Eindeutigkeit gefordert für: title-Tag meta-Tag „description“ H1    dürfen nicht gleich sein!
  • 9.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Performance Werden Webfonts asynchron geladen? Google Fonts: JavaScript um Seitenladevorgang nicht aufzuhalten
  • 10.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Performance Wurden große PNGs verkleinert? https://tinypng.com/public
  • 11.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Performance Wurden die Performance-Killer beseitigt? https://gtmetrix.com (PageSpeed, YSlow) https://developers.google.com/speed/pagespeed/insights/ public public nur grobe Probleme lösen!
  • 12.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Performance Werden JavaScript- und CSS-Dateien komprimiert? Code in .htaccess einkommentieren config.compressCss = 1 config.compressJs = 1 page.includeCSS { bezeichnung = {$templates}css/datei.css bezeichnung.disableCompression = 1 } Ausnahme [BE][compressionLevel] = 5 [FE][compressionLevel] = 5 demnächst vielleicht mehr dazu... ABER: noch besser mit Grunt!
  • 13.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Performance Werden http-Requests für JavaScript- und CSS-Dateien reduziert? config.concatenateCss = 1 config.concatenateJs = 1 config.concatenateJsAndCss = 1   page.includeJS.titel = datei.js page.includeJS.titel.excludeFromConcatenation = 1 sinnvoller Titel („fancybox“ besser als „file1“ etc.) Ausnahme
  • 14.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden die Einträge unter „Berichte“ im TYPO3-Backend geprüft? gibt Auskunft über problematische Einstellungen, fehlerhafte Extensions etc.
  • 15.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Ist der Pfad zu „templates“ über Konstante gesetzt? Pfad am Entwicklungssystem in constants.ts definieren Pfad am Live-System im Template-Datensatz überschreiben   templates = fileadmin/pfad/zu/templates/ plugin.tx_myext.styles = {$templates}css/myext.css   etwaige Vorkommen aufspüren: - SSH: grep -r -i "fileadmin/pfad/zu/templates" . - Suche im TypoScript Object Browser - TYPO3-Suche im Backend
  • 16.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden alle Übersichtsseiten von der Suche ausgenommen? über Seiteneigenschaften von der Suche ausschließen: Listenansichten Suchformular Suchresultate etc.    
  • 17.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend [SYS][displayErrors] = 2 [SYS][devIPmask] = 'unsere IP-Adresse' Wurden die Debugging-Settings angepasst?
  • 18.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend options.clearCache.all = 1 Kann die Redaktion den Cache löschen? UserTsConfig:
  • 19.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden unnötige Eingabefelder für die Redaktion ausgeblendet? Steuerung über Access Lists ... nicht über TCEFORM   TCEFORM.table.field.disabled = 1 auch für Admins gesperrt!
  • 20.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden alle Einträge in „Database Compare“ (Install Tool) behandelt? wesentlich einfacher, solange Website noch nicht online ist zur Sicherheit vorher ein mysqldump
  • 21.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden die Datei- und Verzeichnis- berechtigungen angepasst? Apache-User ab TYPO3 6.x im Install-Tool überprüfbar   chown -R www-data:www-data pfad
  • 22.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Ist der Scheduler korrekt eingerichtet? im Backend überprüfen
  • 23.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Laufen die Scheduler-Tasks auch bei Ausführung über cron? manuelle Ausführung: php.ini Ausführung via cron: php_cli.ini   unterschiedliche PHP-Konfigurationen
  • 24.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Werden im TypoScript-Object-Browser Fehlermeldungen ausgegeben? existieren alle eingebundenen Dateien? sind Klammern korrekt gesetzt?   kann Teile von TypoScript deaktivieren
  • 25.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Ist das TYPO3-Admin-Panel für Admins aktiviert? admPanel.enable.preview = 1 admPanel.enable.cache = 1 UserTsConfig: page.config.admPanel = 1
  • 26.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Ist das TYPO3-Admin-Panel für Redakteure aktiviert? admPanel.enable.preview = 1 UserTsConfig: page.config.admPanel = 1
  • 27.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Können Extensions über das Repository aktualisiert werden? [SYS][curlUse] = 1
  • 28.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wird der Suchindex (ke_search) automatisch erneuert? Task im Scheduler einrichten
  • 29.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend config.linkVars = L(0-3) Sind die Werte der LinkVars eingeschränkt?
  • 30.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurde das Install-Tool-Passwort geändert? in KeePass eintragen in SharePoint eintragen   sicheres Passwort mit KeePass generieren
  • 31.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend TCEMAIN.permissions { userid = 3 groupid = 1 ### optional Zugriffsrechte //user = show, editcontent, edit, delete, new //group = show, editcontent, edit, delete, new } Wird die Benutzergruppe „Zugriff“ neuen Seiten automatisch zugewiesen?
  • 32.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden die Configuration Presets auf „Live“ umgestellt? Install Tool ab TYPO3 6.x [SYS][clearCacheSystem] = 1 manuell aktivieren
  • 33.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden Extensions aktualisiert? verringert Sicherheitsprobleme erleichtert möglicherweise spätere Updates  
  • 34.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurden alle nicht benötigten Extensions vom Server gelöscht? verringert Sicherheitsprobleme
  • 35.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Wurde das Caching aktiviert? config.no_cache = {$no_cache} Extbase: non-cacheable actions (ext_localconf.php)   bereits während der Entwicklung aktivieren! Tipp: Caching immer aktiv, jedoch mittels Admin-Panel deaktiviert!
  • 36.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Backend Sind die Dateitypen für den Upload sinnvoll eingeschränkt? [GFX][imagefile_ext] = 'jpg,jpeg,png,gif'
  • 37.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Wurde die TYPO3-Version auf den letzten Stand gebracht? https://get.typo3.org/public wget get.typo3.org/7.6 --content-disposition tar xzvf datei.tar.gz innerhalb einer Version gibt es keine Datenbank-Updates, sondern nur bug fixes
  • 38.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Ist die .htaccess vorhanden? _.htaccess in .htaccess umbenennen cp typo3_src/_.htaccess ./.htaccess
  • 39.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Wird .htaccess von Apache berücksichtigt? <Directory /var/www/html/pfad/zu/projekt/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> prüfen, ob .htaccess aktiv „absichtlicher“ Fehler in .htaccess muss Error 500 erzeugen
  • 40.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Wurde das Error-Log am Server geprüft? 404-Fehler und andere Probleme prüfen tail -f /var/logs/apache2/error.log | grep 404  vhosts-Konfiguration > sites-enabled
  • 41.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Sind noch Referenzen auf den Entwicklungs-Server vorhanden? grep -r -i "dev.website.com" . TypoScript-Object-Browser durchsuchen interne TYPO3-Suche SSH   
  • 42.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Server Wurden Datenbank-Dumps und Tar-Archive gelöscht? Transfer-Daten entfernen: Live-Server Development-Server   Sicherheit & Speicherplatz
  • 43.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Werden Benutzereingaben gegen Cross-Site-Scripting abgesichert? GeneralUtility::removeXSS($string) Eingabefelder mit JavaScript-Code testen: <script>alert(document.cookie)</script> Eingabewerte behandeln:
  • 44.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist das Favicon vorhanden? page.shortcutIcon = favicon.ico Transparenz erhalten favicon.ico in root-Verzeichnis platzieren   falls nur eine Website in TYPO3-Instanz
  • 45.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist das Stylesheet für die Druckansicht vorhanden? Chrome > Entwicklertools > Console > Rendering Settings
  • 46.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurden etwaige Test-E-Mail-Adressen ausgetauscht? Powermail eigene Extensions   Konfiguration zentral über Constants
  • 47.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurden mehrfach eingefügte JavaScript-Bibliotheken entfernt? z. B. Powermail (jQuery)
  • 48.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurde die Extension „sourceopt“ installiert und konfiguriert? page.config.sourceopt.enabled = 1 page.config.sourceopt.formatHtml = 1 nicht komprimieren: robots.txt Newsletter  
  • 49.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurde die parsetime-Ausgabe deaktiviert? config.debug = 0
  • 50.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist die 404-Seite definiert? [FE][pageNotFound_handling] = 'seite-nicht-gefunden' keine ID angeben, sondern RealURL-Pfad
  • 51.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurde eine Datei für Wartungsarbeiten angelegt? HTML-Datei: „Derzeit werden Wartungsarbeiten durchgeführt...“ [FE][pageUnavailable_handling] = 'unavailable.html' [FE][pageUnavailable_force] = 1 Kontaktinformationen inkludieren
  • 52.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist RealURL aktiviert? config.tx_realurl_enable = 1 diverse Anpassungen nach serialisiertem Code platzieren serialisierte Konfiguration schneller
  • 53.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Sind unwichtige Verweisseiten aus dem RealURL-Pfad ausgeschlossen? z.B. „/main-nav/“ mittels „dd_googlesitemap“ leicht überprüfbar
  • 54.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurden die Links überprüft? https://validator.w3.org/checklink http://home.snafu.de/tilman/xenulink.html public public
  • 55.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wurde die Website mit einem Accessibility-Checker überprüft? http://achecker.ca/checker/ http://wave.webaim.org/ public public grobe Probleme behandeln
  • 56.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Wird der Cache bei Änderung von Listenelementen automatisch gelöscht? TCEMAIN.clearCacheCmd = 1,20,126 TCEMAIN.clearCacheCmd = all  
  • 57.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist der Page-Browser für Listenansichten eingerichtet? Konfiguration Styling   sind genug Testdatensätze vorhanden?
  • 58.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Können einzelne Extensions im Frontend deaktiviert werden? Steuerung über Constants Ausnahme über [SYS][devIPMask] Bootstrap-Alert o. Ä. einblenden   
  • 59.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist der Zeilenabstand für Überschriften sinnvoll gesetzt? kann bei zu kurzen Überschriften am Testsystem übersehen werden global setzen: body { line-height: 1.3 }
  • 60.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Werden im Entwicklertool des Browsers Fehler angezeigt? fehlende Bilder fehlende CSS-Dateien JavaScript-Fehler http-Requests in https-Umgebung    
  • 61.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist die Lightbox HTML5-konform? rel-Attribut nicht valide in HTML5 die meisten Lightbox-Varianten können über data-Attribute gesteuert werden 
  • 62.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Frontend Ist die Scrollbar eingeblendet, damit die Seite nicht „hüpft“? body { overflow-y: scroll }
  • 63.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wurden Inline-Styles ins externe Stylesheet übertragen? HTML-Code sollte keine Inline-Styles enthalten
  • 64.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wird Extension-JavaScript global oder lokal eingebunden? Extension auf (fast) allen Seiten: Ressourcen global einbinden page.10.includeFooterJS.banner = typo3conf/ext/pfad/zu/banner.js  über Constants steuern, ob lokal oder global Extension nur auf einzelnen Seiten: Ressourcen in Extension lokal über PageRenderer einbinden 
  • 65.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wurden die „to do“-Kommentare behandelt? https://www.jetbrains.com/help/phpstorm/10.0/todo-tool- window.html https://www.jetbrains.com/help/phpstorm/10.0/defining-todo- patterns-and-filters.html public public
  • 66.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Entspricht der PHP-Code der Spezifikation „PSR-2“? http://blog.jetbrains.com/webide/2012/11/more-php-formatting- options-and-bundled-code-styles-for-ps/ public Ctrl + Alt + L
  • 67.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wurde der Code ins SVN-Repository eingecheckt? nicht zu viel committen! ignore list (*.log, baseurl.ts,...)
  • 68.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wurden die Einträge im Deprecation-Log überprüft? Einträge eigener Extensions behandeln Einträge fremder Extensions behandeln, damit Deprecation-Log nicht zugemüllt wird  
  • 69.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke Code Wurden alle devLog-Aufrufe entfernt? grep -r -i "::devLog" . nicht benötigte devLog-Aufrufe entfernen über Constants steuerbar machen  
  • 70.
    © 2016 StefanFranke – http://de.slideshare.net/StefanFranke https://www.youtube.com/watch?v=1PCX5uqBfFY Natürlich nicht! :-) Datenbank-Tuning Grunt/Gulp Bower SVN-Export-System SVG statt PNG ...      