Taxonomy VTN

The Taxonomy VTN module provides an index for vocabularies, terms and nodes just like those you find at the end of reference or technical books. It supports synonyms, terms, related terms, and parent/child relations. The root Taxonomy VTN path is http://www.example.com/taxonomy_vtn

Most selections can be done on a per taxonomy vocabulary basis by editing the Taxonomy under http://www.example.com/admin/content/taxonomy (available since Dec 12, 2008.)

Additional documentation is available on the Made to Order Software website http://www.m2osw.com/doc-taxonomy-vtn

NOTE

On June 15, 2009 I fixed a couple of problems: the master index would show the first description found for all the entries. The Node back link when coming from a parent/child page would send you back to the main vocabulary page with all the terms.

I added support for groups. Each taxonomy can be assigned a set of groups (comma separated), then going to /taxonomy_vtn/group/<group list> (where <group list> is a comma separated list of groups), will show all the taxonomies present in those groups. To simplify, if you define a set of taxonomies as "Site" and another as "Extra", then you can go to /taxonomy_vtn/group/site and see just the taxonomies marked as "Site" and to /taxonomy_vtn/group/extra and see just the taxonomies marked as "Extra". If a taxonomy has a group "Site, Extra", then it will appear in both lists. If you use /taxonomy_vtn/group/site,extra then you see the taxonomies marked as "Site" and those marked as "Extra". Note that the name of the group(s) found in one of the taxonomies is used as the title of the page.

There are now two groups methods: group and groups. The first merges all the groups in one list, the second shows the groups separated by their names.

I added support for letter based indexes. So you can show just a set of terms that start with a given letter with something like this: /taxonomy_vtn/alpha/<vocabulary>/<letters> The <letters> are the first few letters in your terms. For instance, if you use 'al', you will get all the words starting with 'al' such as 'Alchemy' and 'Alexis', but not 'Physics' nor 'Zoom'. Let me know if you find this feature useful.

On June 11, 2009 I posted my changes to get the navigation of the parent/child displays to work. All you have to do is edit the settings of the taxonomy(ies) you want to navigate in that way (you may also need to reset your cache.) The navigation gives you a way to access the root terms from the master index, and then to go to a Taxonomy VTN display that includes terms when clicking on a parent term.

IMPORTANT

The Drupal 5 version is not currently supported (only for bug fixes.) If you like the module and can help, let us know.

Attention:

I wanted to let you know that from today (08.12.2008) AlexisWilke has access to the CVS of this project.
Alexis can help us make the Drupal 6 version of this module better.
He can apply patches and make changes like you want (if he wants to :)).

Thank you Alexis Wilke.

See my examples:

http://www.turnwatcher.com/site_index

