Theming the Content Taxonomy Module

By Stephen Musgrave
Sep 22, 2009
Like many CCK enthusiast, I immediately create a content field for every taxonomy I create using the Content Taxonomy module.  It gives me some flexibility in terms of form layout (if I don't want all taxnonomies grouped), control over the order of fields during registration (using a straight taxonomy field usually requires some hook_form_later massaging) and the ability to use a branch of the taxonomy as a select list -- all good stuff.

But have you ever tried to theme it?

I had the need to create content taxonomy field that looked like this:



The taxonony is Topics of Interest and the top tier terms are Diagnosis and Term 1.  And you can guess which ones are the tier 2 terms.  Out of the box, Content Taxonomy will show me all the terms vertically and all with checkboxes.  Sure I can prepend a dash to every term recursively, but that wasn't going to cut it.

I always want the editor to select the bottom-most term and this taxonomy structure only has 2 levels.  Yes, I could have used the Hierarchical Select module, but that was a bit too heavy on the jQuery UX) and the CCK version isn't quite ready yet), I wanted something simple and understated.

OK, all I need to is hide the checkbox for tier 1 and make that text bold.  As for tier 2, those terms need to float left.  Piece of cake – not so fast.

Content Taxonomy supplies a wrapper with a class that allows you to access a specific term through CSS, but it gives you no relational structure – no nested DIVs or ULs.  And yes, Taxonomy Super Select gives me all these joys, but not CCK integration.

I first tired hook_form_alter, but apparently CCK hooks in at the #process stage of the form build which comes after form alter has had it's say.  So, no CSS and no hook_form_alter.

Then I found this very helpful post in the depths of the Content Taxononmy issue queueMicah Freedman had been down the same trail as I!  I followed his lead, downloaded and installed the Taxonomy Manager module, and then enabled the Content Taxonomy Tree module which is bundled with the Content Taxnomy module.

I then changed my CCK taxonomy field to use the "tree" widget, indicated that I wanted it "always expanded", saved, viewed my form and this is what I saw:


That's pretty nice in it's own right, but not what we're looking for.  Obviously this module has the hooks for nesting, so this should be a piece of cake.  Plenty of Firebug, a handful of CSS code and 20 minutes later, I had the layout I wanted.

Here's the code I used:
#field-myfieldname-value-wrapper .treeview .form-item label.option { 
  font-weight: bold; 
}
#field-myfieldname-value-wrapper .treeview .treeview .form-item label.option { 
  font-weight: normal; float: left; margin-right: 10px; 
}
#field-myfieldname-value-wrapper .lastCollapsable, 
#field-toi-value-wrapper .collapsable { 
  clear: both; 
}
#field-myfieldname-value-wrapper .treeview .form-item input { 
  display: none; 
}
#field-myfieldname-value-wrapper .treeview .treeview .form-item input { 
  display: inline; 
}
#field-myfieldname-value-wrapper .treeview .collapsable
#field-myfieldname-value-wrapper .treeview .last,
#field-myfieldname-value-wrapper ul.treeview li
{ 
  background: none; 
}
#field-myfieldname-value-wrapper .hitArea { 
  display: none;
}
#field-myfieldname-value-wrapper .description { 
  clear:both; padding-top:1em;
}
Note that the font-face and all-caps seen in the screenshot are not included in this CSS code.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
3 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.
    Drupal Association Organisation Member     N-TEN Member
X
You may login with either your assigned username or your e-mail address.
The password field is case sensitive.

Loading