codeq / simpletemplate
This simple template automatically resolves file paths according to the Neos best practises.
Installs: 113
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Type:neos-package
Requires
- neos/neos: ^3.0
This package is auto-updated.
Last update: 2024-12-08 07:44:37 UTC
README
You never need to manually define a template path to your Fluid file anymore. The simple template automatically sets up folder paths based on the Neos best practises.
Usage
-
Install with
composer require codeq/unicodenormalizer
-
Your node types will automatically use the new template, examples of the auto mapping can be found below.
-
To use auto mapping in your Fusion components, the prototype needs to be baed on the SimplteTempalte
prototype(Example.Site:Component.Footer) < prototype(CodeQ.SimpleTemplate:Template) { ... }
Best practises for folder and file naming
NodeTypes
-
Each NodeType configuration has it’s own file:
Configuration/NodeTypes.<Document/Content>.<NodeType Name>.yaml
-
Each NodeType has it’s own folder for rendering with:
Resources/Private/Fusion/<Document/Content>/<NodeType Name>/ <NodeType Name>.fusion <NodeType Name>.html (optional)
-
The Fusion prototype name is
Example.Site:<Document/Content>.<NodeType Name>
Sub-NodeTypes
Some NodeTypes are only allowed inside other NodeTypes, e.g. a SliderItem is always a subnode of a Slider. To better group them you can use the following folder structure:
-
Each Sub-NodeType configuration has it’s own file:
Configuration/NodeTypes.<Document/Content>.<NodeType Name>.<Sub-NodeType Name>.yaml
-
Each Sub-NodeType has it’s own folder for rendering with:
Resources/Private/Fusion/<Document/Content>/<NodeType Name>/<Sub-NodeType Name>/ <Sub-NodeType Name>.fusion <Sub-NodeType Name>.html (optional)
-
The Fusion prototype name is
Example.Site:<Document/Content>.<NodeType Name>.<Sub-NodeType Name>
Standalone Fusion Components
Components are reusable Fusion (and Fluid) modules which can be reused when rendering different NodeTypes. A component consists of one Fusion and an optional Fluid file.
-
Each component has its own folder inside the Components folder with:
Resources/Private/Fusion/Components/<Component Name>/ <Component Name>.fusion <Component Name>.html (optional)
-
Each Fluid component must inherit from
prototype(Example.Site:SimpleTemplate)
-
The Fusion prototype name is
Example.Site:Component.<Component Name>
The main idea behind all of it is this:
The location of all files related to a Fusion object (Fusion protype, Fluid template) should always be deducible from object's name name. E.g.
Example.Site:Content.Slider -> ../Private/Fusion/Content/Slider/Slider.fusion
-> ../Private/Fusion/Content/Slider/Slider.html
Example.Site:Component.Footer -> ../Private/Fusion/Component/Footer/Footer.fusion
-> ../Private/Fusion/Component/Footer/Footer.html
Certain prototypes should provide reusable functionality and therefore only named Components. Those should not bound to a particular NodeType.
If you need to break apart one big Fusion prototype into a few smaller ones, you can always group them with another layer of namespacing, e.g.:
Example.Site:Content.News -> ../Private/Fusion/Content/News/News.fusion
Example.Site:Content.News.RelatedArticles -> ../Private/Fusion/Content/News/RelatedArticles/RelatedArticles.fusion