Resources: Capturing Data for Faceted Search in Magnolia
As you Magnolia-watchers have doubtless noticed, there’s a new section on the Magnolia corporate website: Resources, a faceted search directory of media assets that are available through our site. The new page makes it easy to plow through a ton of available content to find what you want to see, and we’re pretty proud of it.
Since there’s some interesting stuff going on under the covers to allow us to aggregate slideshows, DMS documents, webpages, and videos into a common collection of content, I thought it might be worth sharing some of the details here.
We decided to use the Categorization Module to assign the media assets to particular facets. Because the module supports hierarchical categories, it makes it pretty straightforward to organize these how we like. In addition, we can often reuse these assignments just like we would normal categories — to generate category pages, RSS feeds, etc.
Once we’d set up our hierarchy of categories, we had to make it possible to capture all of the content we wanted to include. The Data Module allowed us to create data types for externally hosted videos (blip.tv or youtube) and slideshows (slideshare.net). This is pretty standard stuff, except for the fact that, in order to support multiple categories within the data workspace, we had to tweak the nodetype definitions. (This change is documented on the Categorization page.)
Next up, we want to be able to assign Categories to documents in the DMS. “But wait!” I hear you cry. “The DMS doesn’t support categorization!” With a little bit of Magnolia-Fu, however, it can. The Categorization module makes a tab control available for sharing, so all we have to do is add a reference to that control to our DMS dialog:
Finally, STK-based web pages already support Categorization, so we didn’t have to do anything there — they’re already good to go.
So with these few additions, we’re ready to start capturing data on media assets to show in our Resources section. Watch for my next blog post where I’ll get into the code behind the scenes.