Content SEO Hidden In Plain Sight

It cannot be that it was just forgotten,
This fundamental feature, thus I sought
Through thick of forum, blog, e’en post ill-gotten
Until my quest returned me to the spot
Where sat the creature with expression cursed
Inquiring why I didn’t look here first.
This post is the result of a search for how to configure SEO metadata tags for content. We’re all familiar with how to specify those for pages – simply go to the page in Control Panel, choose the SEO tab and enter the Title,Description and Keywords.

The Glorious Simplicity Of Structure Inheritance

When I first saw the words Parent Structure there, the following thoughts came to mind, in increasing order of coolness

  1. All fields in the parent structure are inherited by the child structure
  2. The idea of polymorphic content, i.e. content of one type (i.e. structure) Y that is a child of type X, is also of type X. This is in essence the IS-A relationship in object oriented programming.
  3. Asset Publisher would respect above polymorphic behavior so I can simply query for content of the parent type and get back all content tied to that structure as well as all content tied to child structures.
  4. The idea that a child structure would automatically be serviced by the CMS template that serves its parent.

If you guessed that all of that is true, then you would be… wrong. The only point that holds true is the first: a structure simply inherits the fields of its parent structure (if one is specified).

That’s it! Done!

Now, this sort of obviates the need for the rest of this post. But if you’re like me, you want to try stuff out and push the limits a bit to see how stringent things really are, and what the actual payoff is, in practice, of using parent structures. So that is what follows.

Read the rest at

Fun with Generic Content Templates

Posted this a couple days ago on my Liferay blog.
I came across the idea of a generic template recently, and put it to good use.  If you don’t know what I mean by generic template, let me clear that up right away.
A generic template is really just a content template that is not tied to a structure. The point of it is that you can sparate your template code as you see fit, including the generic templates in your main one. All you need to do is add this line of (velocity markup) code in your template.
#parse ("$templatesPath/12345")
where 12345 is the template key of your generic template. That’s it. All the code in your generic template gets pulled into your main template and treated as one.
There! You know what I mean by generic templates now. So, let’s talk about the fun I had with them. I’ve come to be used to velocity, so the sample code below is all vm.

Smart content using categories

Just posted this to my Liferay blog.

If you’ve been using the Liferay CMS, you are probably familiar with a journal article’s Categorization tab wherein you can specify the tags and the categories for the journal article. If you aren’t familiar with those terms, you should read up on Categorization. Tags and categories are indispensable to a well-defined content architecture, apart from being the most convenient way to organize your content. More here:
The rest of this article assumes you are familiar with content categories. One little feature of categories that you may not be aware of is that a category can have one or more properties tied to it. If you knew about that already, you can safely skip this post and save yourself the 15 minutes it will take to read. But if you didn’t know that, or you did but never really dug into it, read on.


Liferay Portal CMS Concepts for the Non-technical

I recently presented this to a group of non-technical users. The feedback was positive and that made me think this may be useful to a larger audience, hence thought to share out.

Note that:

  • This presentation is intended for non-technical business users. It is not for developers.
  • Developers interested in learning about Liferay Portal CMS concepts would do better to start with the Liferay Developer Network
  • That being said, if you are a developer and are looking for ideas on how to present some of these CMS concepts to a non-technical team of (say) content editors, then you may find the content of this presentation useful.


There’s no space because…

“There’s no space because you guys keep putting stuff in /tmp that shouldn’t be there…..  /tmp should be for OS temp stuff only.  It has very limited space….”

That was a portion of the rant our Infrastructure engineer flamed us with when we informed him we needed more space:

Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:

The man was right. There was nothing left to do but apologize. So I did… kinda.

That hurt, good friend
It cut me deep
Deeper than that first cut
I thought would be
The deepest hurt I’d keep
But once my tears dried
I picked up the pieces
Left of my pride
For you. Yes, you.
And rm –r’ed the heck
Out of nodes 1 and 2