[Silva-general] navigation by tags/metadata
aaltepet at altepeter.net
Sat Dec 5 05:16:53 CET 2009
[sending again, as I didn't see it hit the list]
I've thought a lot about alternate navigation methods. I think some cms's
call them "alternate taxonomies". I don't think Wim's suggestion is quite
what you're looking for. Your thoughts of using a SilvaMetadata field are
right on target. The challenge is knowing your taxonomy ahead of time. If you
want a flat taxonomy (e.g. starters has a list of recipes) and not a
hierarchical taxonomy (e.g. starters > chicken > chicked quesadillas) then
it's much simpler to implement. With SilvaMetadata, it will be a challenge to
implement a hierarchical taxonomy -- it would be possible, but a new type of
SilvaMetadata element (and Formulator Field / Widget) would be required.
What I would suggest is this:
Establishing the alternate taxonomy:
1) if your flat taxonomy is known, create a new silva metadata set and add an
element using a formulator listfield. Editing the list field, add your flat
list to it. Make sure the element is indexed, probably using a keyword or
field index. If a content object can be associated with multiple names in the
taxonomy, then use a MultiListField.
2) in service_metadata/ct_mapping/manage_workspace, add the new metadata set
to the desired Silva content types
3) now in the SMI properties tab for you will be able to add values for this
metadata field to each object
Generating a menu based on this taxonomy:
Depending on which technology you are using for your layouts (SilvaLayout or
the old-style using the ZMI-based index_html/layout_macro, etc) this will be
slightly different. Because of this I won't suggest any code for you, but I
will outline what you need to you.
In your layout, in addition or as a replacement to the standard navigation
links, you will put in place rendering code for your alternate taxonomy. You
will need to have a page template and some helper python code. The page
template will use the helper python code to get the flat taxonomy list. For
each name in the taxonomy, you will get query the silva catalog for all
objects having that name for the value of the new taxonomy metadata field.
You will then loop over these objects in your pt, rendering a link for each.
There will be a challenge to sustaining this taxonomy. There is no facility
in SilvaMetadata to allow fields containing a strict list of values (i.e. a
List or MultiList) to change over time. Once a content object is associated
with a value, you cannot remove or rename that value without first removing
Please share if you figure this out. As I said, this is something we've been
Another use for a system like this would be to generate a "tag cloud". You
could probably use a textfield instead of a listfield for that.
On Friday 04 December 2009 06:53:35 am Wim Boucquaert wrote:
> Hi Bernard,
> bdsilva at knowledgeworks.plus.com wrote:
> > At the moment I'm imagining that the categories "starters", "desserts",
> > "fruit recipes" might be keywords in the SilvaDocument's metadata.
> > Somehow there would need to be a category navigation at a top level that
> > would be created from this keyword metadata. If that's not the way to
> > go, please say so :-)
> > I'm not looking for a search interface that returns these documents, but
> > rather a way of making the same document show up in different
> > navigational lists.
> We do think it might be worth investigating some time in Silva find. You
> can edit Silva find objects to search for certain keywords in meta data
> and save the search, and search result settings in that Silva find object.
> You can then copy, rename and edit that Silva find object. You can do
> this until you have all desired meta data search queries.
> At the top level you could then reference those Silva find objects so
> that when you click on them you get the desired results.
> silva-general mailing list
> silva-general at lists.infrae.com
More information about the silva-general