You can have a look at this video-podcast to see the module in action.

Features

  • Very easy and intuive user interface
  • You get automatical(semantic) tag suggestions based on your node current content!*
  • No comma-seperated lists anymore!
  • Supports several tagging-vocabularies on one node-edit form
  • Powerful and simple suggestion-API or the alter methods to add new suggestions methods
  • Theme the whole output
  • Reuse the form-element 'tagging_widget'

New: OpenCalais support

Extensions (submodules)

All the extensions are currenly included in seperate submodules in the taggin module package. You dont need to download anything else.

  • Drupal Wiki tagging suggestions: Static content analysis based on stopwords, word count and other things. Local algorythm works out of the box, no need to send you sensitive data to other services.
  • Tagging opencalais suggestions: This tagging module exposes suggestions based on the current content (body) using the semantic OpenCalais service

You can use the suggestion API to easily create your one suggestion, no matter what it is. A static list of words, some dynamic stuff yuo calculat by any alorithm or whatever.

Compatibility / Dependencies

Server Dependencies

none (optional extractor)

Client Browser Dependencies

- Javascript
- This plugin works in: FF(3.x), Safari, Opera(10.x), Chrome,IE6, IE7, IE8,

Incompatibilities

- We dont have D7 Entities support for suggestions yet
- If you get redirected to the frontpage when clicking a tag, please try to upgrad jquery_update to 6.x-2.0-X

Installation

You need JQuery and taxonomy, which are both in the Drupal-Core. You can see how to install and configure tagging looking on the video-podcast

  1. Just activate the module and then create or edit a tag-Vocabulary.
  2. Now check the checkbox "Taggin Widget" in the vocabulary settings
  3. Got to the configuration page if you like. Disable or enable to the suggestions example and set the maximum amount of suggestions to show
  4. Edit a node - use the new widget
  5. *(optional) If you want a expamle suggestion-implementation based on your content, you have to install extractor. http://drupal.org/project/extractor
    1. Just enable the module - your done.
  6. *(optional) If you want a expamle suggestion-implementation based on the opencalais servcie, you need to install Opencalais and RDF
    1. You need to activate the calais_api module at least
    2. Get an OpenCalais API key at http://www.opencalais.com (free)

Goals

Usability

This plugin should provide the ability and usability to tag content. Tagging should be fast as hell, it should be inviting. This is one goal.

On the fly tagging

Tag content without switiching into the edito mode. Provide easy and fast interfaces for those purposes

Extensibility

This plugin should become very stable and use the current Drupal-API by best practice - as much as possible. Its not the primary goal to have the newest features in here as fast as possible, its more about getting them done right.
This should provide the ability to be highly extensible, providing a API for other plugins to reuse the UX-Parts and write better Tagging-tools. One of the primary Tools are semantic suggestions for tags

Tag-Suggestions

This plugin should provide the needed API to let other modules provide suggestions for the most important tags for the current content. The user can be supported to learn, how tagging should work. Also, the user can save a lot of time, because he can simply click on a set of suggested terms, using his mouse. Or remove them - by using his mouse again.
Suggestions can have weights and therefor are sorted

Autotagging

As a long term goal, based on the suggestions, user should be able to have a "autotag this content" button

Note

You have to activate the Tagging-Widget for every vocabulary

API

hook_tagging_suggestions($vid, $node)

Every time a module gets edited, all registered modules using hook_suggestions are called. They get the current vocabulary ID and the current node as arguments. The hooks are expected to return an array, with a hash for each item inside:
[]['#name'] = "termname"
[]['#weight]= decimal between 1 and 10
Higher weights, means faster sinking, means the suggestion is less "important" :)

You can use the $vid to only trigger on specific vocabulars only.
This way you can include suggestions using opencalais or extractor.

tagging_suggestions_alter($suggestions,$vid)

You can alter the suggestions after the hook_tagging_suggestion have been called. Make exclusions, your own stopword or context-sensitive additions. If you set the property '#new' on a tag, it will be displayed using a different color:

$tag['#new'] = TRUE;

Theming

theme_tagging_tags_list($suggestions,$vid)

Render the list of tags as HTML. . Every term must be in a div with at least the class "tagging-text".

theme_tagging_suggestions_list($suggestions,$vid)

Render the list of suggestions as HTML. Every suggestion-term must be in a div with at least the class "tagging-suggest-tag".

theme_tagging_widget

Render the whole tagging_widget. Give it a new layout or a new UX.Render the button which should be shown next to the input field. The input field must have the class "tagging-widget-input-$vid" assigned to it at least.

theme_tagging_widget_button

Render the button which should be shown next to the input field. It must have the class "tagging-button-$vid" assigned to it at least.

theme_tagging_widget_wrapper

Render the wrapper of the widget and embed it wherever you like. It must at have the id "tagging-widget-container".

JQuery Plugin: Tagging

$('selectorname-ID').tagging()
Thats pretty anything you need to initialize any input element on the page. You have to provide some wrappers:

  • .tagging-button-ID : Optional Button for "add this term"
  • .tagging_widget-ID: Input field, which will be your autocompletition-field
  • .tagging-wrapper-ID: Where should all added tags get visually shown
  • .suggestion-tagging-wrapper-ID: where should the suggested tags get shown
  • .tagging-widget-target-ID: Where should the tags be saved in. Most probably some vocab-edit-field (hidden)

The D7 port was sponsored byComm-Press and Lukow

This plugin was sponsored by KontextWork GbR for the enterprise Wiki based on Drupal called Drupal Wiki

If you like the module, please write a comment here http://drupal.org/node/684704 to motivate people working on it!

Project information

Releases