DokuWiki

It's better when it's simple

用户工具

站点工具


侧边栏

本页面的其他翻译?:

了解DokuWiki

进阶使用

商用

我们的社区


Facebook, Twitter 或其他社交网络上关注我们.

zh:devel:common_plugin_functions

常见的插件功能

兼容的版本 Dokuwiki

无兼容性信息!

plugin

最后更新于
2017-07-20

插件名称包含下划线,无法产生受欢迎度点数。

作者 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 · 最后更改: 2017-07-19 20:59 由 223.74.133.140