It's better when it's simple

User Tools

Site Tools



Add or modify action link properties
Return properties of core action link or the notice that action is unknown

This event is signalled by tpl_get_action() in inc/template.php when properties of core actions are collected just before the properties are returned to functions tpl_button() or tpl_actionlink() that generate the html of a button or action link respectively with these properties. The handlers can use it to allow custom actions and to modify the properties of the action link.

Note: this event was removed from the DokuWiki Template at 2017-09-01 and replaced by MENU_ITEMS_ASSEMBLY. Other templates may still use this event.

Passed Data

The passed Doku_Event object has the field $data.

The $data field is an array with the entries:

  • $data['accesskey'] – Character used for accesskeys
  • $data['type'] – Action name e.g. edit, recent, login, etc
  • $data['id'] – Page id (often current)
  • $data['method'] – HTTP method: 'get' or 'post'
  • $data['params'] – Associated array of url parameters
  • $data['nofollow'] – Whether to set the rel='nofollow' attribute
  • $data['replacement'] – Replacement for %s placeholder in the caption

For handling of these properties see tpl_button() or tpl_actionlink().

Use preventDefault() to skip DokuWiki's default notice about unknown action. If the default properties are fine for a custom action, calling preventDefault() is enough to create your own link. But you could also modify the properties to your needs by changing the entries of the $data array.


An use case is in combination with the pagetools/usertools/sitetools event.

// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
 * Add link to sitetool
class action_plugin_example extends DokuWiki_Action_Plugin {
     * Register its handlers with the DokuWiki's event controller
     * @param Doku_Event_Handler $controller
    public function register(Doku_Event_Handler $controller) {
        $controller->register_hook('TEMPLATE_SITETOOLS_DISPLAY', 'BEFORE', $this, 'add_menu_item');
        $controller->register_hook('TPL_ACTION_GET', 'BEFORE', $this, 'define_action');
     * Add an item to sitetools
     * Can use `tpl_action()` because dokuwiki accepts 'youraction' by the define_action() handler below.
     * @param Doku_Event $event
     * @param $param
    public function add_menu_item(Doku_Event $event, $param) {
        global $lang;
        $lang['btn_youraction'] = $this->getLang('youraction');
        $event->data['items']['youraction'] = tpl_action('youraction', true, 'li', true);
     * Accepts the 'youraction' action, while using the default action link properties.
     * Entries of $event->data can be modified eventually.
     * @param Doku_Event $event
     * @param $param
    public function define_action(Doku_Event $event, $param) {
        if ($event->data['type'] != 'youraction') {

See also

devel/event/tpl_action_get.txt · Last modified: 2018-12-08 16:10 by torpedo

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki