Support the documentation
This documentation was written by volunteers. Please help support our effort:
- Composition over Inheritance
- Separation of Concerns
- Maybe introduce DDD
We have quite a few technologies involved here. So take your time to understand them before you build your site.
Neos is a PHP application which runs on a webserver like apache/nginx and an SQL database. It is based on top of the PHP framework Flow (which is as well developed by the Neos team as a basis for Neos).
The two main areas which integrators are working with is configuring structured content storage and defining rendering. For those you will mostly not need PHP – Neos provides very powerful abstractions.
Thou we do not exactly use a classic MVC pattern, it might help you as a concept to get started with Neos. When compared to a classic MVC pattern, the structured content storage mostly defines the model, the view part is handled in rendering, and the controllers are optional via the framework Flow.
Neos stores all content in a hierarchical and structured way in a so-called Content Repository, which can be imagined as a big tree of data (we call these data elements Nodes). The structure of this data can be defined via NodeTypes. This also defines how editing works in the Neos backend.
Because the content is stored in a structured way, this allows to re-use content easily, and adjust it as needed during rendering.
Rendering is based on the Fusion configuration language, which helps to configure the rendering by assembling individual parts.
Inside Fusion, there are two templating languages available (which allow you to write HTML, JSON of whatever output format you need):
- AFX (Atomic Fusion) is a modern templating language directly integrated into Fusion. It has been heavily inspired by React's JSX, and it allows you to combine rendering logic of a component and the corresponding markup into a single file.
- Fluid is a classical templating engine (like Twig) which works with separate template HTML files, which contain special tags for loops, conditions and placeholders.
Fluid has been around in Neos since the first version, while AFX is rather new.
In the long run, we expect that AFX will be the recommended choice for all projects, though today, it is still a bit rough around some edges. Fluid will nevertheless be supported in the long run; there are no plans whatsoever to deprecate its usage.
Neos allows you to configure most aspects in YAML setting files. The great advantage of this compared to saving the configuration in the database is, that you can easily commit, merge and manage your configurations in git. They are update-save and can be configured differently for each application context.