DokuWiki

It's better when it's simple

用户工具

站点工具


zh:devel:common_plugin_functions

常见的插件功能

兼容的版本 Dokuwiki

无兼容性信息!

plugin

最后更新于
2017-07-20
提供
CSS/JS-only

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.

作者 Kuma


每个当前实现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, adminaction.
getPluginName() 返回插件名称
getPluginComponent() 返回插件组件名,对于一个组件,一个空字符串

在需要时可以覆盖以下额外的方法:

名称 描述
isSingleton() 默认DokuWiki重用插件的实例。这可以防止通过添加函数 isSingleton() ,返回false。



配置

更多信息请参考配置。插件使用的附加文件是:

  • <dokuwiki>/lib/plugins/<pluginname>/

    • conf/default.php
      • 包含插件的默认设置
      • 访问通过 $this->getConf()
      • :!: 修改设置(配置更改)存储在DokuWiki的 “本地” 设置文件 <dokuwiki>/conf/local.php

    • conf/metadata.php配置元数据描述配置管理器使用的设置

    • lang/<language>/settings.php – 本地化字符串用于配置管理器
使用conf/metadata.php和本地化settings.php文件告诉配置管理器插件的设置。 如提供有效值的列表或将设置标记为安全警报。DokuWiki自己的配置设置可用的所有元数据设置都可以通过插件使用,查看更详细的配置元数据

如果一个插件符合上述结构,wiki管理员将能够通过配置管理器交互地管理这些设置。

例子

从配置读取设置 “sortkey”:

$sort = $this->getConf('sortkey');



自省

  • getPluginType() — 返回插件类型,如, syntax, adminaction.
  • getPluginName() — 返回插件名称
  • getPluginComponent() — 返回插件组件名称



本地化

本地化存储在插件文件夹中。下一个文件可以提供:

  • <dokuwiki>/lib/plugins/<pluginname>/
    • lang/<language>/lang.php – 本地化语言字符串
    • lang/<language>/settings.php – 本地化字符串用于配置管理器
    • lang/<language>/<filename>.txt – 本地化文本包括DokuWiki标记

请参阅有关本地化、包含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标记的字符串。对于小数据来说,效率非常低,尽量不要使用



另请参阅

1)
搜索框在右侧鼠标移至弹出
zh/devel/common_plugin_functions.txt · 最后更改: 2023-08-13 14:42 由 Klap-in

除额外注明的地方外,本维基上的内容按下列许可协议发布: 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