Liferay is very much like WordPress, just a bit more complicated. Each defines a paradigm of modular structures (templates) for producing content at different levels of granularity.
In WordPress a theme really does two jobs. First, it controls the layout of the pages. A theme is made up of smaller modules like header, side nav and post, but these are tightly coupled in a page. The second job is that of arranging the posts. This is just a difference in paradigm between WordPress, which is well known as a CMS system for bloggers, and a portal like Liferay.
In the portal architecture, portlets, which are a lot like individual blog posts, don’t necessarily follow one another in a sequential order. Portlets can be (and usually are) used as applications. In truth, the only real difference is our mental “boxing” of what these two programs do. Liferay and WordPress both produce complete documents composed of tiny, (usually) stand-alone fragments (called either posts or portlets).
But because portal users need to rearrange their “posts”, Liferay has abstracted out the Theme’s second job into a component called the Layout.
The Layout is a fragment that fits inside a page (like the theme) but wraps the portlets. The value of this abstraction becomes evident when you change the layout (thereby repositioning your posts or portlets) in a subset of your pages that all have the same theme applied.
With a little work WordPress can provide this same functionality.
The application below is a demo custom-layout.war created for Liferay. It allows a user to manipulate a layout at run-time, within a page, in much the same way they do with the default Free Form Layout*. A content administrator can then place portlets in the activated columns.
Through this tool, we can offer the non-technical user a lot of freedom to reuse their content in new and interesting ways.
Column 1
- Add Column
- Get Layout
Here is an example layout:

This is only a demo, but obviously we would need to join columns vertically to allow for a broader range of layouts. In addition, it would be nice to be able to open a dialog and simply insert HTML in the way templates and structures can be modified within the CMS. With that said, I much prefer this simple, intuitive way to create these layouts over a full-WYSIWYG set of features found in desktop applications like Dreamweaver. This is fast and easy to use, easy to learn, and lacks the annoyances that bog down and drive away users in the long run. Think iPhone.
The layout HTML of the Custom Layout is persisted to the database, and a CMS user can administrate the layout, but that is where the likeness to the Free Form Layout ends. This behaves like a conventional deployed layout in all other ways.

