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:
-
Templateswhich contains your different types of templates which are again placed in subfolders, for exampleTemplates/ContentandTemplates/Page. -
Partialswhich 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:renderwith thepartialargument, Fluid tries to find the right partial in this location. -
Layoutswhich normally contains one layout per template type, for exampleContent.html,Page.htmletc.
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:
-
Pagewhen 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 likeFrontPageandSubPageand so on, will make a lot of sense to use. -
Contentwhen the Layout is forfluidcontentelements - normally, you only need one Layout for content elements but like Page templates, you can split content element layouts into fxMediaContent,TextContentetc. Layout files. -
CoreContentwhen the Layout is forfluidcontent_coreelements. You should not ever diverge from this convention for this particular extension - consistency and with it predicactability is very important for core content templates. -
Defaultwhen 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.