Choosing between glossary-type modules
There are several glossary-type modules available, all of which are designed for slightly different needs. This page is here to help you choose which module you should probably be using, or if you should really write your own.
Feature | Glossary | G2 | Glossify | Lexicon |
---|---|---|---|---|
Drupal-related | ||||
Drupal 8.x | -dev | -dev | -beta | |
Drupal 7.x | -dev | -dev | -beta | Yes |
Drupal 6.x | Yes | Yes | -beta | Yes |
Drupal 5.x | Yes | Yes* | No | |
Drupal 4.7.x | -dev | Yes | No | |
Drupal 4.6.x | -dev | No | No | |
Documentation | Handbook README.txt |
external to DO README.txt |
README.txt | README.txt |
AJAX | No | Entry selector | No | |
Architecture | term-based | node-based | term&node-based | term-based |
Services provided | ||||
Multiple glossaries on one site | Yes | No | Yes | |
RSS feeds on entries | Yes, Drupal core | No | Yes, Drupal core | |
RSS feeds on additional vocabularies | No | Yes, Drupal core | No | |
Classify entries using taxonomy | No | Yes, Drupal core | No | |
Commenting on entries | No | Yes, Drupal core | No | |
Private editorial information | No | Yes | No | |
Feature blocks | Search glossary Random / Term of the Day |
alphabar latest top random word of the day |
Random term block | |
XML-RPC services provided | No | alphabar latest top random word of the day |
No | |
Security | Drupal core | Drupal core XML-RPC access control XML-RPC throttling |
Drupal core | |
Alphabar maintenance | automatic | manual | automatic | |
Content filtering | automatic | dfn elements | automatic | |
Performance | ||||
Memory needs/number of entries | proportional | constant | proportional | |
Speed on small glossaries | faster | slower | faster | |
Speed on large glossaries | slower with size | remains constant | slower with size | |
Themeability | search form node overview |
Drupal core node themeing Independent themeing for all 5 feature blocks Independent themeing for all parts of a term definition |
overridable tpl files for all output | |
Translation template supplied | Yes | No | No |
* G2's support for 5.x is intended as a bridge from 4.7 to 6.x.
Obviously, in all cases, a "No" actually means: "roll your own", as in all Open Source software.
Rationale for G2 specificities
G2 is not intended as a direct replacement for the glossary module already available with Drupal for quite some time now.
A more detailed comparison for choosing a glossary-type module can be found at audean.
- Optimization for large glossaries: this is the need expressed by OSInet, which funded development, to support its 5000+ term glossary of computing, for which glossary.module, even when coupled with flexinode to bind blob content to terms, is not really efficient enough.
- Single glossary: multiple glossaries were not necessary to the initial sponsor
- Explicit linking to terms with dfn elements:
- limits system workload
- allows invisible marking of entries made of other entries. Think: XML-RPC, points to XML and to RPC with glossary.module and various wiki filters, but can point to "XML-RPC" with G2. Wrapping XML-RPC in quotes is necessary to allow linking to this entry in glossary, but the quotes remain visible, degrading the UI.
- allows redactor-level choice of:
- whether to link to an entry: Glossary typically links if the term matches, which is not always meaningful ("and" can be present in a glossary and you don't want "and" to be linked from in all nodes on the site).
- where to link to an entry: glossary allows only a predefined set of positions (first, last or all matches).
- nodes vs terms: this is the most salient difference.
- Using custom node types in G2 allows large definitions, with the complete Drupal feature set for nodes.
- Using terms (glossary.module) allows definitions to be bound to custom nodes instead of being nodes on their own.
- Alphabar maintenance: large glossaries will, most of the time, use all available initials, so the processing cost of maintaining it is not justifiable.
Glossary Design
- Customizable
- Administrator options.
- Glossary display.
- Alphabet / Alphabar.
- Input Formats.
- Indicator style.
- Link type.
- Choice of HTML elements.
- Term matching flexibility.
- Liberal CSS usage.
- Multiple glossaries.
- Add-on modules.
- Taxonomy options.
- Related terms link to each other.
- Synonyms will filter the same.
- Drupal filter. Cacheable.
- Translation template provided.
The Glossary module has largely been designed by its users. Many, if not most, of its features have been added and refined by the input of the community. It is actively maintained and there have been performance efforts to make sure it runs as fast as possible. Considerable work has been done to make sure that i18n (internationalization) can be effectively used with Glossary.
Glossary uses Taxonomy to define its terms. While most sites have a smaller glossary than the one G2 was designed for, there are also sites with larger glossaries. The ability to handle multiple vocabularies as glossaries gives Glossary additional flexibility.
The Glossary module acts as a Drupal filter, locating terms within administrator-selectable content and adding additional HTML to them to show or (optionally) link the term's definition to the end-user as they view the content. The terms may be marked with a superscript or icon that links to the term or the term may be converted to an "acronym," "abbr," "cite," or "dfn" element with browser help tips. If the Hovertips and Clicktips module is installed, it may be used to provide hovertips. There are also three mechanisms for marking a section of the content to not be filtered. Matching of terms may be selected as whole words or substrings, and may be either case-sensitive or not.
Since Glossary filters content, the first time a piece of content is shown, there will be a small delay while the filtering is done. The filtered content is then cached, so the next time, the filtering is unnecessary and the delay does not occur.
When a user clicks on a linked term, they will go to the entire glossary or the individual term, depending on which option the administrator chose. When displaying the entire glossary, there is an alphabar on top, which fills in automatically. The administrator may define his/her own alphabet for those who use some language other than English. The terms are then organized by the first letter of the term's name. Each section may be separated by a CSS-themable separator. At the bottom of the display, if the user has the appropriate permissions, are shortcut links to the vocabulary and module settings pages.
Within the glossary display, each term may be followed by a link that will initiate a search for the term, if the search module is enabled. For those who have the proper permission, there will also be a link to edit the term itself.
The type of glossary indicator that is used is specified for each input format, so, for example, "Filtered HTML" may use a superscript type of indicator, while "Full HTML" may use a hovertip. Additionally, each input format also selects which vocabularies are to be used. So one may, again for example, specify that "Filtered HTML" filter for Bible verses, while "Full HTML" filters for technical terms.
Since Glossary is taxonomy-based, that opens the range of taxonomy-based modules to work together. For example, Taxonomy Image may be used to show images for the terms and Taxonomy Delegate may be used to delegate vocabulary maintenance to sub-administrators or editors.
Lexicon
The Lexicon module started out as a fork of the Glossary module for Drupal 6.x improving the output to be XHTML strict compliant for use in a project for the Dutch government. Soon after the release of Drupal 7.0 a 7.x version of the module was released and has been improved since then.