open-csp / w-s-slots
此扩展提供了一种创建新插槽的机制。
Requires
Requires (Dev)
- mediawiki/mediawiki-codesniffer: >=34.0.0
- mediawiki/minus-x: >=1.1.0
- php-parallel-lint/php-console-highlighter: >=0.5.0
- php-parallel-lint/php-parallel-lint: >=1.2.0
README
此扩展提供了一种创建新插槽的机制。
安装
-
下载文件并放置在您的
extensions/
文件夹中名为WSSlots
的目录中。 -
运行Composer来安装PHP依赖项,在扩展目录中执行
composer install --no-dev
。 -
将以下代码添加到您的LocalSettings.php文件底部
wfLoadExtension( 'WSSlots' );
-
完成 - 导航到您的维基百科中的特殊:版本以验证扩展是否已成功安装。
配置
扩展提供了以下配置选项
$wgWSSlotsDefinedSlots
这是一个定义插槽的数组。数组中的每个条目对应于要定义的插槽名称。还可以选择性地配置插槽的内容模型和插槽角色布局,如下所示
$wgWSSlotsDefinedSlots = [ "example" => [ "content_model" => "wikitext", "slot_role_layout" => [ "display" => "none", "region" => "center", "placement" => "append" ] ] ];
此配置变量也作为JavaScript变量公开,可以按如下方式访问
var site_slots = mw.config.get('wgWSSlotsDefinedSlots');
请注意,这仅涵盖由WSSlots扩展创建的插槽。
有关内容模型的更多信息,请参阅MediaWiki.org,有关插槽角色布局的更多信息,请参阅此处。
$wgWSSlotsDefaultContentModel
这是默认内容模型,如果没有明确指定内容模型。
$wgWSSlotsDefaultSlotRoleLayout
这是默认插槽角色布局,如果没有明确指定插槽角色布局。
$wgWSSlotsSemanticSlots
此配置参数定义了哪些插槽应该进行分析语义注解。
$wgWSSlotsDoPurge
此配置选项指定在执行插槽编辑后是否清除页面。
$wgWSSlotsOverrideActions
当设置为true时,当可用时,所有操作都替换为插槽感知操作。当设置为数组时,数组中的每个条目指定一个要替换为其插槽感知对应项的操作。有关可用插槽感知操作的列表,请参阅下面的操作。
解析函数
#slot
扩展提供#slot
解析函数以获取特定插槽的内容。例如,{{#slot: main}}
返回main
插槽的内容。您可以选择指定一个页面作为第二个参数。例如,{{#slot: main | Foobar }}
从页面Foobar
获取main
插槽。可以设置第三个参数为任何内容,以便对返回的内容进行解析。
#slotdata
扩展提供#slotdata
解析函数以从特定插槽获取结构化内容。解析函数的语法如下
{{#slotdata: <slotname> | [<pagename> | [<key> | [<search> | [<compat>]]]]}}
<slotname>
:要获取数据的插槽名称。<pagename>
(可选,默认:{{FULLPAGENAME}}
):要获取数据的页面名称。<key>
(可选,默认:空):要返回的值的键(点分隔的索引列表)。<search>
(可选,默认:空):在查找键之前要执行的搜索,应采用key=value
的形式。如果给定的键值对不唯一,将使用包含该键值对的第一个包围块。<compat>
(可选,默认:false):是否以ArrayFunctions理解的方式返回结果。需要安装和启用ArrayFunctions。
此函数了解页面内容模型。这意味着它根据内容模型不同地解析页面。它可以从中提取结构化数据的内容模型有
JsonContent
:将页面解析为JSON;WikitextContent
:使用wikitext解析器解析页面以获取模板调用。
#slottemplates
(已弃用)
该扩展还提供了#slottemplates
解析函数,该函数以多维数组形式返回特定插槽中的模板。此解析函数需要安装WSArrays。
解析函数有两种操作模式。它可以非递归地处理模板(已弃用),或者可以递归地处理它们(推荐)。使用非递归解析函数,不支持具有相同名称的多个模板,并且不处理嵌套模板调用。使用递归解析,这被支持。递归解析还支持检索参数的原始未解析内容。
解析函数的语法如下
{{#slottemplates: <slotname> | <pagename> | <arrayname> | <recursive> }}
Lua函数
以下Lua函数可用
mw.slots.slotContent(slotName, pageName)
反映了#slot解析函数的功能,并在Lua中提供。它接受以下参数
slotName
(必需,字符串):要获取内容的插槽名称;pageName
(可选,字符串,默认={{PAGENAME}}
):要获取插槽的页面名称。
mw.slots.slotTemplates(slotName, pageName)
(已弃用)
反映了#slottemplates解析函数的功能,并在Lua中提供。它接受以下参数
slotName
(必需,字符串):要获取模板的插槽名称;pageName
(可选,字符串,默认={{PAGENAME}}
):要获取插槽的页面名称。
此函数已弃用,并很快将被mw.slots.slotData()
替换。
mw.slots.slotContentModel(slotName, pageName)
返回指定插槽的内容模型。它接受以下参数
slotName
(必需,字符串):要获取内容模型所需的插槽名称;pageName
(可选,字符串,默认={{PAGENAME}}
):要获取插槽的页面名称。
mw.slots.slotData(slotName, pageName)
反映了#slotdata解析函数的功能,并在Lua中提供。此函数省略任何高级选择工具(JSONPath)。它接受以下参数
slotName
(必需,字符串):要获取数据的插槽名称;pageName
(可选,字符串,默认={{PAGENAME}}
):要获取插槽的页面名称。
操作
rawslot
具有插槽意识的action=raw
版本(见RawAction)。返回指定插槽的内容作为原始值(格式取决于插槽内容模型)。示例
/wiki/MyMultislotPage?action=rawslot&slot=someslot