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