This project is not covered by Drupal’s security advisory policy.

Taxonomy Enhancer is a module which will extend the fields available to any given term. Each Vocabulary is fully configurable in its own right and can have as many fields "bolted on" as one likes.

Unfortunately (or fortunately, depending on how you wish to look at it), Drupal does not provide a "term load" or "vocabulary load" hook. There are hooks to pick up when a term or vocabulary is inserted, updated or deleted - but not loaded. This means that this module cannot easily pickup and extend a term automatically. This causes Taxonomy Enhancer to be more of an "on demand" service which is a double edged sword. On one hand, you are not bloating terms unnecessarily - you may not ALWAYS want the term to be extended. On the down side, it does mean that you will have to manually invoke the extension of the term when you need it.

Version 2

Version 1 came and went pretty quickly - its design and implementation was a bit dirty and ended up being more of a "proof of concept".

Version 2 is a MUCH neater and elegant solution. Version 2 has 1 core module which, in itself, doesn't really do a lot except implement a few core hooks, provide a few publicly accessible functions and a publicly implementable API. Yes people, Taxonomy Enhancer now has a nice API!

The API hook is called hook_te_api. There are 8 "operations":

  1. Insert
  2. Update
  3. Delete
  4. Load
  5. View
  6. List
  7. Form

These operations are applied to either a field or a value. You define the function as:

function hook_te_api($op, $type, $field = NULL, $term = NULL)
  • $op — The operations listed above.
  • $type — The type thats being operated on; field or value.
  • $field — The field object.
  • $term — The term - this is either and object or an array. I will standardise this better in the future..

I will be writing up a more involved Handbook page for this module in the near future. The above should give you a taster.

Out of the box, Version 2 simply provides text fields. These fields can either be 1 row (textfield) or multiple row (textarea). Each field can also either be:

  • Raw: Content is simply outputted with minimal filtering or interference - efficient but could have security implications if left in the wrong hands.
  • Plain: All output is parsed through the check_plain function before being rendered.
  • Formatted: All output is parsed through the Input Filter system in Drupal before being rendered out. This allows each field on each term to use its own input filter (eg, for BBCode or HTML Filtering - useful if you have a community moderated tag cloud or something)

Project information

Releases