open-csp/w-s-slots

此扩展提供了一种创建新插槽的机制。

安装: 738

依赖项: 0

建议者: 0

安全: 0

星级: 2

关注者: 3

分支: 3

开放问题: 1

类型:mediawiki-extension

v4.5.0 2023-09-19 12:26 UTC

This package is auto-updated.

Last update: 2024-09-14 19:58:37 UTC


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