Taxonomy Manager

mh86's picture

Short Project Description:
A new module should provide a powerful interface for Drupal’s core taxonomy module for managing terms.

The taxonomy module allows the categorization of content by assigning terms to a node. These terms are grouped in one vocabulary, where they can be structured optional in hierarchical order or related to each other. It depends on the type of vocabulary, whether it’s possible for users to add new terms or whether only administrators have this permission.
At the moment the taxonomy module provides a simple interface, where an administrator can add new terms at the one hand and edit existing terms on the other hand. For editing existing terms, the administrator has to go through the list of all terms, which is generated for each vocabulary. This list shows 25 terms at one page, the terms are ordered depending on their weight and the terms are grouped by their parents (if hierarchical). Nevertheless, when having a bigger vocabulary with e.g. 500 or more terms, this would mean, that the admin has to browse through maybe 20 pages to find the right term, which he/she wants to edit. This procedure is not very user-friendly.
In conclusion, with an increasing number of terms within one vocabulary the original admin interface gets overloaded and it’s nearly impossible to manage all the terms in an adequate way.
The main aim of this project is to increase the usability for editing terms, so what I want to do, is to write a complete new module, which offers a better interface. This will be done by a complete re-design and the adding of JavaScript and AJAX where it’s helpful.

Concrete Implementation plan:
The new module is based on the taxonomy module; it should use the basic taxonomy API as far as possible, so that it’s possible to focus on the major usability aspects.
My plan is to design the admin interface within one page, so that it is possible to see all important information at once and to do all important operations within one page, without the need of a permanent re-load of the page.
One major aspect is the compact representation of the term list. One possible solution is the tree-based representation with collapsible parents, if it’s ordered hierarchically (which is mostly the case with huge vocabularies). This means at the first moment only top level parents are shown, by clicking on a special parent, a subtree with all children expands (like we have in Taxonomy DHTML).
A second important point is the placement of an autocomplete form at the top of the page, which allows you a fast selection of a specific term, without the need of going through the whole tree.
Additional a third group of the page shows all term-specific information, like all parents, children, related-to terms and synonyms, when a term is selected in the list above. The information should be loaded dynamically through AJAX so that a re-loading is not necessary. Furthermore it would be good if this group allows the editing of all term-specific data.
Another important point is the fast deleting and weight-editing of terms. This can be done by offering a weight-form and a checkbox for deletion for each term or by adding AJAX that allows drag & drop for changing the weight order and an instant deletion of terms. Furthermore it should be possible to easily add a parent to more terms at once and to merge terms, which have the same meaning to one term with synonyms.

Use Cases:
When I think about the taxonomy system and knowledge management and categorization of content, there are several cases which come into my mind, where huge vocabularies exists (and a powerful admin interface is necessary).
Three very common examples:

  • A vocabulary with all (or a part of) countries of the world and their regions/states (in hierarchical order) for a geographic categorization of content.
  • A vocabulary for product classification for web shops and auctions, like we can see at eBay. They are having quite a lot of categories in a hierarchical order. The categories are used at the one hand for the site navigation and on the other hand for the categorization.
  • Free tagging vocabularies often contain a lot of terms, where a re-structure by an administrator would be helpful, e.g. by adding a hierarchy or by merging terms with the same meaning.


New functionality?

Boris Mann's picture

Rather than just a re-write (some of which might be nice to tackle for D6), I'd love to see implementations that work with related terms and synonyms -- we have these data structures, but no way to display or work with them out of the box. Could be very useful for free tagging especially.


morphir's picture

There is no way to browse content today (except search.module).

In D7 I will put a focus on implementing Heines 'Taxonomy Defaults' and a 'taxonomy browser'(content browser).

I think the time is right to put a focus on this, since we introduced custom content types in D5.

Sounds fantastic

mlncn's picture

"Just a rewrite" for usability along these lines would would be huge.

I'm going to be stalking you and probably owe what help I can because with the outline above all I have to do is follow your lead, open up reorganization and merging->term+synonyms capability to the masses, and my 2007 summer of code project is taken care of-- Community Managed Taxonomies, (The main innovation this opens up is the possibility of a taxonomy being both hierarchical and free-tagged, though with this new Taxonomy Manager it wouldn't be necessary to have the community help arrange and merge terms-- just a good idea, in my opinion.)

Suffice to say, Matthias, I am certainly your keenest fan!

~ ben,

benjamin, agaric

Similar module

soflete's picture

I've been working on a taxonomy management module myself for a project in which I'm involved. I've achieved a first version with some functionallity and performance problems and a lot of usability questions to solve.

My module leaves a big part of the job to the client side. In the first version I decided to use some drag-n-drop functionallity and had to handle almost each of the possible add/move/modify/delete cases specificaly. The modifications are not submited immediately, but grouped as separate requests that are to be approved in a following step.

I will be redesigning the interface for the next few days to make it a bit more understandable. It would be nice to know what you have been working on and the appreciations you have about this subject. Let me know if I can contribute in any way.


pls contact matthias

benc's picture

that's great, soflete! please contact matthias (mh86) and compare notes. your input would be invaluable.


"Work smarter, not harder."

Yes this is really a life

rakibtg's picture

Yes this is really a life saving module ;)