Published on October 7, 2015 by Tomas Gregovsky
We’re proud to launch our brand new blogging platform! In this post, I’ll describe the key functions of the module from a front-end perspective first, and then move on to more technical backend aspects.
A space for every blogger
We focused on providing a corporate blogging solution involving many authors. The goal wasn’t just to have a homepage with a list of blogs and all blog post entries. We also wanted authors to have their own homepages, just like with their own blogs (many of our bloggers had been blogging on their own blogs for a while). As an example, see my homepage: www.magnolia-cms.com/blogs/tomas-gregovsky.html.
Categories for easy navigation
We use categories (via Magnolia’s out of the box category app) for the blog’s main navigation. But there are more than just the few categories you can see on top of this page - there are many additional ones that are used in the background, so that the ‘related posts’ at the bottom of a post are actually related (we’ll fine-tune the categories as we go).
One powerful app
This blog is built around a single content app, where you can define a blog space for multiple bloggers and then connect them with the security app to let them access only their specific blog spaces. Of course they can also edit their “about the author” section, but they’ll mainly use their access to edit posts. All images are stored in this app, too - per blog post. This means that authors don’t need to access the digital asset management app, and can simply work with images for their own blog posts.
Importing existing content
Another functionality in this blog module is the option to import blog posts from existing blogs using rss xml. I could probably write a whole post on this topic alone, but I’ll keep it short this time. The easiest option is to place an rss feed into the dialog so that all posts and their images are imported. Cron can be used for updates, advanced filters so as not to import some parts of text, or to specify which author should or shouldn’t be imported in case there are multiple authors writing there.
The import functionality also imports categories into the categories app, so you can then simply work with them or assign them a related category. That way, you don't have to manage categories for every single post after each re-import, and can instead handle them automatically.
There are two main blog locations on the backend - each has to be activated by a different role. First, each blog post can be published by its author in the content app without a workflow - just as the imported posts are published automatically. But every blog has its page in the website tree (created automatically when the blog is added) and this page has to be published (and approved) by the “website publisher” for the blog to be displayed. This gives the main publisher a good overview of and control over what is published.
Nope, not a typo ;-) This module consists of dozens of components and page definitions; there isn’t a single model class. However, all Java methods are in one new template function class that we call blogfn. Using this class, frontend developers like myself can access all necessary functionality of the blog module in all templates of all pages and all components whenever necessary. I don’t have to ask the java guys to build a model for me, compile it and redeploy on the server. This improvement alone cut the time to production readiness by 50%.
Our new blogging platform is based on a customized version of the new Magnolia blog module. It’s not quite ready to be made publicly available yet (but we’ll keep you posted on that).
Tomas Gregovsky is a web and front end developer with 15 years of experience. He joined Magnolia three years ago and focuses on the development of Magnolia’s websites. In his free time, he likes to spend time with his family and friends, snowboard and watch American football. He mostly blogs about using Magnolia as a front-end developer.
See all posts on Tomas Gregovsky