Johannes Wachter
Johannes Wachter
Core Developer – Sulu GmbH
Sulu Core Developer and Open-Source Enthusiast.

"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:

  • Publishing
  • Versioning
  • Drafting
  • 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.

We would love to hear your feedback which you can send us via Twitter or Facebook. And stay tuned to hear more about this bundle and more news in the near future!

Take a look in the future

We have already lots of ideas which will be implemented in the near future. One big shot will be multi-page articles which enhances the content-manager to create new pages inside the article and structure the text in more detail.

We have a plan for the first stable release and manage the tasks until that in the 1.0 milestone of the repository.

If you miss something or you have troubles with installing the bundle contact us via slack or create a issue in the repository directly.

We would love to hear your feedback. Stay tuned to hear more about that in the near future.