Table of Contents
Struct Plugin: Aggregation
Aggregation of structured data is the main purpose of the plugin. Aggregation is done through simple syntax mechanisms that are used to collect, filter, sort and output data stored in schemas. Currently, there are three types of aggregations:
The editors for global and serial data are aggregations, too:
In addition to the above output types, there exist some syntax to add additional controls to the displayed aggregation data:
Aggregation Options
All the above syntax modes (except Value) follow the same basic syntax containing a key-value list of options:
---- struct table ---- schema: schema_name cols: %pageid%, other, cols ----
The keyword before the colon is a configuration option and the value after it is the actual setting. To make it more fault tolerant, multiple option names are frequently possible. Not all options are available for all aggregations and control mechanisms, but every one of them requires at least the schema
and cols
options (See Schema and Column Selection below).
Option(s) | Description | Available in |
---|---|---|
schema from | These are the schemas from which you want to display the data. Multiple schemas are not supported in all aggregations and controls. | table list global serial filter cloud |
cols select | These are the attributes you want to display. These are the same names you used in the Data Entry part. You may use * to select all columns. This can be combined with Special Names e.g. %pageid%, * | table list global serial filter cloud |
align | List of column alignments in table output. The alignments can be left (l ), center (c ) or right (r ) | table global serial |
class classes | Allows to configure a comma separated list of CSS classes aggregation should have. This makes custom styling easier. | table list global serial filter cloud |
csv | Set to 0 to disable the CSV export for this aggregation | table global serial |
dynfilters | Set to 1 to enable a row of input fields for dynamically filtering a table | table global serial |
filter where filterand and | Filter by a column value. You may specify this more than once, multiple filters will be ANDed. (see also filters) | table list global serial filter cloud |
filteror or | Like filter, but multiple instances will be ORed (see also filters) | table list global serial filter cloud |
head header headers | A comma separated list of labels. If specified, these names will be used in the table headers instead of the field labels | table list global serial filter cloud |
index | Number of letters to use to create an alphabetical index for lists | list |
max limit | How many results should be displayed. Tables will be paginated, other aggregations and controls will ignore additional reaults | table list global serial filter cloud |
nesting nest | Number of levels to nest list results | list |
rownumbers | Set to 1 to show row numbers | table |
sepbyheaders | Set to 1 to include headers in list output | list |
sort order | By what column should the table be sorted initially? Prepend a ^ to reverse the sorting | table list global serial filter cloud |
summarize | Set to 1 to calculate sum of columns | table global serial |
target page | The page to which filter links should point to. If not specified, the current page is used. | filter cloud |
width widths | Comma-separated list of column widths to use. CSS units and percentages can be given | table global serial |
Schema and Column Selection
As mentioned above, all aggregations and controls require at least the schema
and cols
options.
Where multiple schemas can be given, resulting rows will be joined on their page ID. The aggregation will list pages which have all the given schemas assigned. This of course means that you can never include a global data schema when using multiple schemas, because global data has no page id. Joining serial data may return unexpected results.
All Fields
You can select all fields available in the given schemas by using an asterisk *
as column name. You can also combine it with special columns.
---- struct table ---- schema: schema1, schema2 cols: %pageid%, * ----
Aliases
When selecting data from multiple schemas which contain the same field names, you have to prefix them with the schema name:
---- struct table ---- schema: schema1, schema2 cols: %pageid%, schema1.name, schema2.name ----
You can use aliases as shortcodes to reference schemas in order to reduce your typing. Aliases are separated by a space from the schema name:
---- struct table ---- schema: schema1 A, schema2 B cols: %pageid%, A.name, B.name ----
Please see filters to learn more about filtering.
Special Columns
The following special column names can be used to access non-field columns:
Special Name | Description |
---|---|
%pageid% | The page name of the page holding the matching struct data, if any |
%title% | The title (first heading) of the above page |
%rowid% | The number of the row in the database (meaningful only for global and serial data) |
%lastupdate% | The date and time when the page or data was last updated |
%lasteditor% | The user that last changed the page |
%lastsummary% | The last edit summary of the page |
In order to use them in templates, add another percent sign infront of the special name. E.g. for %pageid%
use %%pageid%