常见的插件功能
兼容的版本 Dokuwiki
无兼容性信息!
The missing download url means that this extension cannot be installed via the Extension Manager. Please see Publishing a Plugin on dokuwiki.org. Recommended are public repository hosts like GitHub, GitLab or Bitbucket.
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
插件名称包含下划线,无法产生受欢迎度点数。
This extension is not in the 'plugin' or 'template' namespace and is therefore ignored.
每个当前实现DokuWiki 插件类,语法(syntax),管理(admin),行动(action),助手(helper),远程(remote)和渲染器(renderer)提供一组通用的方法和属性,支持标准配置,自省,本地化和输出设备。这些函数产生他们的结果考虑本地安装设置和特定的DokuWiki需求。
这些函数声明在基础插件类, DokuWiki_Plugin
, 定义于 inc/plugin.php
.
下面显示了函数和属性的摘要。对于完整和最新的详细信息,请参阅API参考1)中的inc/plugin.php,以及在Github上的源代码库中的dokuwikidokuwiki源代码。
所有插件中可使用的继承方法 (也见 inc/plugin.php):
名称 | 描述 |
---|---|
getInfo() | 返回关联数组,从插件目录的plugin.info.txt 读取基本信息。更多细节阅读插件信息。 |
getConf() | 返回一个已命名的插件配置变量的值。 更多细节阅读下面的配置。 |
getLang() | 在当前语言中为提供的键返回文本。详情参考下面本地化。 |
locale_xhtml() | 将把资源文件的本地版本传递给渲染器以立即输出。详情参考下面本地化。 |
email() | 返回一个正确格式化的mailto: 链接,考虑到wiki安装的mailguard 设置。 (例外:在语法插件使用 $renderer->emaillink() ) |
external_link() | 返回一个正确格式化的外部链接,考虑到wiki配置设置。(例外:在语法插件使用 $renderer->externallink() ) |
render() | 将把文本字符串传递给解析器和渲染器以便立即输出。文本可能包含DokuWiki标记。请谨慎使用,因为为每次使用设置解析器都有很大的开销。(例外:在语法插件) |
loadHelper() | 加载一个给定的助手插件(如果启用了插件)。细节和例子在辅助插件。 |
getPluginType() | 返回插件类型, 如. syntax , admin 或 action . |
getPluginName() | 返回插件名称 |
getPluginComponent() | 返回插件组件名,对于一个组件,一个空字符串 |
在需要时可以覆盖以下额外的方法:
名称 | 描述 |
---|---|
isSingleton() | 默认DokuWiki重用插件的实例。这可以防止通过添加函数 isSingleton() ,返回false。 |
配置
例子
从配置读取设置 “sortkey”:
$sort = $this->getConf('sortkey');
自省
getPluginType()
— 返回插件类型,如,syntax
,admin
或action
.getPluginName()
— 返回插件名称getPluginComponent()
— 返回插件组件名称
本地化
本地化存储在插件文件夹中。下一个文件可以提供:
<dokuwiki>/lib/plugins/<pluginname>/
lang/<language>/lang.php
– 本地化语言字符串lang/<language>/settings.php
– 本地化字符串用于配置管理器lang/<language>/<filename>.txt
– 本地化文本包括DokuWiki标记- 访问通过
$this->locale_xhtml()
请参阅有关本地化、包含javascript本地化和示例的开发人员信息。
实例化
默认DokuWiki重用插件的实例。这可以通过添加返回false的函数isSingleton()
来防止,因此plugin_load('<plugin type> '<plugin name>')
和loadHelper('<plugin name>, true)
将在每次调用中返回一个新的插件对象。
/** * Return false to prevent DokuWiki reusing instances of the plugin * 返回false,以防止DokuWiki重用插件的实例 * @return bool */ public function isSingleton() { return false; }
加载辅助插件
在所有的插件中,除了语法插件外,可以通过$this->loadHelper('tag', true)
加载帮助插件。第一个参数是辅助插件名,第二个参数是否显示英语错误信息(不能本地化)。它将重新使用所请求的插件的实例,因此它将始终返回相同的插件对象。为了防止这种行为,可以看上面的实例化。
如果插件被启用,它将加载一个给定的辅助插件。细节和例子在辅助插件。另外,在语法插件中也可以加载辅助插件。
例子
加载标签(Tag)插件的辅助:
//获取标签帮助器的实例 $tag = $this->loadHelper('tag', true); if($tag) { $entries = $tag->tagRefine($entries, $refine); }
加载其他插件
如果你想在你的插件中使用另一个插件,你必须使用plugin_load()
函数。它需要两个参数,第一个是插件类型,第二个是您想要使用的插件的名称。此外,plugin_isdisabled()
还可以用来检查插件是否可用。
它将返回一个插件对象。默认这个对象是由插件控制器存储的唯一的插件实例,但是当被请求的插件被isSingleton()
标记为不是单例时,它会在每个请求中返回一个新的插件对象。
或者使用plugin_load($type, $name, $new = false, $disabled = false)的额外参数选项
从标签插件加载复杂插件组件,它只有一个辅助组件:
if(!plugin_isdisabled('tag')) { $tag =& plugin_load('helper', 'tag'); if($tag) { $entries = $tag->tagRefine($entries, $refine); } }
或者从数据插件加载语法插件组件,它有几个语法组件,因此指定需要的组件:
if(!plugin_isdisabled('data')) { $table =& plugin_load('syntax', 'data_table'); if($table) { $hasfilter = $table->hasRequestFilter(); } }
输出
email($email, $name='', $class='', $more='')
输出一个电子邮件链接使用安装的电子邮件混淆设置。默认的类mail
被添加到电子邮件链接,$class
覆盖这个。$more
增加了电子邮件链接的额外属性。external_link($link, $title='', $class='', $target='', $more='')
使用安装的目标设置输出外部链接,设置可选参数将覆盖它。$more
为该链接添加了额外的属性。render($text, $format='xhtml')
使用解析器解析和输出包含wiki标记的字符串。对于小数据来说,效率非常低,尽量不要使用