3.2.1 Common file structure
Fluid Powered TYPO3 uses the Extbase convention as default locations for template files. This means that your template files are usually located in the EXT:myextensionkey/Resources/Private
folder - the default folder for so-called private resources, which templates are - under three subfolders:
-
Templates
which contains your different types of templates which are again placed in subfolders, for exampleTemplates/Content
andTemplates/Page
. -
Partials
which is a folder for your partial templates (for example, pieces of HTML shared by many templates). You may not need this folder - but as soon as you usef:render
with thepartial
argument, Fluid tries to find the right partial in this location. -
Layouts
which normally contains one layout per template type, for exampleContent.html
,Page.html
etc.
By convention, the TypoScript which configures these templates should be placed as so-called "static TypoScript setup" files in EXT:myextensionkey/Configuration/TypoScript
and included or registered for inclusion using any of the methods made possible by TYPO3. You can learn more about these possibilities in 3.1.5 configuration files in provider extensions.
The three paths must be configured for the extension which you use to contain your templates. You do this by adding the standard TypoScript defining a set of Fluid view paths:
plugin.tx_myextensionkey.view {
templateRootPath = EXT:myextensionkey/Resources/Private/Templates/
partialRootPath = EXT:myextensionkey/Resources/Private/Partials/
layoutRootPath = EXT:myextensionkey/Resources/Private/Layouts/
}
This TypoScript configuration should be added to the static TypoScript of your extension - to serve as default values. Without these paths your extension's templates will not render correctly.
Layouts and Partials
Just like in any other Fluid template you can use any Layout name you choose. We on the Fluid Powered TYPO3 team suggest you use the names Default
, Content
, CoreContent
and Page
as needed. This list shows when to use which name:
-
Page
when the Layout is to be used with Page templates throughfluidpages
. It is suggested that all page templates share a common Layout file, but sometimes you need to add other Layouts, in which case names likeFrontPage
andSubPage
and so on, will make a lot of sense to use. -
Content
when the Layout is forfluidcontent
elements - normally, you only need one Layout for content elements but like Page templates, you can split content element layouts into fxMediaContent
,TextContent
etc. Layout files. -
CoreContent
when the Layout is forfluidcontent_core
elements. You should not ever diverge from this convention for this particular extension - consistency and with it predicactability is very important for core content templates. -
Default
when for example all your Layout file contains is an<f:render />
statement rendering one section. If your Layout HTML is this simple, sharing a Layout file gives you a small performance boost and increases transparency - compiling one file is naturally faster than multiple files, and having one file leaves zero doubt about which Layout gets used by which template.
Other than these naming conventions there are no particular rules or recommendations for Layouts set by Fluid Powered TYPO3. It is completely up to you as developer/designer to decide what, if anything, your Layouts should contain.
Partials are completely free to be used whenever you want, for whatever you want. They can contain shared Previews, common Flux form fields, Grid definitions etc. - you simply have to place an f:render
statement in the right place to "include" those.