"Articles" made by Sulu
One of the most requested features and questions in the last few years was: "How can I create a blog with Sulu?". Our answer until now was using a node in the webspace page-tree or even building it upon a dedicated webspace.
But we never felt that this is the best answer we could give to our community and here's why:
The page-tree was not built to manage a large number of pages (or articles) in a single node. The main negative effect of such an use-case is that it slows down the system dramatically. So e.g. an overview page of articles would require quite long loading times. Besides that managing different types of articles (blog posts, news etc.) is not very comfortable.
On the other side most of the features used for pages are really great to create articles:
- Localizations (Shadow- and Ghostpages)
Here comes the Sulu article bundle
This is why we decided to create a new and optional bundle to manage articles the right way. With the SuluArticleBundle content-editors are now able to manage articles in a dedicated place. This also allows to search, filter and sort the articles like any other component in the Sulu-Admin (e.g. contacts or media).
In the edit form editors will not miss any feature known from the webspaces module. The SEO and excerpt features work exactly the same as for pages. Also the author and authored date can be managed in the settings tab.
The technical backbone
As I described in the intro the data aggregation is quite slow when the number of pages grows. Since blogs or news sections of websites often require category- or overview-pages containing many articles we needed to speed this up.
For that we feeded our storage layer - which is built ontop of phpcr - with lots of steriods. We call it the "View-Layer" where the whole article is optimized for overview-pages and for search. Can you guess which technollogy we choose to store this "View-Layer"?
Well, we decided to use elasticsearch at this point. Elasticsearch is a great product which is able to store, search and load unstructured data in a impressive fast way.
This archtitecture allows us to serve multiple articles on a single page with nearly no overhead.
Elasticsearch is of course an additional requirement which might be a disadvantage for smaller websites. So, it's up to you to decide if it is worth for your project.
A look in the future
We have already lots of ideas for future enhancements. One big shot will be a multi-page feature that makes it possible to create additional pages within an article to structure the content in a more sophisticated way.
The current realease is a beta version but a stable release is planned for the very near future (tasks are managed in the 1.0 milestone of the repository).
If you miss something or if you have troubles installing the bundle contact us by using our #Slack channel or create an issue directly in the repository.