(The website development pattern should not be confused with the Flow/Neos application development pattern.)
The following tries to summarize the pattern as I understood it from reading the Neos docs, and then asks for your thoughts about introducing some default conventions that may simplify basic website creation a lot.
A kind of “Model-View-Controller” (MVC) for Neos power users.
The docs teach about how typoscript files need to be defined to process and feed data to the templates.
https://neos.readthedocs.org/en/stable/CreatingASite/TypoScript/index.html
Then the Flow templating language is explained, and it is noted in a special box:
The semantics between the controller and the view should be the following: The controller instructs the view to “render the blog object given to it”, and not to “render the Blog title, and the blog posting 1, ...”.
Passing objects to the view instead of simple values is highly encouraged!
https://neos.readthedocs.org/en/stable/CreatingASite/RenderingCustomMarkup/Templating.html
For the neos user it is the typoscript processing that corresponds the closest to the controller in an Model-View-Controller (MVC) pattern.
Therefore, I gather, the MVC pattern in the Neos website development scope works like this:
Data Model: The node definitions.
View: Defined by the html templates (with relatively simple Fluid iteration and include logic)
Controller: Very flexible typoscript processing system with full control about the data and the rending done by the template.
This fine pattern allows for great flexibility to build websites. The full control that the typoscript driven processing allows is a particularly powerfull tool. However, for many simple tasks the typoscript may merely be needed to associate nodes and properties to templates, everything else can be done in the powerful Flow templating language. For these basic areas of a website, the typoscript files may be seen as boilerplate. This boilerplate may be avoidable, and basic website creation may become much easier if Neos could introduce some sensible default conventions:
For example:
- Default to loading .html files in the template directories that are exacly named after the document node type as template for this document node type, if not overridden otherwise in typoscript.
- Default to make all node properties available indirectly (i.e. property = ${q(node).property(‘property’) if not overridden otherwise}
- Default to make all content collection subnodes available within the template, if not overridden otherwise.
The full power of typoscript should remain available, but large parts of basic websites may be build by simply configuring node types and providing templates.