It's better when it's simple

User Tools

Site Tools


This is an old revision of the document!

tagentry Plugin

Compatible with DokuWiki

  • 2020-07-29 "Hogfather" unknown
  • 2018-04-22 "Greebo" unknown
  • 2017-02-19 "Frusterick Manners" yes
  • 2016-06-26 "Elenor Of Tsort" unknown

plugin Assign tags using checkboxes

Last updated on
Conflicts with
ckgedit, codemirror, fckg

Similar to tagadd

Tagged with editing, javascript, navigation, tags

The tagentry plugin displays a set of tags just below the edit form and automatically adds or modifies {{tag>}} in the wiki-text using JavaScript when a tag is clicked.

Download and installation

Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.

Author information

I am not the author of this plugin but Robin Gareus yes. I improve or correct this plugin during my spare time. Fixing an error or adding a new function takes time (development, testing and publication), that's why I do not react quickly.

Thank you for your understanding ;-).

As of 2019/10/17, trailjeep has joined maintanence because Sphaira did not upload the source code on the GitHub. See: Maintainer · Issue #6 · sphaira-dev/dokuwiki-tagentry · GitHub



"+" or "-" appears before tags

When we use {{topic>}} syntax with “+” or “-” before tags in order to select results, labels of checkboxes appears with this “+” or “-”, as if they were part of the tag (although this is not the case). I suppose it is because of {{topic>}} accept parameters in its syntax. — Ner0lph 2010-02-11 16:59 (Europe/Paris timezone)

Tagentry checkboxes vanished when using the Dokuwiki "Anteater" Release 2010-11-07 (and newer)

Just like the plugin was no more active in the edit page.

Had the same problem… Here is a quick and dirty fix; someone with more experience can probably provide a better solution. In lib/plugins/tagentry/action.php comment out the following in the function handle_editform_output:
if (   !empty($event->data->_hidden['prefix'])
    || !empty($event->data->_hidden['suffix'])) return;
