• PHP dokuwiki 152 0 1 发布

    DokuWiki的默认URL看起来很不美观,因此我们建议您以本文介绍的这种方式重写它。

    默认的URL

    默认情况下,DokuWiki URL如下所示:

    http://yourdomain.com/doku.php?id=softwares:skylarkjs

    在上面的URL里,页面由参数标识,搜索引擎可能无法将其正确识别为不同的页面。因此,希望如下重写URL。此外,重写的URL易于理解,看起来也很漂亮。

    http://yourdomain.com/softwares/skylarkjs URL重写的设置 设置项目

    更改以下设置项目。

    设置项目设置userewrite1(.htaccess)useslash1(Check on) 变更.htaccess文件

    直接在文档根目录下创建.htaccess文件,启动RewriteEngine。

    ## Uncomment these rules if you want to have nice URLs using ## $conf['userewrite'] = 1 - not needed for rewrite mode 2 RewriteEngine on   RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] RewriteRule ^$ doku.php [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) doku.php?id=$1 [QSA,L] RewriteRule ^index.php$ doku.php 

    另外,根据实际环境,如果DokuWiki的放置位置不直接位于根目录下,则设置RewriteBase的位置。

    ## Not all installations will require the following line. If you do, ## change "/dokuwiki" to the path to your dokuwiki directory relative ## to your document root. RewriteBase /dokuwiki
  • PHP 250 0 1 发布

    本文简单的总结了以下DokuWiki命名空间的基本用法,页面概述以及页面的创建/编辑/删除。

    关于命名空间和页面

    Dokuwiki里有两个基本要素:页面(Page)和页面所属的命名空间(Namespace)。页面记述内容,而命名空间则类似于目录或文件夹,以:(冒号)分隔。
    Dokuwiki系统将页面保存为文本文件(.txt),而命名空间则被保存为文件夹。

    例如,“ns1:ns1-1:example1”表示的是命名空间“ns1”中的命名空间“ns1-1”中的页面“example1”。如果命名空间指定为“ns1:ns1-1:”,则显示命名空间默认页面。此命名空间默认页面由设置项“start”设置,默认为“start”。也就是说,当指定“ns1:ns1-1:”时,显示“ns1:ns1-1:start”。

    但是,在除首页之外的命名空间中,建议在命名空间的上层创建一个与命名空间同名的页面,而不是创建命名空间默认页面“start”。换句话说,创建一个与命名空间同名的页面,例如下面底部的第二个和第三个“ns1”和“ns2”。当命名空间中没有“开始”页面时,DokuWiki有一种机制来引用上层次结构中具有相同名称命名空间的页面。

    Root ├ ns1 ns1: │ ├ ns1-1 ns1:ns1-1: │ │ └ example1 ns1:ns1-1:example1 │ └ ns1-2 ns1:ns1-2: │ └ example2 ns1:ns1-2:example2 ├ ns2 ns2: │ ├ ns2-1 ns2:ns2-1: │ │ └ example3 ns2:ns2-1:example3 │ └ ns2-2 ns2:ns2-2: │ └ example4 ns2:ns2-2:example4 ├ ns1 ns1 ├ ns2 ns2 └ start start页面的创建,编辑和删除

    创建页面的最常用方法是从现有页面链接到要创建的页面,然后转换到未创建页面以创建页面。

    页面的编辑是首先进到该页面,然后点击编辑按钮进行编辑。如果要删除某个页面,将该页面的内容清空保存即可。

  • PHP 186 0 1 发布
    简介

    Bureaucracy是一个用于在DokuWiki中创建HTML表单的插件。 

    入力验证由插件自动处理,不需要编码。 基于表单入力的内容和事先指定的模板,可以自动生成邮件或创建新的页面。

    Bureaucracy插件可以用来实现用户咨询,用户发表等诸多网站应用功能。


    使用方法

    让我们从一个例子开始:

    <form> Action mail me@example.com Thanks "Thanks for submitting your valuable data." Fieldset "A set of fields" Textbox "Employee Name" "=Your Name" number "Your Age" >13 <99 email "Your E-Mail Address" textbox "Occupation (optional)" ! password "Some password" fieldset "even more fields" select "Please select an option" "Peaches|Apples|Oranges" static "Some static text that could be an agreement" yesno "Read the agreement?" textarea "Tell me about your self" textbox "You need to write 'agree' here" /^agree$/ submit "Submit Query" </form>

    如上所示,我们可以定义一个电子邮件地址,将数据发送到该电子邮件地址,并在用户提交表单时显示感谢文本。

    字段

    表单里可以定义各类字段(Field):

    通过指定类型和标签来定义字段(Field)。字段集(Fieldset)及有些字段(Field)如提交按钮(Submit)的标签是可选的有些字段(Field)如选择框(Select)需要设定其他参数可以在主要选项之后添加其他约束当参数包含空格时,它们需要用双引号引起来

    以下是要填写的各个字段:

    action
    第一个参数需指定表单的动作模式,当前支持的模式有:mail(邮件), template(模板)和script(脚本),可通过其他插件扩展动作模式。
    另外,可以定义多个action字段以使表单同时支持多个动作模式。mail(邮件)的其他参数::一个或多个电子邮件地址(必填)template(模板)模式的其他参数:
    用作模板的页面文件的路径(必填)所创建新页面的路径名或路径名前缀(必填)新页面路径中使用多个字段值时的分隔符(可选)script(脚本)模式的其他参数:在conf/plugin/bureaucracy/ 目录下的脚本文件名thanks
    定义提交表单时显示的文本消息。 (可选的)
    fieldset
    创建一组字段static
    静态文本wiki
    支持wiki文法的静态文本textbox
    单行文本输入框,需指定标签password
    密码输入框,需指定标签email
    邮件地址输入框,需指定标签。输入值会被进行有效性验证
    参数@@将字段值标记为邮件操作的回复地址。

    number
    数值输入框,需指定标签。输入值会被进行有效性验

    textarea
    多行文本输入框,需指定标签。默认10行大小,可使用参数xN(x23)(可选)修改。

    yesno
    复选框,需指定标签

    select
    单选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。multiselect
    多选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。
    radio
    一组单选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。
    hidden
    不可见字段。submit
    提交按钮,可指定标签(可选)user / users
    用户选择框,需指定标签。date
    日期(格式:YYYY-MM-DD)输入框,需指定标签。time
    时间(格式:(H)H:MM(:SS))输入框,需指定标签。usemailtemplate template_id
    addpage page_tpl page_tgtlabels
    标签,参数是一个Wiki页面,其中包含标签翻译列表file
    文件选择框,需指定标签。data_aliastextbox (需Data插件)qianjiestruct_field + struct_fieldhidden (需Struct插件)struct_schema (需Struct插件)约定如果数字前接符号”>“,表示输入数据必须大于该数字。如果数字前接符号”<“,表示输入数据必须小于该数字。符号”=“用于指定缺省值符号”!“用于指定字段可选符号“^”用于指定缺省焦点符号“@”用于在template处理模式中指定字段值作为页面路径名的一部分符号“@@”用于在mail处理模式中指定字段值作为回复的邮件地址在数字字段中使用数字0000,入力值位数不够的情况下将会在前面自动补0在数字字段中使用++,每次提交表单时将自动增加计数。用/字符括起来的正则表达式用于限定输入值,如:/ ^ [0-9 \ /()+ \-] + $ /
    适用于电话号码,仅允许数字和字符()-+ /外部标签

    缺省情况下,字段的标签直接定义在表单中。但我们也可以把标签统一定义在一个单独的wiki页面文件里,然后在表单里用labels字段指定该页面文件名,这点在需要对应多语言时尤其有用。

    <form> action mail me@example.com labels mylabels fieldset "field" textbox "name" number "age" >13 <99 submit "submit" </form>

    标签定义页面需要包含一个Wiki列表,其中包含名为label = translation的项目:

    * field = Tell us about yourself" * name = Your Name * age = Your Age * submit = Send your Data

    显示结果如下:

    动作模式

    Bureaucracy插件执行以下处理:

    显示表单验证用户输入将用户输入传送给动作模式

    最后一步的处理, 如上所述,需在动作字段中定义要使用的动作。 当前支持三种模式:邮件,模板和脚本。 可以轻松添加其他模式(例如,将数据存储在数据库中)。

    mail(邮件)模式

    这是一个简单的动作模式。 使用默认值时,所有用户输入将通过电子邮件发送到配置的电子邮件地址。 请参阅上面的示例如何使用它。 可以指定多个收件人邮件地址,以空格分隔。

    下面的例子将电子邮件自动发送到用户输入的地址:

    Fieldset "Some Information" Textbox "Employee Name" email Email_Address

    Action mail @@email_address@@

    字段usemailtemplate用于定义电子邮件的模板。 模板应包含两个代码块,其中包含发送邮件的文本和html版本。 页面上的其他文本将被忽略。 在模板中,您可以使用占位符。字段subject用于定义主题使用选项@@标记字段,该字段值将作为邮件的“回复”地址

    下面的例子定义了邮件的模板和主题:

    action mail @MAIL@ forename@surname.name usemailtemplate your:template subject "new special subject"

    下面时模板文件的内容:

    ======Mail template page====== <code html> Dear @@Your Name@@, You are <b>great<b>, you just <i>purchased</i> our @@What do you want@@! We will deliver it fast as possible, see the <a href="http://example.com/conditions">conditions</a>. Kind regards, Future Machines company </code> <code text> Dear @@Your Name@@, You are great, you just purchased our @@What do you want@@! We will deliver it fast as possible, see [1]. Kind regards, Future Machines company [1] http://example.com/conditions </code>

    template(模板)模式

    template模式使用给定的页面作为模板,将用户输入替换已定义的占位符从而创建新的Wiki页面。

    定义方法如下:

     action template [template] [destination] [separator] template可以是一个页面可以是一个名字空间(尾随冒号)。
    该名称空间所包含的所有子名称空间和页面都将被复制到目标位置,替换模式将应用于所有页面。如果指定下划线(_)作为模板名称时,插件将尝试使用目标名称空间的已配置名称空间模板。destination
    指定新页面的创建位置。 这通常是一个名称空间(尾随冒号)。 separator
    可以使用多个表单字段值创建新的页面名称。 此字符定义了将它们串联在一起时的分隔符。

    (定义结果页面)

    使用template模式时,我们需要定义应在何处创建结果页面。 这有多种方法。

    方法1是指定一个输出名称空间,并使用@符号标记命名字段。 <form> action template userstpl users: : fieldset "Create Your User Page" select "What's your Continent?" "Europe|N. America|S. America|Asia|Australia|Africa" @ textbox "What's your Name?" @ textarea "Enter a short bio" ! submit </form> 

    上面这个例子将使用Continent和name字段创建一个新页面。 例如。 如果我在这些字段中填写“Europe”和“andi”,则结果页面将是users:europe:andi。

    方法2通过在destination参数中使用占位符(由@@字符包围的字段名称。 另外,可以使用任何strftime参数)并在字段定义中省略@标记来实现对生成的页面名称进行更多控制。  <form> action template userstpl "users:%Y:@@What's your Name?@@:start" fieldset "Create Your User Page" select "What's your Continent?" "Europe|N. America|S. America|Asia|Australia" textbox "What's your Name?" textarea "Enter a short bio" ! yesno "Do have publication?" fieldset "Add your publications" "Do have publication?" textarea "Publications:" addpage users:publicationtemplate publications fieldset "Finish" submit </form>

    上面的代码将基于系统年份(2019)和我的名字创建一个命名空间,并在其中创建一个起始页面:users:2019:andi:start

    方法3当使用特殊的addpage(添加页面)字段。这个方法可以根据入力情况有选择的创建某些页面。 addpage additionaltpl somepage

    上例中的第二个字段集通过复选框添加了发布页面。 这里,其他页面的模板位于绝对路径上:users:publicationtemplate。 仅当选中yesno字段时,才会在users:2019:andy:start:publications上创建附加页面

    (创建页面模板)

    模板需要包含与表单相同的字段,并且还可以使用其他一些占位符。 其中一些可以用作表单字段的默认值:

    Placeholderaction@@Field label@@
    ##Field label##将由用户填写到表单中的实际值代替@curNS(arg)@
    @getNS(arg)@
    @noNS(arg)@
    @p_get_first_heading(arg)@将由相应的dokuwiki函数的结果替换。 arg可以都是静态值(例如。 @curNS(some:test:value)@),或字段的占位符(例如 @p_get_first_heading(@@ field @@)@)。
    @@Field label|Nice alternative@@对于空字段,显示缺省文本
    @NSBASE@生成页面的名字空间@YEAR@, @MONTH@, @DAY@, @TIME@, @TIMESEC@当前的年,月,日,时间@LANG@从设定中获得的语言代码@TRANS@从表单的页面ID获得的语言代码

    对于上面示例中的userstpl,我们可以定义成以下的页面

    ====== @@What's your Name?@@ ====== I'm living in @@What's your Continent?@@. I'm a user since %Y-%m-%d. @@Enter a short bio|FIXME please fill in your biography@@

    结果将看起来像这样

    ====== Andreas Gohr ====== I'm living in Europe. I'm a user since 2007-12-23. It's me :-)

    (user字段信息)

    使用一个或多个user字段时,可以在模板中使用所选用户的其他数据:

    “ @@ user.name @@”
    替换为用户全名“ @@ user.mail @@”
    替换为用户电子邮件地址“ @@ user.grps @@”
    由用户grps替换,逗号分隔“ @@ user.grps(separator)@@”
    由用户组替换,并由“ separator”分隔'@@ users(separator)@@'-
    替换为用户昵称列表,并以'separator'分隔'@@ users(separator).name'-
    用用户全名列表替换,用'separator'分隔'@@ users(separator).mail'-
    用用户电子邮件列表替换,用'separator'分隔

    可以省略分隔符,然后使用逗号作为分隔符。 例如。 @@ users.mail @@,@@ users.name @@,不支持@@ users.grps @@

    script(脚本)模式

    script模式将表单数据提交给PHP脚本,PHP脚本可以对数据执行任何所需的操作。

    PHP脚本必须放在conf/plugin/bureaucracy /目录中,它必须包含一个名为helper_plugin_bureaucracy_handler_scriptname的类,并实现接口dokuwiki\plugin\ bureaucracy\interfaces\bureaucracy_handler_interface,这意味着该类必须具有handleData($ fields,$ thanks)方法,并以字段和thank-message作为参数。 如果成功,则返回结果消息,如果发生错误,则返回false。

    下面是一个简单的script模式的例子,仅实现了在DokuWiki的调试日志中打印表单的数据。

    <form> action script example.php textbox "Type something" submit "Write to log" </form>

    conf/plugin/bureaucracy/example.php

    <?php use dokuwiki\plugin\bureaucracy\interfaces\bureaucracy_handler_interface; class helper_plugin_bureaucracy_handler_example implements bureaucracy_handler_interface { /** * Log the form fields to DokuWiki's debug log */ public function handleData($fields, $thanks) { dbglog($fields, __FILE__ . ': ' . __LINE__); dbglog($thanks, __FILE__ . ': ' . __LINE__); return $thanks; }

    }

  • PHP 174 0 1 发布

    以在windows 10 64 bit系统里搭建本地开发用的PHP服务器为例。

    下载

    (nginx)

    nginx官网下载「 Stable version(安定版)」的「 nginx/Windows-x.x.x(Windows版)」。

    (PHP)
    PHP官网下载最新版的「Non Thread Safe版」zip文件

    安装

    将下载下来的nginx和php的zip文件解压至任意目录,下面是笔者本地的目录结构

    C:\ └ web\ ├ htdocs\ ← 网站应用的根目录 ├ nginx\ ← nginx的安装目录 └ php7\ ← php的安装目录 配置

    (nginx)

    conf/nginx.conf

    # 指定用来运行工作进程的用户 #user nobody; # 指定工作进程数量 worker_processes 1; # 指定用于存储进程ID的文件位置 #pid logs/nginx.pid; events { # 指定每个工作进程最大连接数 worker_connections 1024; } http { #### MIME类型设置 include mime.types; #读取MIME类型的定义文件 default_type application/octet-stream; #指定无法通过扩展名确定MIME类型时的缺省MIME类型 #### 访问日志设置 # 访问日志格式设置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 指定访问日志的输出位置和格式 #access_log logs/access.log main; #### 与发送(响应)到客户端相关的设置 # 是否使用sendfile命令发 sendfile on; # 是否使用Linux TCP_CORK套接字选项 #tcp_nopush on; # keepaliveの超时時間设置、65秒 keepalive_timeout 65; # 设置向客户端发送内容时是否压缩 #gzip on; #### 虚拟服务器设置 server { #### 服务器的基本设置 # 指定服务端口 listen 80; # 指定主机名 server_name localhost; # 指定根文档目录,在Windows中使用“ /”而不是“ \”指定目录层次结构 root C:/web/htdocs/testProject/public; # 指定index文件、 # 指定对应以“ /”结尾的URL的index文件名 index index.php index.html index.htm; #按顺序匹配 ####服务器日志设置 # 指定访问日志的输出位置和格式 access_log logs/access.log main; # 指定错误日志的输出位置和输出级别 error_log logs/error.log notice; #### 错误页设置 #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #### PHP设置 # 正则表达式,路径匹配“ xxxx.php”,“ aaa / xxxx.php”,“ abc / xxxx.php / bbbb”等 location ~ [^/]\.php(/|$) { # 定义一个捕获$ fastcgi_path_info值的正则表达式 # 第一个()是$ fastcgi_script_name的值,第二个是$ fastcgi_path_info的值 fastcgi_split_path_info ^(.+?\.php)(/.*)$; # $document_root 在根目录中设置的路径 # $fastcgi_script_name 文件名路径 # -f 确定文件是否存在 # 如果没有文件,则返回404错误 if (!-f $document_root$fastcgi_script_name) { return 404; } # 设置IP地址和端口以访问php fastcgi_pass 127.0.0.1:9000; # 设置php中的index文件名, # 指定对应以“ /”结尾的URL的index文件名 fastcgi_index index.php; #### fastcgi_param的设置 # 读取一个fastcgi_params文件,其中包含fastcgi_params的许多设置 include fastcgi_params; # 通过清空“ HTTP_PROXY”参数来缓解HTTPoxy漏洞 fastcgi_param HTTP_PROXY ""; # “ SCRIPT_FILENAME”参数是php-fpm用来确定脚本名称的设置 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }


    (PHP)

    直接将“ php.ini-development”复制并粘贴到php目录下,并将其重命名为“ php.ini”

    启动

    (nginx)

    打开控制台命令窗口,将当前目录移至nginx目录(nginx.exe所在的位置)并执行以下命令:

    start nginx.exe

    (PHP)

    打开控制台命令窗口,将当前目录移至php目录(php-cgi.exe所在的位置)并执行以下命令:

    start php-cgi.exe -b 127.0.0.1:9000

    终止

    (nginx)

    打开控制台命令窗口,将当前目录移至nginx目录(nginx.exe所在的位置)并执行以下命令:

    nginx.exe -s stop

    (PHP)

    打开控制台命令窗口,将当前目录移至php目录(php-cgi.exe所在的位置)并执行以下命令:

    Taskkill /im php-cgi.exe

  • PHP 141 0 1 发布

    Dokuwiki是用PHP编写的,因此我们首先需要安装好PHP环境。Web服务器现在nginx用的很多,老牌的apache也仍占有一席之地。

    nginx环境

    windows下的nginx+php服务器安装请参阅「windows下搭建nginx-php服务器」一文。

    下载Dokuwiki

    Dokuwiki官网下载Dokuwiki最新版

    安装Dokuwiki

    将下载的Dokuwiki包文件解压至htdocs/dokuwiki目录。

    配置Nginx

    在nginx.conf文件中加入dokuwiki相关配置

    http { #(...)

    server{
    #(...)
    location ~ ^/dokuwiki/(data|conf|bin|inc)/ { # secure DokuWiki
    deny all;
    }
    # serve static files
    location ~ ^/dokuwiki/lib/^((?!php).)*$ {
    root C:/www/htdocs/dokuwiki/lib; #adapt if needed
    expires 30d;
    }
    }
    }

    配置Dokuwiki

    在浏览器里打开http://localhost/dokuwiki,初期配置dokuwiki

    apache环境

    准备中

  • PHP 145 0 1 发布
    全局变量$ACT

    DokuWiki根据「?do =」参数的指定的动作模式,对页面(文档)进行显示(show),编辑(edit),保存(save)等不同的处理。
    $ACT变量保存的就是上面这个动作模式值。

    show
    显示页面edit
    编辑页面preview
    预览页面save
    保存页面backlink
    反向链接revisions
    历史版本media
    媒体index
    sitemaprecent
    最近变更search
    检索

    例如,如果仅当在显示页面时才做部分处理,则可对动作模式进行判断,如下所示。

    <?php if($ACT == 'show') { // } ?> $conf

    这是一个数组变量,用于保存DokuWiki配置设置信息。 包括在DokuWiki的基本设置以及模板和插件等信息。

    $ID

    变量$ID保存页面名。 在以下名称空间和页面结构中,$ID保存的值则是example1。

    root └ ns1 └ ns1-1 └ example1 ns1:ns1-1:example1 $INFO

    它是一个数组变量,用于保存有关DokuWiki页面的信息。

    主要内容有

    id
    同$IDnamespace
    当前页面の名字空间isadmin
    是否管理员用户ismobile
    是否mobile终端外部链接Dokuwiki官方说明
  • PHP 161 0 1 发布

    Data插件用于向Wiki页面追加结构化数据。

    语法

    本插件由多个块语法组成:

    Data Entry
    入力Data Table
    输出Data List
    输出Related Pages
    输出Tag Cloud Data Entry

    用于向页面添加结构化数据。 这里输入的所有数据都与页面绑定。 因此,这个块命令一个页面里只能使用一次。
    下面是一个例子:

    ---- dataentry projects ---- type : web development volume : 1 Mrd # how much do they pay? employees : Joe, Jane, Jim description_wiki: **Important** project customer_page : customers:microsoft deadline_dt : 2009-08-17 server_pages : servers:devel01, extern:microsoft website_url : http://www.microsoft.com task_tags : programming, coding, design, html  ----

    块里面输入项目名和项目值,项目名的规则如下:

    項目名自由如果名称以s字符结尾,则表示该项目是一个多值(各个值用逗号分隔)项目。如果项目名虽然以s字符结尾,但并不是多值项目,请在名称末尾添加下划线(例如:thickness_:1cm)。
    如果多值项目名并不希望在结尾添加个s字符,请在名称末尾再加上一个s。例如:
    name : John → name: Johnnames: John, Jack → name: John, Jackname_tag : John, Jack → name: [[John, Jack]]name_tags: John, Jack → name: [[John]], [[Jack]]thickness : 1cm → thicknes: 1cmthickness_: 1cm → thickness: 1cmthicknesss: 1cm, 2inch → thickness: 1cm, 2inch可以将特殊类型添加到名称中,以对输出进行相应的格式化。 使用下划线分隔标识符和类型。 当前可用的类型有:dt – YYYY-MM-DD格式的日期。page – 该项目值被视为Wiki页面名,并将在输出成链接。这里的页面名必须是一个绝对路径名。title – 类似于page。该项目值被视为wiki页面的Titlenspage – 类似于page。该项目值被视为wiki页面的名字空间。url – 该项目值被视为外部链接。tag – mail – 该项目值被视为邮箱地址。img<num> – wiki – 该项目值被视为wiki文本。 pageid –hidden – 使用类型时,请在末尾为多个值添加s(例如在server_pages行中)

    在项目值中,可以使用下面这两个系统变量:

    %lang%
    网站默认的语言代码。%trans%
    当前页面的语言代码Data Table

    用于将附加到Wiki中各个页面的结构化数据列表输出。 该列表可以排序和过滤, 也支持分页。下面是一个例子:

    ---- datatable ---- cols : %pageid%, employees, deadline_dt, website_url, volume headers : Details, Assigned Employees, Deadline, Personal website, $$$ max : 10 filter : type=web development sort : ^volume ----

    上面的配置将显示一个表格,其中包含type为web development的project的信息,包括分配给该Project的员工,截止日期和数量。 该表将按volume排序,最多显示10行。
    与Data Entry类似,也可以通过在列名后加上类型别名来对列中的值进行格式化。冒号前面的关键字是配置选项,后面的值是实际设置。有以下配置选项:

    cols/select
    必须。要显示的项目。 使用与“Data Entry”中相同的名称。 head/header/headers
    可选。如果指定,这些名称将在表标题中使用。max/limit
    可选。指定显示的最大行数,超过最大行数的数据将自动分页显示。 如果未给出,则显示所有匹配的行sort/order
    可选。指定用于排序的项目,前面添加^表示反转排序filter/where/filterand/and
    可选。指定过滤条件。 多次指定时各个过滤条件将进行“与”操作。 filteror/or
    可选。 类似于filter,但多次指定时各个过滤条件将进行“或”操作。dynfilters
    可选。 Set to 1 to enable a row of input fields for dynamically filtering the tablesummarize
    可选。 设成1表示对列进行合计。align
    可选。 列对齐列表。 对齐方式可以是左(l),中(c)或右(r)rownumbers
    可选。设成1表示显示行号。widths
    可选。指定列的显示宽度。

    过滤条件可以使用以下比较运算符:

    =
    等于!= or <>
    不等于<
    小于<=
    小于或等于>
    大于>=
    大于或等于~ *~ !~

    列和过滤条件里可使用以下系统变量:

    %user%
    当前登录用户%groups%
    当前登录用户的组%now%
    当前的系统日期%lang%
    网站默认的语言代码。%trans%
    当前页面的语言代码。%pageid% T
    页面ID%title%
    页面的Title.%class%
    Data Entry的CSS类名%lastmod%
    页面最终修改时间Data List

    Data List的工作方式与Data Table相同,并且接受相同的参数。 但是不显示表格,而是显示无序列表。默认情况下,所有选定的列均以空格连接。 如果未设置sepbyheaders,则完全忽略header参数。 不使用分页。

    sepbyheaders
    可选。设置为1以将Header用作值之间的分隔符 ---- datalist ---- cols : %pageid%, volume max : 10 filter : type=web development sort : ^volume Related Pages

    用于显示与当前页面相似的页面列表,cols选项中指定用于相似性比较的列。 另外还可以设置过滤条件和排序选项。下面一个例子:

    ---- datarelated ---- cols : task_tags, type title : Similar projects max : 5 sort : ^volume ---- 定制样式

    Data Entry的各个项目的输出位置可以通过CSS来进行定制,下面是一个例子:

    Data Entry

    ---- dataentry character24 ---- name : Jack Bauer agency_nspage : CTU status_tags : alive, active, disowned, furtive .... more info ----

    CSS

    div.character24 { /* code for the container block, such as position, layout and borders, goes here */ float: right; width: 33%; }

    div.character24 dl > dt {
    /* this will allow you to style the definition terms */
    font-variant: small-caps;
    }

    div.character24 dl > dt + dd {
    /* this will allow you to style to the definition values */
    font-family: sans-serif;
    }

    div.character24 dl dd.name{
    /* this makes the name larger than the rest */
    font-size: 120%;
    }

    定制编辑器

    Data插件是第一个为其数据条目提供自定义编辑器的插件。 数据条目具有自己的编辑按钮。 按下此按钮时,用户将获得一个编辑表单,在其中可以编辑数据条目的内容。


    Custom editor: Editing structure and values


    Custom editor: Editing only values by switching on config option edit_content_only

    配置选项edit_content_only启用后,将可使用一些不错的字段:

    Dropdown 
    显示下拉列表,列表里的可选值由 Valid values 列定义。Datepicker 
    显示日期pickerAutocompletion

  • PHP 201 0 1 发布

    Bootswrapper插件结合Bootstrap3模板,用于为wiki页面插入各类Bootstrap组件:

    JumbotronButtonsAlertsTextTooltipsGridsThumbnailsPanelsWellsLabelsNav & Tabs (with dropdown)Page headingLeadBadgesList GroupProgress BarsAffixCarouselAccordionCalloutsModal (with remote attribute)Popover语法Jumbotron <jumbotron> ===== Hello, world! ===== This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featuredcontent or information. </jumbotron> Panel <panel type="default" title="Title of Panel" subtitle="Subtitle" icon="fa fa-house"> Panel content </panel> Alert <alert type="success" icon="glyphicon glyphicon-user" dismiss="true"> **Well done!** You successfully read this important alert message. </alert> Text * <text type="muted">muted</text> * <text type="primary">primary</text> * <text type="success">success</text> * <text type="info">info</text> * <text type="warning">warning</text> * <text type="danger">danger</text> Tooltip <tooltip title="Sample Text" location="bottom">Lorem ipsum</tooltip> dolor sit amet... Grids <grid> <col sm="6">.col-sm-6</col> <col sm="6">.col-sm-6</col> </grid> <grid> <col xs="12" sm="6" lg="8">.col-xs-12 .col-sm-6 .col-lg-8</col> <col xs="6" lg="4">.col-xs-6 .col-lg-4</col> </grid> Thumbnail <grid> ... <col xs="6" md="3"> <thumbnail> {{ wiki:dokuwiki-128.png }} </thumbnail> </col> ... </grid>
    <grid> ... <col xs="6" md="3"> <thumbnail> {{ wiki:dokuwiki-128.png }} <caption> === DokuWiki === //DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.// </caption> </thumbnail> ... </col> </grid>

    Well <well>Look, I'm in a well!</well> Button <button type="success" size="lg" icon="glyphicon glyphicon-edit">[[:wiki:welcome]]</button> Navigation <nav> * [[:start]] * [[:plugin:bootswrapper|Plugin]] * [[playground:playground]] * DokuWiki * [[:wiki:welcome]] * [[:wiki:syntax]] </nav> Accordion <accordion> <panel title="First panel"> First panel content </panel> <panel title="Second panel"> Second panel content </panel> </accordion>

  • PHP 269 0 1 发布

    Struct插件是一个真正意义上的数据库插件,它可以用来创建和管理数据库表,结合表单等其他插件,为页面提供各种应用功能。

    Schema定义

    Schema(模式)用于管理可以分配给页面的结构化数据,我们可以将它们视为表定义。模式定义哪些字段将可用以及它们具有什么类型。

    要创建新模式,请以管理员身份登录并访问“管理员”页面。从“附加插件”中选择Struct Schema Editor(结构模式编辑器)。使用表单创建新的模式。

    有两种模式:Page Schema(页面模式)和Lookup Schema(查找模式)。

    Page Schema(页面模式)
    页面模式定义可以分配给页面的数据结构。每组数据仅用于输入的一页,与Data插件相似。Lookup Schema(查找模式)
    查找模式不绑定页面,它们存储独立于任何页面的任意数量的数据集(行),我们可以将“查找模式”视为页面中的表格,可以在页面中任意引用其值。

    可以在目录中选择现有模式,并在此处进行编辑。

    重要提示:不能删除字段,只能将其禁用!

    数据编辑Page Schema

    如下图所示,Page Schema的数据行直接与页面关联。

    当在管理控制台中将Page Schema分配给所有匹配的页面(分配可以在页面或命名空间的基础上进行,也可以使用 正则表达式)后,数据将会自动添加到对应的页面。

    页面(/demo/products/003):

    Lookup Schema

    Lookup Schema存储未绑定到任何页面的任意数据。 要创建此类数据,需要通过特殊语法创建编辑器:

    ---- struct lookup ---- schema: someschema ----

    这将创建一个显示Lookup Schema表中所有数据的列表。 当前数据行可以通过内联编辑进行编辑,也可以通过删除按钮删除。 可以通过列表下方的表单添加新的数据行。

    数据查询

    通过简单的语法即可完成数据的查询的,该语法将生成一个动态表,其中列出了所有页面以及与某些条件匹配的关联数据。

    ---- struct table ---- schema: schema_name cols: %pageid%, other, cols ----


    选项

    schema/from
    必须。列出要查询哪些schema表里的数据。cols/select
    必须。要显示的项目。 使用与“Data Entry”中相同的名称。 head/header/headers
    可选。如果指定,这些名称将在表标题中使用。max/limit
    可选。指定显示的最大行数,超过最大行数的数据将自动分页显示。 如果未给出,则显示所有匹配的行sort/order
    可选。指定用于排序的项目,前面添加^表示反转排序filter/where/filterand/and
    可选。指定过滤条件。 多次指定时各个过滤条件将进行“与”操作。filteror/or
    可选。 类似于filter,但多次指定时各个过滤条件将进行“或”操作。dynfilters
    可选。 Set to 1 to enable a row of input fields for dynamically filtering the tablesummarize
    可选。 设成1表示对列进行合计。align
    可选。 列对齐列表。 对齐方式可以是左(l),中(c)或右(r)rownumbers
    可选。设成1表示显示行号。width/widths
    可选。指定列的显示宽度。csv
    可选。设置为则不显示CSV导出按钮

    别名

    从包含相同字段名的多个Schema中选择数据时,必须在它们之前加上Schema名称:

    ---- struct table ---- schema: schema1, schema2 cols: %pageid%, schema1.name, schema2.name ----

    可以为Schema定义别名, 别名与Schema名称之间用空格分隔:

    ---- struct table ---- schema: schema1 A, schema2 B cols: %pageid%, A.name, B.name ----

    特殊列名

    %pageid%%title%%lastupdate%%lasteditor%%lastsummary%外部链接Official site
  • PHP 212 0 1 发布
    JavaScript文件

    DokuWiki本体的JavaScript文件在lib/scripts目录中,jQuery库文件也在里面。
    像CSS一样,有一个PHP程序lib/exe/js.php,它把相关的JavaScript文件(例如模板和插件)打包到一起,并由tpl_metaheaders()函数调用。

    加载以下JavaScript。

    DokuWiki自动生成的JavaScript:
    编辑屏幕工具栏等。DokuWiki本体的JavaScript文件:
    lib/scripts/*.js插件的JavaScript文件:
    lib/plugins/<插件名称>/script.js模板的JavaScript文件:
    lib/tpl/<模板名称>/script.js包含用户自定义代码的JavaScript文件:
    conf/userscript.js

    如果要自定义JavaScript并添加处理,则基本上应将其添加到用户脚本conf / userscript.js)。

    Include语法

    DokuWiki的JavaScript调度程序允许您使用特殊的JavaScript注释来包含其他脚本文件。 这在通常只解析单个JavaScript文件的情况下很有用,例如 在模板或插件中。

    include

    /* DOKUWIKI:include somefile.js */

    include_once

    /* DOKUWIKI:include_once common_library.js */ 全局变量

    DokuWiki提供了可在JavaScript中使用的预定义全局变量,下面时较常用的一些:

    DOKU_BASE:根目录路径(ex:/)DOKU_TPL: 模板路径(ex:/lib/tpl/<模板名称>/)LANG:一组语言依存文本值JSINFOACT:  当前动作模式(ex:show)id:当前页面ID(ex:products:pen)isadmin:表示是否时管理员isauth:表示是否时作者namespace:当前名称空间(ex:products)useHeadingNavigation :表示是否对导航链接使用第一个标题useHeadingContent:表示是否对内容链接使用第一个标题外部链接Dokuwiki官方说明
  • PHP 897 0 1 发布
    CSS文件

    DokuWiki本体的CSS文件位于lib / styles目录中,不过DokuWiki本体仅定义了一些最基础的CSS,更多的CSS存在于模板和各个插件里面。
    所有CSS文件都是通过lib/exe /css.php程序获取的。该程序还处理缓存,模式替换,LESS预处理和优化,由tpl_metaheaders()函数调用。

    加载CSS的顺序如下: 在CSS中,如果为同一属性指定了不同的值,并且样式冲突,则稍后加载的样式将优先,并且属性值将被覆盖,因此首选样式是从后面开始。

    基本样式:lib /styles/*.css插件样式:lib / plugins / <插件名称> / *。css模板样式:在lib / tpl / <模板名称> /style.ini中定义用户样式:conf / user * .css

    如果要通过自定义CSS添加样式,则基本上应将其添加到用户样式(conf / user * .css)中。

    媒体类型

    样式表支持五种媒体类型:

    screen:用于显示器print:用于打印all:用于所有的媒体设备rtl:feed:外部链接Dokuwiki官方说明

  • PHP 8210 0 1 发布

    Bootstrap3是一个高度可定制的基于Bootstrap的DokuWiki模板,具有响应性,适用于所有设备(移动设备,平板电脑,台式机等)。

    功能和特点HTML5和CSS3基于Bootstrap 3.xGlyphicons 和 FontAwesome图标AnchorJS支持可高度定制丰富的HTML和DokuWiki钩子侧边栏支持(左侧和右侧)主题切换器插件统合Bootstrap Wrapper PluginDiagram PluginDiscussion PluginEdittable PluginExplain PluginInlinetoc PluginLinkback PluginMove PluginOverlay PluginPublish PluginRack PluginTagging PluginTags PluginTranslation PluginUser Home-Page PluginWrap Plugin - TabsTplInc Plugin设定主题项目名项目说明值类型缺省值可选值bootstrapThemeBootstrap主题multichoicedefaultdefault
    optional
    custom
    bootswatchbootswatchTheme从Bootswatch.com选择主题multichoiceyeticerulean
    cosmo
    cyborg
    darkly
    flatly
    journal
    lumen
    paper
    readable
    sandstone
    simplex
    solar
    slate
    spacelab
    superhero
    united
    yeticustomTheme插入自定义主题的URLstringnullshowThemeSwitcher在导航栏中显示Bootswatch.com主题切换器onoff0hideInThemeSwitcher在主题切换器中隐藏主题multicheckboxnullcerulean
    cosmo
    cyborg
    darkly
    flatly
    journal
    lumen
    paper
    readable
    sandstone
    simplex
    solar
    slate
    spacelab
    superhero
    united
    yetithemeByNamespace按名字空间指定主题onoff0侧边栏项目名项目说明值类型缺省值sidebarPositionDokuWiki Sidebar position (left or right)multichoiceleftleft
    rightrightSidebarThe Right Sidebar page name, empty field disables the right sidebar.
    The Right Sidebar is displayed only when the default DokuWiki sidebar is enabled and is on the left position (see the sidebarPosition configuration). If do you want only the DokuWiki sidebar on right position, set the sidebarPosition configuration with right valuestringrightsidebarleftSidebarGridLeft sidebar grid classes col-{xs,sm,md,lg}-x (see Bootstrap Grids documentation)stringcol-sm-3 col-md-2rightSidebarGridRight sidebar grid classes col-{xs,sm,md,lg}-x (see Bootstrap Grids documentation)stringcol-sm-3 col-md-2sidebarOnNavbarDisplay the sidebar contents inside the navbar (useful on mobile/tablet devices)onoff0sidebarShowPageTitleDisplay Sidebar page titleonoff1导航栏项目名项目说明值类型缺省值inverseNavbarInverse navbaronoff0fixedTopNavbarFix navbar to toponoff0showTranslationDisplay translation toolbar (require Translation Plugin)onoff0showToolsDisplay Tools in navbarmultichoicealwaysnever
    logged
    alwaysshowHomePageLinkDisplay Home-Page link in navbaronoff0homePageURLUse custom URL for home-page linksstringnullshowUserHomeLinkDisplay User Home-Page link in navbaronoff1hideLoginLinkHide the login button in navbar. This option is useful in “read-only” DokuWiki installations (eg. blog, personal website)onoff0showEditBtnDisplay edit button in navbarmultichoicenevernever
    logged
    alwaysindividualToolsSplit the Tools in individual menu in navbaronoff0showIndividualToolEnable/Disable individual tool in navbarmulticheckboxsite,pageuser
    site
    pageshowSearchFormDisplay Search form in navbarmultichoicealwaysnever
    logged
    alwaysshowAdminMenuDisplay Administration menuonoff0useLegacyNavbarUse legacy and deprecated navbar.html hook (consider in the future to use the :navbar hook)onoff0showNavbarDisplay navbar hookmultichoicealwayslogged
    alwaysnavbarLabelsShow/Hide individual labelmulticheckboxlogin,registerlogin
    register
    admin
    tools
    user
    site
    page
    themes
    expand
    profileshowAddNewPageEnable the Add New Page plugin in navbar (require Add New Page Plugin)multichoicenevernever
    logged
    alwaysnotifyExtensionsUpdateNotify extensions update (for Admin users)onoff0Semantic项目名项目说明值类型缺省值semanticEnable semantic dataonoff1schemaOrgTypeSchema.org type (Article, NewsArticle, TechArticle, BlogPosting, Recipe)multichoiceArticleArticle
    NewsArticle
    TechArticle
    BlogPosting
    RecipeshowSemanticPopupDisplay a popup with an extract of the page when the user hover on wikilink (require Semantic Plugin)onoff0布局项目名项目说明值类型Default ValuefluidContainerEnable the fluid container (full-width of page)onoff0fluidContainerBtnDisplay a button in navbar to expand containeronoff0pageOnPanelEnable the panel around the pageonoff1tableFullWidthEnable 100% full table width (Bootstrap default)onoff1tableStyleTable stylemulticheckboxstriped,condensed,responsivestriped
    bordered
    hover
    condensed
    responsiveshowLandingPageEnable the landing page (without a sidebar and the panel around the page)onoff0landingPagesLanding page name (insert a regex)regex(intro)showPageToolsEnable the DokuWiki-style Page Toolsmultichoicealwaysnever
    logged
    alwaysshowPageIdDisplay the DokuWiki page name (pageId) on toponoff1showBadgesShow badge buttons (DokuWiki, Donate, etc)onoff1showLoginOnFooterDisplay a “little” login link on footer. This option is useful when hideLoginLink is ononoff0showWikiInfoDisplay DokuWiki name, logo and tagline on footeronoff1文章目录 项目名项目说明值类型缺省值tocAffixAffix the TOC during page scrollingonoff1tocCollapseSubSectionsCollapse all sub-sections in TOC to save spaceonoff1tocCollapseOnScrollCollapse TOC during page scrollingonoff1tocCollapsedCollapse TOC on every pagesonoff0tocLayoutTOC layoutmultichoicedefaultdefault
    navbarg钩子HTML钩子

    所有文件必须位于模板目录(lib / tpl / bootstrap3 /)或conf /目录中。

    文件名插入到页面HTML中的位置meta.html <head>和</head>之间topheader.html紧接着<body>标签之后header.htmlAbove the upper blue bar, below the pagename and wiki titlenavbar.htmlDEPRECATED (see the note below) - Inside the navbar, use this to add additional links (e.g. <li><a href=“/foo”>Foo</a></li>)pageheader.htmlbreadcrumbs下面,页面实际内容的上方pagefooter.htmlAbove the lower blue bar, below the last changed Datefooter.html在页面的最后,位于</ body>标记之前sidebarheader.html边侧栏上方sidebarfooter.html边侧栏下方social.htmlBelow the header.html, use this to add a social buttons (eg. Google+, Twitter, LinkedIn, etc)rightsidebarheader.html右边侧栏上方rightsidebarfooter.html
    右边侧栏下方
    Dokuwiki钩子

    可以通过创建简单的DokuWiki“钩子”页面来自定义页面的各个部分。 bootstrap3模板会将这些钩子页面内容插入到页面的总体布局中。

    钩子页面名说明名字空间单位:sidebarThe sidebarYES:rightsidebarThe right-sidebarYES:navbarNavbar with sub-menusYES:pageheaderHeader of the Wiki articleYES:pagefooterFooter of the Wiki articleYES:footerFooter of the pageYES:cookie:bannerCookie-Law bannerNO:cookie:policyCookie-Law policyNO:helpHelp page for “Help Page Icon”YES:headerHeader of page below the navbarYES:topheaderTop Header of page (on top of navbar if fixedTopNavbar is off)YES

热门总结

  • PHP 8210 0 1 发布

    Bootstrap3是一个高度可定制的基于Bootstrap的DokuWiki模板,具有响应性,适用于所有设备(移动设备,平板电脑,台式机等)。

    功能和特点HTML5和CSS3基于Bootstrap 3.xGlyphicons 和 FontAwesome图标AnchorJS支持可高度定制丰富的HTML和DokuWiki钩子侧边栏支持(左侧和右侧)主题切换器插件统合Bootstrap Wrapper PluginDiagram PluginDiscussion PluginEdittable PluginExplain PluginInlinetoc PluginLinkback PluginMove PluginOverlay PluginPublish PluginRack PluginTagging PluginTags PluginTranslation PluginUser Home-Page PluginWrap Plugin - TabsTplInc Plugin设定主题项目名项目说明值类型缺省值可选值bootstrapThemeBootstrap主题multichoicedefaultdefault
    optional
    custom
    bootswatchbootswatchTheme从Bootswatch.com选择主题multichoiceyeticerulean
    cosmo
    cyborg
    darkly
    flatly
    journal
    lumen
    paper
    readable
    sandstone
    simplex
    solar
    slate
    spacelab
    superhero
    united
    yeticustomTheme插入自定义主题的URLstringnullshowThemeSwitcher在导航栏中显示Bootswatch.com主题切换器onoff0hideInThemeSwitcher在主题切换器中隐藏主题multicheckboxnullcerulean
    cosmo
    cyborg
    darkly
    flatly
    journal
    lumen
    paper
    readable
    sandstone
    simplex
    solar
    slate
    spacelab
    superhero
    united
    yetithemeByNamespace按名字空间指定主题onoff0侧边栏项目名项目说明值类型缺省值sidebarPositionDokuWiki Sidebar position (left or right)multichoiceleftleft
    rightrightSidebarThe Right Sidebar page name, empty field disables the right sidebar.
    The Right Sidebar is displayed only when the default DokuWiki sidebar is enabled and is on the left position (see the sidebarPosition configuration). If do you want only the DokuWiki sidebar on right position, set the sidebarPosition configuration with right valuestringrightsidebarleftSidebarGridLeft sidebar grid classes col-{xs,sm,md,lg}-x (see Bootstrap Grids documentation)stringcol-sm-3 col-md-2rightSidebarGridRight sidebar grid classes col-{xs,sm,md,lg}-x (see Bootstrap Grids documentation)stringcol-sm-3 col-md-2sidebarOnNavbarDisplay the sidebar contents inside the navbar (useful on mobile/tablet devices)onoff0sidebarShowPageTitleDisplay Sidebar page titleonoff1导航栏项目名项目说明值类型缺省值inverseNavbarInverse navbaronoff0fixedTopNavbarFix navbar to toponoff0showTranslationDisplay translation toolbar (require Translation Plugin)onoff0showToolsDisplay Tools in navbarmultichoicealwaysnever
    logged
    alwaysshowHomePageLinkDisplay Home-Page link in navbaronoff0homePageURLUse custom URL for home-page linksstringnullshowUserHomeLinkDisplay User Home-Page link in navbaronoff1hideLoginLinkHide the login button in navbar. This option is useful in “read-only” DokuWiki installations (eg. blog, personal website)onoff0showEditBtnDisplay edit button in navbarmultichoicenevernever
    logged
    alwaysindividualToolsSplit the Tools in individual menu in navbaronoff0showIndividualToolEnable/Disable individual tool in navbarmulticheckboxsite,pageuser
    site
    pageshowSearchFormDisplay Search form in navbarmultichoicealwaysnever
    logged
    alwaysshowAdminMenuDisplay Administration menuonoff0useLegacyNavbarUse legacy and deprecated navbar.html hook (consider in the future to use the :navbar hook)onoff0showNavbarDisplay navbar hookmultichoicealwayslogged
    alwaysnavbarLabelsShow/Hide individual labelmulticheckboxlogin,registerlogin
    register
    admin
    tools
    user
    site
    page
    themes
    expand
    profileshowAddNewPageEnable the Add New Page plugin in navbar (require Add New Page Plugin)multichoicenevernever
    logged
    alwaysnotifyExtensionsUpdateNotify extensions update (for Admin users)onoff0Semantic项目名项目说明值类型缺省值semanticEnable semantic dataonoff1schemaOrgTypeSchema.org type (Article, NewsArticle, TechArticle, BlogPosting, Recipe)multichoiceArticleArticle
    NewsArticle
    TechArticle
    BlogPosting
    RecipeshowSemanticPopupDisplay a popup with an extract of the page when the user hover on wikilink (require Semantic Plugin)onoff0布局项目名项目说明值类型Default ValuefluidContainerEnable the fluid container (full-width of page)onoff0fluidContainerBtnDisplay a button in navbar to expand containeronoff0pageOnPanelEnable the panel around the pageonoff1tableFullWidthEnable 100% full table width (Bootstrap default)onoff1tableStyleTable stylemulticheckboxstriped,condensed,responsivestriped
    bordered
    hover
    condensed
    responsiveshowLandingPageEnable the landing page (without a sidebar and the panel around the page)onoff0landingPagesLanding page name (insert a regex)regex(intro)showPageToolsEnable the DokuWiki-style Page Toolsmultichoicealwaysnever
    logged
    alwaysshowPageIdDisplay the DokuWiki page name (pageId) on toponoff1showBadgesShow badge buttons (DokuWiki, Donate, etc)onoff1showLoginOnFooterDisplay a “little” login link on footer. This option is useful when hideLoginLink is ononoff0showWikiInfoDisplay DokuWiki name, logo and tagline on footeronoff1文章目录 项目名项目说明值类型缺省值tocAffixAffix the TOC during page scrollingonoff1tocCollapseSubSectionsCollapse all sub-sections in TOC to save spaceonoff1tocCollapseOnScrollCollapse TOC during page scrollingonoff1tocCollapsedCollapse TOC on every pagesonoff0tocLayoutTOC layoutmultichoicedefaultdefault
    navbarg钩子HTML钩子

    所有文件必须位于模板目录(lib / tpl / bootstrap3 /)或conf /目录中。

    文件名插入到页面HTML中的位置meta.html <head>和</head>之间topheader.html紧接着<body>标签之后header.htmlAbove the upper blue bar, below the pagename and wiki titlenavbar.htmlDEPRECATED (see the note below) - Inside the navbar, use this to add additional links (e.g. <li><a href=“/foo”>Foo</a></li>)pageheader.htmlbreadcrumbs下面,页面实际内容的上方pagefooter.htmlAbove the lower blue bar, below the last changed Datefooter.html在页面的最后,位于</ body>标记之前sidebarheader.html边侧栏上方sidebarfooter.html边侧栏下方social.htmlBelow the header.html, use this to add a social buttons (eg. Google+, Twitter, LinkedIn, etc)rightsidebarheader.html右边侧栏上方rightsidebarfooter.html
    右边侧栏下方
    Dokuwiki钩子

    可以通过创建简单的DokuWiki“钩子”页面来自定义页面的各个部分。 bootstrap3模板会将这些钩子页面内容插入到页面的总体布局中。

    钩子页面名说明名字空间单位:sidebarThe sidebarYES:rightsidebarThe right-sidebarYES:navbarNavbar with sub-menusYES:pageheaderHeader of the Wiki articleYES:pagefooterFooter of the Wiki articleYES:footerFooter of the pageYES:cookie:bannerCookie-Law bannerNO:cookie:policyCookie-Law policyNO:helpHelp page for “Help Page Icon”YES:headerHeader of page below the navbarYES:topheaderTop Header of page (on top of navbar if fixedTopNavbar is off)YES

  • PHP 897 0 1 发布
    CSS文件

    DokuWiki本体的CSS文件位于lib / styles目录中,不过DokuWiki本体仅定义了一些最基础的CSS,更多的CSS存在于模板和各个插件里面。
    所有CSS文件都是通过lib/exe /css.php程序获取的。该程序还处理缓存,模式替换,LESS预处理和优化,由tpl_metaheaders()函数调用。

    加载CSS的顺序如下: 在CSS中,如果为同一属性指定了不同的值,并且样式冲突,则稍后加载的样式将优先,并且属性值将被覆盖,因此首选样式是从后面开始。

    基本样式:lib /styles/*.css插件样式:lib / plugins / <插件名称> / *。css模板样式:在lib / tpl / <模板名称> /style.ini中定义用户样式:conf / user * .css

    如果要通过自定义CSS添加样式,则基本上应将其添加到用户样式(conf / user * .css)中。

    媒体类型

    样式表支持五种媒体类型:

    screen:用于显示器print:用于打印all:用于所有的媒体设备rtl:feed:外部链接Dokuwiki官方说明

  • PHP 269 0 1 发布

    Struct插件是一个真正意义上的数据库插件,它可以用来创建和管理数据库表,结合表单等其他插件,为页面提供各种应用功能。

    Schema定义

    Schema(模式)用于管理可以分配给页面的结构化数据,我们可以将它们视为表定义。模式定义哪些字段将可用以及它们具有什么类型。

    要创建新模式,请以管理员身份登录并访问“管理员”页面。从“附加插件”中选择Struct Schema Editor(结构模式编辑器)。使用表单创建新的模式。

    有两种模式:Page Schema(页面模式)和Lookup Schema(查找模式)。

    Page Schema(页面模式)
    页面模式定义可以分配给页面的数据结构。每组数据仅用于输入的一页,与Data插件相似。Lookup Schema(查找模式)
    查找模式不绑定页面,它们存储独立于任何页面的任意数量的数据集(行),我们可以将“查找模式”视为页面中的表格,可以在页面中任意引用其值。

    可以在目录中选择现有模式,并在此处进行编辑。

    重要提示:不能删除字段,只能将其禁用!

    数据编辑Page Schema

    如下图所示,Page Schema的数据行直接与页面关联。

    当在管理控制台中将Page Schema分配给所有匹配的页面(分配可以在页面或命名空间的基础上进行,也可以使用 正则表达式)后,数据将会自动添加到对应的页面。

    页面(/demo/products/003):

    Lookup Schema

    Lookup Schema存储未绑定到任何页面的任意数据。 要创建此类数据,需要通过特殊语法创建编辑器:

    ---- struct lookup ---- schema: someschema ----

    这将创建一个显示Lookup Schema表中所有数据的列表。 当前数据行可以通过内联编辑进行编辑,也可以通过删除按钮删除。 可以通过列表下方的表单添加新的数据行。

    数据查询

    通过简单的语法即可完成数据的查询的,该语法将生成一个动态表,其中列出了所有页面以及与某些条件匹配的关联数据。

    ---- struct table ---- schema: schema_name cols: %pageid%, other, cols ----


    选项

    schema/from
    必须。列出要查询哪些schema表里的数据。cols/select
    必须。要显示的项目。 使用与“Data Entry”中相同的名称。 head/header/headers
    可选。如果指定,这些名称将在表标题中使用。max/limit
    可选。指定显示的最大行数,超过最大行数的数据将自动分页显示。 如果未给出,则显示所有匹配的行sort/order
    可选。指定用于排序的项目,前面添加^表示反转排序filter/where/filterand/and
    可选。指定过滤条件。 多次指定时各个过滤条件将进行“与”操作。filteror/or
    可选。 类似于filter,但多次指定时各个过滤条件将进行“或”操作。dynfilters
    可选。 Set to 1 to enable a row of input fields for dynamically filtering the tablesummarize
    可选。 设成1表示对列进行合计。align
    可选。 列对齐列表。 对齐方式可以是左(l),中(c)或右(r)rownumbers
    可选。设成1表示显示行号。width/widths
    可选。指定列的显示宽度。csv
    可选。设置为则不显示CSV导出按钮

    别名

    从包含相同字段名的多个Schema中选择数据时,必须在它们之前加上Schema名称:

    ---- struct table ---- schema: schema1, schema2 cols: %pageid%, schema1.name, schema2.name ----

    可以为Schema定义别名, 别名与Schema名称之间用空格分隔:

    ---- struct table ---- schema: schema1 A, schema2 B cols: %pageid%, A.name, B.name ----

    特殊列名

    %pageid%%title%%lastupdate%%lasteditor%%lastsummary%外部链接Official site
  • PHP 250 0 1 发布

    本文简单的总结了以下DokuWiki命名空间的基本用法,页面概述以及页面的创建/编辑/删除。

    关于命名空间和页面

    Dokuwiki里有两个基本要素:页面(Page)和页面所属的命名空间(Namespace)。页面记述内容,而命名空间则类似于目录或文件夹,以:(冒号)分隔。
    Dokuwiki系统将页面保存为文本文件(.txt),而命名空间则被保存为文件夹。

    例如,“ns1:ns1-1:example1”表示的是命名空间“ns1”中的命名空间“ns1-1”中的页面“example1”。如果命名空间指定为“ns1:ns1-1:”,则显示命名空间默认页面。此命名空间默认页面由设置项“start”设置,默认为“start”。也就是说,当指定“ns1:ns1-1:”时,显示“ns1:ns1-1:start”。

    但是,在除首页之外的命名空间中,建议在命名空间的上层创建一个与命名空间同名的页面,而不是创建命名空间默认页面“start”。换句话说,创建一个与命名空间同名的页面,例如下面底部的第二个和第三个“ns1”和“ns2”。当命名空间中没有“开始”页面时,DokuWiki有一种机制来引用上层次结构中具有相同名称命名空间的页面。

    Root ├ ns1 ns1: │ ├ ns1-1 ns1:ns1-1: │ │ └ example1 ns1:ns1-1:example1 │ └ ns1-2 ns1:ns1-2: │ └ example2 ns1:ns1-2:example2 ├ ns2 ns2: │ ├ ns2-1 ns2:ns2-1: │ │ └ example3 ns2:ns2-1:example3 │ └ ns2-2 ns2:ns2-2: │ └ example4 ns2:ns2-2:example4 ├ ns1 ns1 ├ ns2 ns2 └ start start页面的创建,编辑和删除

    创建页面的最常用方法是从现有页面链接到要创建的页面,然后转换到未创建页面以创建页面。

    页面的编辑是首先进到该页面,然后点击编辑按钮进行编辑。如果要删除某个页面,将该页面的内容清空保存即可。

  • PHP 212 0 1 发布
    JavaScript文件

    DokuWiki本体的JavaScript文件在lib/scripts目录中,jQuery库文件也在里面。
    像CSS一样,有一个PHP程序lib/exe/js.php,它把相关的JavaScript文件(例如模板和插件)打包到一起,并由tpl_metaheaders()函数调用。

    加载以下JavaScript。

    DokuWiki自动生成的JavaScript:
    编辑屏幕工具栏等。DokuWiki本体的JavaScript文件:
    lib/scripts/*.js插件的JavaScript文件:
    lib/plugins/<插件名称>/script.js模板的JavaScript文件:
    lib/tpl/<模板名称>/script.js包含用户自定义代码的JavaScript文件:
    conf/userscript.js

    如果要自定义JavaScript并添加处理,则基本上应将其添加到用户脚本conf / userscript.js)。

    Include语法

    DokuWiki的JavaScript调度程序允许您使用特殊的JavaScript注释来包含其他脚本文件。 这在通常只解析单个JavaScript文件的情况下很有用,例如 在模板或插件中。

    include

    /* DOKUWIKI:include somefile.js */

    include_once

    /* DOKUWIKI:include_once common_library.js */ 全局变量

    DokuWiki提供了可在JavaScript中使用的预定义全局变量,下面时较常用的一些:

    DOKU_BASE:根目录路径(ex:/)DOKU_TPL: 模板路径(ex:/lib/tpl/<模板名称>/)LANG:一组语言依存文本值JSINFOACT:  当前动作模式(ex:show)id:当前页面ID(ex:products:pen)isadmin:表示是否时管理员isauth:表示是否时作者namespace:当前名称空间(ex:products)useHeadingNavigation :表示是否对导航链接使用第一个标题useHeadingContent:表示是否对内容链接使用第一个标题外部链接Dokuwiki官方说明
  • PHP 201 0 1 发布

    Bootswrapper插件结合Bootstrap3模板,用于为wiki页面插入各类Bootstrap组件:

    JumbotronButtonsAlertsTextTooltipsGridsThumbnailsPanelsWellsLabelsNav & Tabs (with dropdown)Page headingLeadBadgesList GroupProgress BarsAffixCarouselAccordionCalloutsModal (with remote attribute)Popover语法Jumbotron <jumbotron> ===== Hello, world! ===== This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featuredcontent or information. </jumbotron> Panel <panel type="default" title="Title of Panel" subtitle="Subtitle" icon="fa fa-house"> Panel content </panel> Alert <alert type="success" icon="glyphicon glyphicon-user" dismiss="true"> **Well done!** You successfully read this important alert message. </alert> Text * <text type="muted">muted</text> * <text type="primary">primary</text> * <text type="success">success</text> * <text type="info">info</text> * <text type="warning">warning</text> * <text type="danger">danger</text> Tooltip <tooltip title="Sample Text" location="bottom">Lorem ipsum</tooltip> dolor sit amet... Grids <grid> <col sm="6">.col-sm-6</col> <col sm="6">.col-sm-6</col> </grid> <grid> <col xs="12" sm="6" lg="8">.col-xs-12 .col-sm-6 .col-lg-8</col> <col xs="6" lg="4">.col-xs-6 .col-lg-4</col> </grid> Thumbnail <grid> ... <col xs="6" md="3"> <thumbnail> {{ wiki:dokuwiki-128.png }} </thumbnail> </col> ... </grid>
    <grid> ... <col xs="6" md="3"> <thumbnail> {{ wiki:dokuwiki-128.png }} <caption> === DokuWiki === //DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.// </caption> </thumbnail> ... </col> </grid>

    Well <well>Look, I'm in a well!</well> Button <button type="success" size="lg" icon="glyphicon glyphicon-edit">[[:wiki:welcome]]</button> Navigation <nav> * [[:start]] * [[:plugin:bootswrapper|Plugin]] * [[playground:playground]] * DokuWiki * [[:wiki:welcome]] * [[:wiki:syntax]] </nav> Accordion <accordion> <panel title="First panel"> First panel content </panel> <panel title="Second panel"> Second panel content </panel> </accordion>

  • PHP 186 0 1 发布
    简介

    Bureaucracy是一个用于在DokuWiki中创建HTML表单的插件。 

    入力验证由插件自动处理,不需要编码。 基于表单入力的内容和事先指定的模板,可以自动生成邮件或创建新的页面。

    Bureaucracy插件可以用来实现用户咨询,用户发表等诸多网站应用功能。


    使用方法

    让我们从一个例子开始:

    <form> Action mail me@example.com Thanks "Thanks for submitting your valuable data." Fieldset "A set of fields" Textbox "Employee Name" "=Your Name" number "Your Age" >13 <99 email "Your E-Mail Address" textbox "Occupation (optional)" ! password "Some password" fieldset "even more fields" select "Please select an option" "Peaches|Apples|Oranges" static "Some static text that could be an agreement" yesno "Read the agreement?" textarea "Tell me about your self" textbox "You need to write 'agree' here" /^agree$/ submit "Submit Query" </form>

    如上所示,我们可以定义一个电子邮件地址,将数据发送到该电子邮件地址,并在用户提交表单时显示感谢文本。

    字段

    表单里可以定义各类字段(Field):

    通过指定类型和标签来定义字段(Field)。字段集(Fieldset)及有些字段(Field)如提交按钮(Submit)的标签是可选的有些字段(Field)如选择框(Select)需要设定其他参数可以在主要选项之后添加其他约束当参数包含空格时,它们需要用双引号引起来

    以下是要填写的各个字段:

    action
    第一个参数需指定表单的动作模式,当前支持的模式有:mail(邮件), template(模板)和script(脚本),可通过其他插件扩展动作模式。
    另外,可以定义多个action字段以使表单同时支持多个动作模式。mail(邮件)的其他参数::一个或多个电子邮件地址(必填)template(模板)模式的其他参数:
    用作模板的页面文件的路径(必填)所创建新页面的路径名或路径名前缀(必填)新页面路径中使用多个字段值时的分隔符(可选)script(脚本)模式的其他参数:在conf/plugin/bureaucracy/ 目录下的脚本文件名thanks
    定义提交表单时显示的文本消息。 (可选的)
    fieldset
    创建一组字段static
    静态文本wiki
    支持wiki文法的静态文本textbox
    单行文本输入框,需指定标签password
    密码输入框,需指定标签email
    邮件地址输入框,需指定标签。输入值会被进行有效性验证
    参数@@将字段值标记为邮件操作的回复地址。

    number
    数值输入框,需指定标签。输入值会被进行有效性验

    textarea
    多行文本输入框,需指定标签。默认10行大小,可使用参数xN(x23)(可选)修改。

    yesno
    复选框,需指定标签

    select
    单选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。multiselect
    多选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。
    radio
    一组单选框,需指定标签和选项列表(用“|”分隔,如 "Peaches|Apples|Oranges" )。
    hidden
    不可见字段。submit
    提交按钮,可指定标签(可选)user / users
    用户选择框,需指定标签。date
    日期(格式:YYYY-MM-DD)输入框,需指定标签。time
    时间(格式:(H)H:MM(:SS))输入框,需指定标签。usemailtemplate template_id
    addpage page_tpl page_tgtlabels
    标签,参数是一个Wiki页面,其中包含标签翻译列表file
    文件选择框,需指定标签。data_aliastextbox (需Data插件)qianjiestruct_field + struct_fieldhidden (需Struct插件)struct_schema (需Struct插件)约定如果数字前接符号”>“,表示输入数据必须大于该数字。如果数字前接符号”<“,表示输入数据必须小于该数字。符号”=“用于指定缺省值符号”!“用于指定字段可选符号“^”用于指定缺省焦点符号“@”用于在template处理模式中指定字段值作为页面路径名的一部分符号“@@”用于在mail处理模式中指定字段值作为回复的邮件地址在数字字段中使用数字0000,入力值位数不够的情况下将会在前面自动补0在数字字段中使用++,每次提交表单时将自动增加计数。用/字符括起来的正则表达式用于限定输入值,如:/ ^ [0-9 \ /()+ \-] + $ /
    适用于电话号码,仅允许数字和字符()-+ /外部标签

    缺省情况下,字段的标签直接定义在表单中。但我们也可以把标签统一定义在一个单独的wiki页面文件里,然后在表单里用labels字段指定该页面文件名,这点在需要对应多语言时尤其有用。

    <form> action mail me@example.com labels mylabels fieldset "field" textbox "name" number "age" >13 <99 submit "submit" </form>

    标签定义页面需要包含一个Wiki列表,其中包含名为label = translation的项目:

    * field = Tell us about yourself" * name = Your Name * age = Your Age * submit = Send your Data

    显示结果如下:

    动作模式

    Bureaucracy插件执行以下处理:

    显示表单验证用户输入将用户输入传送给动作模式

    最后一步的处理, 如上所述,需在动作字段中定义要使用的动作。 当前支持三种模式:邮件,模板和脚本。 可以轻松添加其他模式(例如,将数据存储在数据库中)。

    mail(邮件)模式

    这是一个简单的动作模式。 使用默认值时,所有用户输入将通过电子邮件发送到配置的电子邮件地址。 请参阅上面的示例如何使用它。 可以指定多个收件人邮件地址,以空格分隔。

    下面的例子将电子邮件自动发送到用户输入的地址:

    Fieldset "Some Information" Textbox "Employee Name" email Email_Address

    Action mail @@email_address@@

    字段usemailtemplate用于定义电子邮件的模板。 模板应包含两个代码块,其中包含发送邮件的文本和html版本。 页面上的其他文本将被忽略。 在模板中,您可以使用占位符。字段subject用于定义主题使用选项@@标记字段,该字段值将作为邮件的“回复”地址

    下面的例子定义了邮件的模板和主题:

    action mail @MAIL@ forename@surname.name usemailtemplate your:template subject "new special subject"

    下面时模板文件的内容:

    ======Mail template page====== <code html> Dear @@Your Name@@, You are <b>great<b>, you just <i>purchased</i> our @@What do you want@@! We will deliver it fast as possible, see the <a href="http://example.com/conditions">conditions</a>. Kind regards, Future Machines company </code> <code text> Dear @@Your Name@@, You are great, you just purchased our @@What do you want@@! We will deliver it fast as possible, see [1]. Kind regards, Future Machines company [1] http://example.com/conditions </code>

    template(模板)模式

    template模式使用给定的页面作为模板,将用户输入替换已定义的占位符从而创建新的Wiki页面。

    定义方法如下:

     action template [template] [destination] [separator] template可以是一个页面可以是一个名字空间(尾随冒号)。
    该名称空间所包含的所有子名称空间和页面都将被复制到目标位置,替换模式将应用于所有页面。如果指定下划线(_)作为模板名称时,插件将尝试使用目标名称空间的已配置名称空间模板。destination
    指定新页面的创建位置。 这通常是一个名称空间(尾随冒号)。 separator
    可以使用多个表单字段值创建新的页面名称。 此字符定义了将它们串联在一起时的分隔符。

    (定义结果页面)

    使用template模式时,我们需要定义应在何处创建结果页面。 这有多种方法。

    方法1是指定一个输出名称空间,并使用@符号标记命名字段。 <form> action template userstpl users: : fieldset "Create Your User Page" select "What's your Continent?" "Europe|N. America|S. America|Asia|Australia|Africa" @ textbox "What's your Name?" @ textarea "Enter a short bio" ! submit </form> 

    上面这个例子将使用Continent和name字段创建一个新页面。 例如。 如果我在这些字段中填写“Europe”和“andi”,则结果页面将是users:europe:andi。

    方法2通过在destination参数中使用占位符(由@@字符包围的字段名称。 另外,可以使用任何strftime参数)并在字段定义中省略@标记来实现对生成的页面名称进行更多控制。  <form> action template userstpl "users:%Y:@@What's your Name?@@:start" fieldset "Create Your User Page" select "What's your Continent?" "Europe|N. America|S. America|Asia|Australia" textbox "What's your Name?" textarea "Enter a short bio" ! yesno "Do have publication?" fieldset "Add your publications" "Do have publication?" textarea "Publications:" addpage users:publicationtemplate publications fieldset "Finish" submit </form>

    上面的代码将基于系统年份(2019)和我的名字创建一个命名空间,并在其中创建一个起始页面:users:2019:andi:start

    方法3当使用特殊的addpage(添加页面)字段。这个方法可以根据入力情况有选择的创建某些页面。 addpage additionaltpl somepage

    上例中的第二个字段集通过复选框添加了发布页面。 这里,其他页面的模板位于绝对路径上:users:publicationtemplate。 仅当选中yesno字段时,才会在users:2019:andy:start:publications上创建附加页面

    (创建页面模板)

    模板需要包含与表单相同的字段,并且还可以使用其他一些占位符。 其中一些可以用作表单字段的默认值:

    Placeholderaction@@Field label@@
    ##Field label##将由用户填写到表单中的实际值代替@curNS(arg)@
    @getNS(arg)@
    @noNS(arg)@
    @p_get_first_heading(arg)@将由相应的dokuwiki函数的结果替换。 arg可以都是静态值(例如。 @curNS(some:test:value)@),或字段的占位符(例如 @p_get_first_heading(@@ field @@)@)。
    @@Field label|Nice alternative@@对于空字段,显示缺省文本
    @NSBASE@生成页面的名字空间@YEAR@, @MONTH@, @DAY@, @TIME@, @TIMESEC@当前的年,月,日,时间@LANG@从设定中获得的语言代码@TRANS@从表单的页面ID获得的语言代码

    对于上面示例中的userstpl,我们可以定义成以下的页面

    ====== @@What's your Name?@@ ====== I'm living in @@What's your Continent?@@. I'm a user since %Y-%m-%d. @@Enter a short bio|FIXME please fill in your biography@@

    结果将看起来像这样

    ====== Andreas Gohr ====== I'm living in Europe. I'm a user since 2007-12-23. It's me :-)

    (user字段信息)

    使用一个或多个user字段时,可以在模板中使用所选用户的其他数据:

    “ @@ user.name @@”
    替换为用户全名“ @@ user.mail @@”
    替换为用户电子邮件地址“ @@ user.grps @@”
    由用户grps替换,逗号分隔“ @@ user.grps(separator)@@”
    由用户组替换,并由“ separator”分隔'@@ users(separator)@@'-
    替换为用户昵称列表,并以'separator'分隔'@@ users(separator).name'-
    用用户全名列表替换,用'separator'分隔'@@ users(separator).mail'-
    用用户电子邮件列表替换,用'separator'分隔

    可以省略分隔符,然后使用逗号作为分隔符。 例如。 @@ users.mail @@,@@ users.name @@,不支持@@ users.grps @@

    script(脚本)模式

    script模式将表单数据提交给PHP脚本,PHP脚本可以对数据执行任何所需的操作。

    PHP脚本必须放在conf/plugin/bureaucracy /目录中,它必须包含一个名为helper_plugin_bureaucracy_handler_scriptname的类,并实现接口dokuwiki\plugin\ bureaucracy\interfaces\bureaucracy_handler_interface,这意味着该类必须具有handleData($ fields,$ thanks)方法,并以字段和thank-message作为参数。 如果成功,则返回结果消息,如果发生错误,则返回false。

    下面是一个简单的script模式的例子,仅实现了在DokuWiki的调试日志中打印表单的数据。

    <form> action script example.php textbox "Type something" submit "Write to log" </form>

    conf/plugin/bureaucracy/example.php

    <?php use dokuwiki\plugin\bureaucracy\interfaces\bureaucracy_handler_interface; class helper_plugin_bureaucracy_handler_example implements bureaucracy_handler_interface { /** * Log the form fields to DokuWiki's debug log */ public function handleData($fields, $thanks) { dbglog($fields, __FILE__ . ': ' . __LINE__); dbglog($thanks, __FILE__ . ': ' . __LINE__); return $thanks; }

    }

  • PHP 174 0 1 发布

    以在windows 10 64 bit系统里搭建本地开发用的PHP服务器为例。

    下载

    (nginx)

    nginx官网下载「 Stable version(安定版)」的「 nginx/Windows-x.x.x(Windows版)」。

    (PHP)
    PHP官网下载最新版的「Non Thread Safe版」zip文件

    安装

    将下载下来的nginx和php的zip文件解压至任意目录,下面是笔者本地的目录结构

    C:\ └ web\ ├ htdocs\ ← 网站应用的根目录 ├ nginx\ ← nginx的安装目录 └ php7\ ← php的安装目录 配置

    (nginx)

    conf/nginx.conf

    # 指定用来运行工作进程的用户 #user nobody; # 指定工作进程数量 worker_processes 1; # 指定用于存储进程ID的文件位置 #pid logs/nginx.pid; events { # 指定每个工作进程最大连接数 worker_connections 1024; } http { #### MIME类型设置 include mime.types; #读取MIME类型的定义文件 default_type application/octet-stream; #指定无法通过扩展名确定MIME类型时的缺省MIME类型 #### 访问日志设置 # 访问日志格式设置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 指定访问日志的输出位置和格式 #access_log logs/access.log main; #### 与发送(响应)到客户端相关的设置 # 是否使用sendfile命令发 sendfile on; # 是否使用Linux TCP_CORK套接字选项 #tcp_nopush on; # keepaliveの超时時間设置、65秒 keepalive_timeout 65; # 设置向客户端发送内容时是否压缩 #gzip on; #### 虚拟服务器设置 server { #### 服务器的基本设置 # 指定服务端口 listen 80; # 指定主机名 server_name localhost; # 指定根文档目录,在Windows中使用“ /”而不是“ \”指定目录层次结构 root C:/web/htdocs/testProject/public; # 指定index文件、 # 指定对应以“ /”结尾的URL的index文件名 index index.php index.html index.htm; #按顺序匹配 ####服务器日志设置 # 指定访问日志的输出位置和格式 access_log logs/access.log main; # 指定错误日志的输出位置和输出级别 error_log logs/error.log notice; #### 错误页设置 #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #### PHP设置 # 正则表达式,路径匹配“ xxxx.php”,“ aaa / xxxx.php”,“ abc / xxxx.php / bbbb”等 location ~ [^/]\.php(/|$) { # 定义一个捕获$ fastcgi_path_info值的正则表达式 # 第一个()是$ fastcgi_script_name的值,第二个是$ fastcgi_path_info的值 fastcgi_split_path_info ^(.+?\.php)(/.*)$; # $document_root 在根目录中设置的路径 # $fastcgi_script_name 文件名路径 # -f 确定文件是否存在 # 如果没有文件,则返回404错误 if (!-f $document_root$fastcgi_script_name) { return 404; } # 设置IP地址和端口以访问php fastcgi_pass 127.0.0.1:9000; # 设置php中的index文件名, # 指定对应以“ /”结尾的URL的index文件名 fastcgi_index index.php; #### fastcgi_param的设置 # 读取一个fastcgi_params文件,其中包含fastcgi_params的许多设置 include fastcgi_params; # 通过清空“ HTTP_PROXY”参数来缓解HTTPoxy漏洞 fastcgi_param HTTP_PROXY ""; # “ SCRIPT_FILENAME”参数是php-fpm用来确定脚本名称的设置 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }


    (PHP)

    直接将“ php.ini-development”复制并粘贴到php目录下,并将其重命名为“ php.ini”

    启动

    (nginx)

    打开控制台命令窗口,将当前目录移至nginx目录(nginx.exe所在的位置)并执行以下命令:

    start nginx.exe

    (PHP)

    打开控制台命令窗口,将当前目录移至php目录(php-cgi.exe所在的位置)并执行以下命令:

    start php-cgi.exe -b 127.0.0.1:9000

    终止

    (nginx)

    打开控制台命令窗口,将当前目录移至nginx目录(nginx.exe所在的位置)并执行以下命令:

    nginx.exe -s stop

    (PHP)

    打开控制台命令窗口,将当前目录移至php目录(php-cgi.exe所在的位置)并执行以下命令:

    Taskkill /im php-cgi.exe