DokuWiki

It's better when it's simple

用户工具

站点工具


zh:devel:configuration

配置

兼容的版本 Dokuwiki

2017-07-20

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允许写高度灵活的插件和高度可配置的模板



默认设置

要使插件或模板可配置你必须提供一个包含默认设置的lib/plugins/<plugin>/conf/default.php ,还有一个包含配置管理器 所使用的描述配置元数据lib/plugins/<plugin>/conf/metadata.php,它可以将选项进行处理/显示。1).

$conf[<setting>] = <value>;



配置元数据

对于每一个在 lib/plugins/<your plugin>/conf/default.php的设置它们都有一个 $meta[<setting>] 值定位于 lib/plugins/<your plugin>/conf/metadata.php2):

$meta[<setting>] = array(<setting class>, <param name> => <param value>);

如果一个设置类不需要参数(参见下面),那么它就是简单的:

$meta[<setting>] = array(<setting class>);

例子:

$meta['_basic']     = array('fieldset');
$meta['title']      = array('string');
$meta['lang']       = array('dirchoice','_dir' => DOKU_INC.'inc/lang/');
$meta['dmode']      = array('numeric','_pattern' => '/0[0-7]{3,4}/'); // 只接受八进制表示法
$meta['allowdebug'] = array('onoff');
$meta['passcrypt']  = array('multichoice','_choices' => array('smd5','md5','sha1','ssha','crypt','mysql','my411'));

'' 默认的类('setting'),文本框 ,最小输入验证,在引号中设置输出。
'string' 单行文本输入,最小输入验证,在引号中设置输出。
'numeric' 文本输入,接受数字和算术运算符,设置没有引号的输出。
如果给定_min_max参数,则用于验证。
'numericopt' 像上面一样,但是接受空值。
'onoff' 复选框输入,设置输出“0”或“1”(注意,默认值应该是一个整数,而不是布尔)。
'multichoice' 选择输入(单个选择),用引号设置输出,需要 _choices参数。
'email' 文本输入,输入必须符合电子邮件地址格式,在引号中设置输出。
'richemail' 文本输入,输入必须符合电子邮件地址头格式,可能包括文本部分和替换模式,在引号中设置输出。
'password' 密码输入,最小输入验证,在引号中设置输出纯文本。一旦设置了密码,就不再显示在配置管理器中了。可以通过 _code参数对配置进行模糊处理。
'dirchoice' 作为“多选”,根据 _dir参数(必需)中指定的位置所找到的文件夹进行选择。
'multicheckbox' 每个选项的复选框和一个 “other” 字符串输入,配置文件设置是一个逗号分隔的检查选项列表。
'fieldset' 用于组配置设置,但它本身不是一个设置。为了在语言文件中清楚地说明,这种类型的键应该以_为开始
'authtype' 创建了一组可用的身份验证方法,这些方法是根据inc/auth的类名来匹配 authtype.class.php 模式。
'regex' 正则表达式字符串,通常没有分隔符;至于 string,还测试了是否将编译并作为正则表达式运行。除了 _pattern外,还接受 _delimiter (默认/) 和_pregflags (默认ui)。

参数

'_pattern' 字符串,一个正则表达式。在被接受之前,输入是被测试的。
可选的所有类,除了onoff, multichoicedirchoice 忽略它。
'_choices' 数组选择。用于填充一个选择框。选择将被一个本地化语言字符串替换,如果存在的话,由<setting name>_o_<choice>索引。要求 multichoice & multicheckbox 类,忽略其它。
'_dir' 用于填充选择列表的目录的位置。
要求dirchoice类,忽略其它类。
'_code' 设置密码字段的混淆选项。可能是 plain, base64uuencode。 当使用后两个时,您需要使用conf_decodeString()访问 plain 值。
'_combine' 互补输出设置值,可以组合成一个单一的显示 复选框
可选 “多复选框”,忽略其它类。
'_code' 使用的编码方法,接受的值: base64, uuencode, plain. 默认为 plain.
'_min' 最小的数值。
可选 numericnumericopt,忽略其它
'_max' 最小的数值。
可选 numericnumericopt, 忽略其它
'_delimiter' 字符串, 默认 /, 一个字符作为分隔符用于测试正则表达式的输入值。
'_pregflags' 字符串, 默认 ui, 测试正则表达式输入值时使用的有效的preg模式修饰符, 更多信息见 http://uk1.php.net/manual/en/reference.pcre.pattern.modifiers.php.
'_multiple' 布尔型,允许多个逗号分隔的电子邮件值。
可选 email, 忽略其它
'_other' 如何处理其他值 (未列出在 _choices)。 接受的值: always, exists, never。默认值 always.
exists只显示 'other' 输入字段,当设置包含没有在选项中列出的值时 (如由于手工编辑或更新改变 _choices)。这比 never更安全,因为它不会丢弃不知道的/其他值。
可选 multicheckbox,忽略其它。

例子

''multicheckbox'' 用 ''_other''

假设最初插件使用的语法:

$meta['multi'] = array('multicheckbox', '_choices' => array('a','b','c','d'));

这意味着多复选框将显示四个选项和一个字符串输入。

假设用户插入一个或多个额外的值,而不是在 _choices.

在插件的下一个版本中,作者的插件决定在没有额外的字符串的情况下使用多复选框,但是为了向后兼容,采用:

$meta['multi'] = array('multicheckbox', '_other' => 'exists', '_choices' => array('a','b','c','d'));

这意味着:

  • 如果用户插入逗号分隔值,则将在额外的字符串中打印;
  • 否则不会显示额外的字符串。

还请注意,如果用户插入逗号分隔值已经存在(或一些)在 _choices 但:

  • 它们已经被勾选,然后额外的字符串将被删除,其他的都没有;
  • 它们还没有被勾选,然后额外的字符串将被删除,相对的值将被勾选。



访问设置

核心设置

inc/init.php内部,配置设置被读取到一个全局数组 $conf[]。当没有设置设置时,将从默认设置文件中读取这些设置。 你可以在任何地方访问核心设置通过使用 $conf[] 数组。

$startpage = $conf['start'];

插件设置

你可以访问设置在 插件 通过 $this->getConf('<setting>') 方法。 在你的插件类中,你使用:

$keyvalue = $this->getConf('key');

模板设置

模板 你可以使用 tpl_getConf('<setting>').

$nicetoknow = tpl_getConf('special');



标签在配置管理器

对于lib/plugins/<your plugin>/conf/default.php中的每一个设置,都可以在lib/plugins/<your plugin>/lang/en/settings.php中定义一个$lang[<setting>]值。 这个值将作为配置管理器中的设置的标签显示。如果标签文件被省略,或者不包含设置的值,配置管理器将显示X“plugin <plugin name> <setting>“作为标签。

您还可以创建一个 settings.php文件为其他语言。

同样,这也适用于模板 (进一步的细节见定位)。

1)
模板是类似 lib/tpl/<template>/conf/default.php
2)
模板是完全类似: lib/tpl/<your template>/conf/default.phplib/tpl/<your template>/conf/metadata.php.
zh/devel/configuration.txt · 最后更改: 2017-07-20 07:41 由 223.74.133.140

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