Note: the site_index path is a URL Alias (see http://www.example.com/admin/build/path) that goes directly to one of my taxonomy. In this case: http://www.turnwatcher.com/taxonomy_vtn/voc/3 is the full link.)

Master index

http://linux.m2osw.com/taxonomy_vtn

Site group

http://linux.m2osw.com/taxonomy_vtn/group/site

Site groups, each separated by their name

http://linux.m2osw.com/taxonomy_vtn/groups/site,utility,internal

Terms

http://linux.m2osw.com/taxonomy_vtn/voc/1

Terms that start with L like Linux

http://linux.m2osw.com/taxonomy_vtn/alpha/1/L

Nodes for Linux

http://linux.m2osw.com/taxonomy_vtn/term/1

Parent/Child sample

http://linux.m2osw.com/taxonomy_vtn/voc/1/241/1

What the module offers now:

There are many options to configure. There are two locations to do the Taxonomy VTN module setup:

Global:

Administer -> Site Configuration -> Taxonomy VTN
To configure the vocabularies master index.

Per Taxonomy Vocabulary:

Administer -> Content management -> Taxonomy
Then select the vocabulary you want to administer.

By default, all node types are setup similarly.

Vocabulary & Term Blocks

Administer -> Site building -> Block
Then select the block you want to display. If the default configuration is not what you want, click on configure.

WARNING: If you setup a Terms Block for a vocabulary that has even just 100 terms, it will make your site go slow. There is a feature to only display a small number of these terms. You should first configure the block, the add it to your site.

Options

The selections you can make are as follow:

  • Creates many pages:
    • Master index: taxonomy_vtn
    • Master index by groups (merged): taxonomy_vtn/group/xxx,xxx,...
    • Master index by groups (separated): taxonomy_vtn/groups/xxx,xxx,...
    • All terms: taxonomy_vtn/voc/xxx
    • Terms of a parent: taxonomy_vtn/voc/xxx/xxx
    • Terms of a parent with depth: taxonomy_vtn/voc/xxx/xxx/xxx
    • Terms with start letter: taxonomy_vtn/alpha/xxx/xxx
    • Terms sorted as numbers, you can choose which word (1st, 2nd, etc.)
    • Terms sorted by weight, now the weight is taken in account and has priority over other sort capabilities
    • Characters to be ignored in your terms before sorting them (i.e. parenthesis, ampersand, period, etc.)
    • Nodes of term: taxonomy_vtn/term/xxx
  • Show/Hide descriptions of terms (link is optional)
  • Show counts for vocabularies, terms, nodes and comments
  • Show a list of the letters present in the terms page that link to the corresponding letter in the list of terms
  • Includes support to show only the children of a term in the list of terms (i.e. use /taxonomy_vtn/voc/<vocabulary id>/<parent term>/<max depth> Max depth is optional. When not mentioned, all the children are displayed.)
  • Includes support to show only a set of terms that start with a specified set of letters (i.e. /taxonomy_vtn/alpha/<vocabulary id>/<letters>) Letters are case insensitive.
  • Multiple master indexes can be created using the group feature.
  • Default group defined in the global settings and used by taxonomy_vtn
  • Includes support to navigate the taxonomy based on the parent/child relationships (i.e. like a tree)
  • Hide empty vocabularies or terms (pages & block)
  • Add a link to taxonomy terms in order to edit them, this facilitate the editing of terms dramatically!
  • Show the vocabularies in a block with links to the list of terms
  • Hide letters (looks much better with [very] small lists)
  • Input format for the vocabularies and terms to allow for basic HTML (defaults to the default input format.)
  • Show the terms in a block, can be limited and randomly chosen
  • Set one, two or three columns for the index
  • Set the number of letters to group and show in your index
  • setlocale to show properly sorted index (only for php >= 4.4.0 or >=5.02)
  • Option to immediately "go to term index if only one vocabulary is set"
  • List vocabularies & terms to omit or include in your lists
  • Per page type (vocabulary, term, node) class to allow for quite diverse styling
  • Create and then select a view for the list of nodes pages
  • Caching of the tables
  • Put an [edit] link next to your terms to directly edit them
  • Show synonyms to only a few roles (see MO Auto add terms for the usefulness of this feature)

Dependencies:

The Taxonomy module must be turned on.

If you have the Views module turned on, you can also send people from the list of terms to a list of nodes using a view. The Views module is otherwise optional.

Extensions:

If you are using this taxonomy to get an index as in a book, you probably do not want the tags to appear on the page. There is a module for that purpose: Taxonomy Hide

Would you like to be able to insert any one of your Taxonomy VTN pages inside a node or a block? For that purpose, you can use the the MO Insert Taxonomy VTN filter module. You can specify any one path and setup nearly all the parameters that you can setup in the taxonomy settings (i.e. hide/show different things such as related terms, number of columns, etc.) WARNING: This is a commercial module (i.e. not free).

In order to maintain your site index on all your pages (old and new ones), you need to make sure that all the terms of your taxonomies are properly attached to all the nodes in your site. I have a module called MO Auto add terms for that purpose. The module runs in the background to assign any new term that you add. It continuously maintain your nodes without you having to re-edit hundreds of nodes each time you add one term. WARNING: This is a commercial module (i.e. not free).

NOTE: In regard to the MO Auto add terms module, it makes heavy use of the synonyms in order to assign terms to pages include their plurals, conjugated, slang versions. However, those words may not need to be visible by the masses... For this reason I added a feature in Taxonomy VTN that let you hide the synonyms to all roles but the few that you select. This means you can still see whether you have the proper synonyms without having to edit each term one by one.

Caveats

The project has several problems that may be resolved in a future version.

The main loop used to show all the terms will always load all the terms. That means a website with a taxonomy of 1,000's of terms may not only be slow, it may even break the execution (out of time or memory.)

In order to accelerate the display of pages, the module uses the cache. Because of the large number of pages that can be generated by the module (i.e. if you have 1,000 terms, you have already 1,002 pages, and if you allow parents/children in these, with 100 parents, you get another 100 pages per parent x the maximum depth parameter which is 10, thus another 1,000 pages... two taxonomies like that, you get 2,002. Now add the the alpha and group capabilities, and you get another large number... alpha is likely to add 26+ per taxonomy and groups will depend on the number of groups defined in your taxonomies.)

Incompatibilities

The Category module, which replaces the Taxonomy module, has a missing private function. Please, see #365827: _taxonomy_get_tid_from_term errors needs replacement for more information. Adding the missing function fixes the problem.

Databases:

This module makes use of the Drupal 6.x calls for all database accesses. It should work with all database systems.

Project Information

Downloads