if ($event->data->findElementByType('wikitext')===false) return
tmul - 2010-11-18
Thanks, the fix worked for me, using Anteater. If I experience any inconvenience, I'll post them.
Thanks tmul.
This fix worked also for me with the “Rincewind” release.
BidiX - 2011-06-14
This fix works for the Angua release as well (at least on my wiki).
Hmm, seems the behaviour returned with the latest development version :-(. Any suggestions?
krid - 2012-08-28
Not displayed for me too. :-(
Yoshiki - 2012-0830
Same here - haven't been able to see it since the last few releases, even with the fix. Any news on this?
Shoe - 2012-1022
The problem comes from the new version tag plugin. You need to change the way the $alltags variable is initialised. Make the following change in function handle_editform_output:
if ($this->getConf('tagsrc') == 'All tags') {
  $alltags=array_map('trim', idx_getIndex('subject', '_w'));
} else {
This works fine for me with tag plugin released on 2012-08-24 and Dokuwiki 2012-10-13
You can see more in
Dinel - 2012-11-25
Works fine for me, too!
DokuWiki: git@8ca9187; tag: git@41fb82b; tagentry: git@6c654d5
krid 2012/11/25 14:43
Doesn't work on Dokuwiki 2012-10-13 and tag 2013-02-15…
Filter - 2013-3-19
To make it working for version 2013-05-10 “Weatherwax” you need to apply following patch
./action.php.old	2009-09-18 13:32:00.000000000 +0400
+++ ./action.php	2013-05-30 12:29:47.000000000 +0400
@@ -55,7 +55,7 @@
       $pos = $event->data->findElementByAttribute('type','submit');
       if(!$pos) return; // no button -> source view mode
       #echo "DEBUG: <pre>".print_r($event->data,true).'</pre>';
-      if (   !empty($event->data->_hidden['prefix'])
+      if (   empty($event->data->_hidden['prefix'])
           || !empty($event->data->_hidden['suffix'])) return;
       if ($event->data->findElementByType('wikitext')===false) return;
@@ -72,7 +72,7 @@
     if ($this->getConf('tagsrc') == 'All tags' && $thlp) {
-      $alltags=$this->_gettags($thlp);
+      $alltags=array_map('trim', idx_getIndex('subject', '_w'));
     } else {

Denis 2013/05/30 10:22

The last fix work fine on Dokuwiki 2013-12-08 “Binky” (after an update you have to empty all the cache)

PHP 7.0 Issue

Neither the old nor the new version of this plugins works with Dokuwiki 2017-02-19 “Frusterick Manners” on PHP 7.0. Error shown is this:

 Got error 'PHP message: PHP Fatal error:  Uncaught Error: 
Call to undefined function split() in 

I have no time to look into the code and fix it.
JohnG 2017/09/13 16:30 CET

Quick search shows that split() has been deprecated and removed from 7.0. It was replaced by preg_split() and explode(). The line in question is line 111 of action.php. Although making this change alone has not fixed the issue for me.
EvanC 2017/09/14 15:15 EST

Seems to work for me. I replaced the calls to split() with explode(). There are two calls, on line 111 and 125.
nuess0r 2018/01/01 16:28 CET

Plugin Installation Error - "Header does not match it's checksum"

Upon attempting to install this plugin via the Extension Manager, I receive the error mentioned above. The same also happens when I attempt to manually install it using the URL. I'm on DokuWiki Release 2017-02-19e “Frusterick Manners”, Windows 10, PHP 7. Any ideas about what's going on?
RiseUp 2018/01/24 22:41:30


it doesn't work with Opera — tested with 9.64
JavaScript is enabled and other scripts (e.g. show/hide contents) is working

Tag tables formatting

Phi - 2010/08/25

Good plugin as far as I have used it. But the screen formatting was not very exciting.
The very simple / basic modification below is done in order to get a better formatting of the XML tables of tags:
  • uniform width for the columns of the table
  • one line for each box + tag label item.
Around line 250 in action.php of the plugin replace the three following lines:
    $rv.='<div class="'.$options['class'].'">';
    $rv.=' <div><label>'.$this->getLang('assign').'</label></div>';
    $rv.=' <div class="taglist"'.$dstyle.'>';
with the following
    $rv.='<div class="'.$options['class'].'">';
    if (!$options['tagboxtable']) $rv.=' <div><label>'.$this->getLang('assign').'</label></div>';
    $rv.=' <div><label>&#160</label></div>';
    $rv.=' <div class="taglist"'.$dstyle.'>';
    if ($options['tagboxtable']) {
       foreach ($alltags as $t) {
          if (is_array($options['blacklist']) 
              && $this->_in_casearray($t, $options['blacklist'])) 
          $ls = strlen($t);
          if ($ls > $lsmax) $lsmax=$ls;
       For ($j=1;$j<=$options['tablerowcnt'];$j++) {
            if ($j == 1) $rv.="Liste&#160des&#160tags&#160".str_repeat("&#160",$lsmax-8);
            if ($j > 1) $rv.=str_repeat("_",$lsmax+1);
    else {
       $rv.='  <div>';

Note: The title Liste des tags is in french but can be changed by whatever you want. Take care to use the &#160 “no-break space” characters to replace your space characters in the title.

I tried this edit, but my website wouldn't load when I made the change. Once I reverted back to the original code, my website ran normally. -JC

Use Heading of tag page

When the tag entry is a page in the namesapce tag (default tag plugin setting) you can display the first heading of the page (if useheading setting is checked) with this modifications in tagentry/action.php :

     * Return Header title or tag name
     * @param $tagname The name of tag without namespace
     * @return Title of the tag page or tag name formatted
    function _getTagTitle($tagname){
        global $conf;
        if( $conf['useheading'] ){
            $tagplugin = plugin_load('helper', 'tag');
            if ( plugin_isdisabled('tag') || !$tagplugin ) {
                //msg('The Tag Plugin must be installed to display tagentry.', -1);
                return $this->clipstring($tagname);
            $id = $tagname;
            $exist = false;
            resolve_pageID($tagplugin->namespace, $id, $exist);
            if( $exist ){
                return p_get_first_heading($id, false);
        return $this->clipstring($tagname);
    // Replace this line (in function _format_tags)
    $rv.=' /> '.$this->clipstring($t).'</label>&nbsp;';
    // By this
    $rv.=' /> '.$this->_getTagTitle($t).'</label>&nbsp;';

Sphaira 2013/12/23 14:43:26

plugin/tagentry.1571513030.txt.gz · Last modified: 2019-10-19 21:23 by MilchFlasche