Learn about the top 2016 CMS trends. Read on.


Kudos to Jochen Weiland and Riona Kuthe of JWeiland.net for giving a very good TYPO3 best practices presentation at the 2008 Berlin TYPO3 conference. In citing the typical excuse of being busy, I didn’t look deeper into their workshop PDF until April 2009.

What a newbie mistake

That  best practice workshop PDF  contains lots of good advice like hosting recommendations, modularizing TypoScript code and helping pick which templating method is right for you. Because of it, I immediately made many changes to my TYPO3 skeleton site.

It’s 2012, change happens

While I think that most of Jochen’s best practice recommendations still stand, I’d like to make the following succinct suggestions.

  • TYPO3 Provider PHP’s Settings
    • memory_limit = 64M
    • upload_max_filesize = 100M
    • post_max_size = 100M
  • Update your .htaccess file
  • TYPO3 Install Tool Settings (live)
// make BE permission access lists easier to manage with checkboxes than multiple select
$TYPO3_CONF_VARS['BE']['accessListRenderMode'] = 'checkbox';
// BE compression enabling
$TYPO3_CONF_VARS['BE']['compressionLevel'] = 5;
// don't allow access unless it was specifically given
$TYPO3_CONF_VARS['BE']['explicitADmode'] = 'explicitAllow';
// cleaner BE temp file URLs
$TYPO3_CONF_VARS['BE']['versionNumberInFilename'] = 1;
// FE compression enabling
$TYPO3_CONF_VARS['FE']['compressionLevel'] = 5;
// keep FE user logged in unless they specifically log out
$TYPO3_CONF_VARS['FE']['permalogin'] = '1';
// cleaner FE temp file URLs
$TYPO3_CONF_VARS['FE']['versionNumberInFilename'] = 1;
// don't run development modes on a production server
$TYPO3_CONF_VARS['SYS']['enableDeprecationLog'] = '';
$TYPO3_CONF_VARS['SYS']['sqlDebug'] = false;
$TYPO3_CONF_VARS['SYS']['syslogErrorReporting'] = '0';
$TYPO3_CONF_VARS['SYS']['systemLogLevel'] = '4';
  • Modular (TSConfig &) TypoScript Code
    • Use source control for CSS, HTML, TSConfig and TypoScript files
    • Include (TSConfig &) TypoScript via INCLUDE_TYPOSCRIPT into TYPO3 Templates
    • Examples…
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:extkey/folder/file.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/typoscript.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:in2master/Configuration/TSConfig/rte.ts">
  • Templates
    • Learn to use FLUIDTEMPLATE for templates
    • Avoid using TemplaVoila as it’s no longer developed or maintained
  • TypoScript: Standard Configuration
    • Use one and include it via INCLUDE_TYPOSCRIPT
    • Review your standard configuration for TYPO3 4.5+ changes
config {
	 # Enable Links Across Domains: Post TYPO3 4.2
	typolinkEnableLinksAcrossDomains = 1

	 # Page Title First:If set (and the page title is printed) then the page-title will be printed BEFORE the template title.
	pageTitleFirst = 1

	 # Redirect Old Links to New
	redirectOldLinksToNew = 1

	 # Correct Multiple Domain Links
	typolinkCheckRootline = 1

	 # Disable border attribute of img tags
	disableImgBorderAttr = 1

	 # Disable Base Extension Wrap
	disableBaseWrap = 1

	 # Disable Extension BEGIN/END in HTML
	disablePrefixComment = 1

	 # Send Cache Control Headers:Output cache-control headers to the client
	sendCacheHeaders = 1

	 # Minify CSS: CSS files will be minified and compressed. For TYPO3 4.5+
	minifyCSS = 1

	 # Merge CSS & JS: Merges Stylesheet and JavaScript files referenced in the Frontend together. For TYPO3 4.5+
	concatenateJsAndCss = 1

	 # Remove Default CSS: Default CSS in the header will be removed.
	removeDefaultCss = 1

	 # Minify JS: JS files will be minified and compressed. For TYPO3 4.5+
	minifyJS = 1

	 # Remove Default JS: Default JavaScript in the header will be removed.
	removeDefaultJS = external

	 # Link to TYPO3 CSS:If set, the inline styles TYPO3 controls in the core are written to a file.
	inlineStyle2TempFile = 1

	 # Unique Link Vars: Prevent links with the same parameter more than once.
	uniqueLinkVars = 1

	 # Move JavaScript to Footer
	moveJsFromHeaderToFooter = 1
}
  • Tools
    • Google Chrome developer tools AuditsUse your browser’s Developer Tools to run Audit
    • Use Google PageSpeed to get suggestions to make the page load faster
    • Check out YSlow, similar to Google PageSpeed, but more in depth

If you did the TYPO3 Install Tool updates above for `compressionLevel` and did NOT update .htaccess, your TYPO3 backend will not work.

I really want to know your TYPO3 best practices and suggestions. Even knowing what hasn’t worked is valuable, please take a moment to tell me about them via comments.

I’ll be creating a new presentation on TYPO3 Best Practices soon. Ask me to come present at your organization.

Revised since April 29, 2009

Still stuck? Write us.