Help:WikiSearchFront
The WikiSearchFront extension is a front-end for WikiSearch written in Vue.js
For installation instructions see the extension page
$smwgElasticsearchConfig["indexer"]["raw.text"] = true;
Configuration
[edit]The WikiSearchFront extension must be configured using the WikiSearchFrontend parser function
There are 3 types of configuration:
- Settings, without a prefix
- Filter settings, prefixed with a
@
- Result settings, prefixed with a
?
Configurations can have setting options prefixed with a #
Example configuration:
{{#WikiSearchFrontend:
|size=10
|title=Page Title
|@Tag
|@Year
#display=range
#max=20
#type=date
#label=Publication year
|?Users
#display=link
|?Image
#display=image
|?Rating
#display=template
#template=Rating icon
}}
Available configuration options
[edit]Settings
[edit]These are optional settings for the main interface
parameter | parameter values | settings | setting values | description | default | example |
---|---|---|---|---|---|---|
size | <number>
|
defines how many results are shown per page | 10 | size=10
| ||
size options | <number>, <number>
|
if set a drop-down with the defined size options will be shown | size options=10, 20, 50
| |||
title | <property>
|
property that will be used for the search results title and link | page | title=Title
| ||
#label | <text>
|
sets a label for the title column in table layout | ||||
#highlight | true | highlights the search term in the title | ||||
#urlstring | <text>
|
adds search terms as an url parameter named by the value to the links href | ||||
#wrap | true | wrap the result with a link | ||||
sort | <property>
|
sets sorting alphabetically based on a property instead of the default relevance order | score | sort=Title
| ||
order | desc | asc | order=desc
| |||
sort options | <property>, <property>
|
if set a drop-down with sort options will be shown, default results will be sorted by relevance, optional a label for the property to sort on can be set by adding text after the property divised by :
|
sort options=Version, Title
| |||
<text>:<property> ,<text>:<property>
|
sort options=Version:Version number, Title:Page name
| |||||
layout | table | changes the layout for the search results to a table | layout=table
| |||
calendar | changes the layout for the search results to a calendar | layout=calendar
| ||||
template | use a template to display the results | layout=template
| ||||
calendar | <property>
|
#display | year | show year view instead of the month view | calendar=Event date #weekend=false #color=Type
| |
#weekend | false | don't show weekends | ||||
#color | <property>
|
property to use for adding CSS classes to different calendar items, so they can be assigned a color in your style sheet | ||||
#template | <template>
|
template to use for creating new calendar items | ||||
#slot | <slot>
|
slot to write to | main | |||
#prefix | text | prefix to use for event page name | ||||
template | <template>
|
to be used with layout=template
|
||||
clear | term | if set, the 'clear all filters' button also clears the search term | clear=term
| |||
facets | <number>
|
how many facets to show before a 'show more' button is shown | 5 | facets=10
| ||
theme | dark | uses a dark theme | theme=dark
| |||
selected | <property>:<value>;<property>:<value>
|
list of pre-selected filters | Version:1.0;Page name:Title
| |||
info | true | show information icon about special search operators (OR, AND, and more) | info=true
| |||
action | <function> or <page>
|
#label | text | action to perform with selected results, display=checkbox
|
action=doAction #label=Action
| |
#type | page |
Search result settings
[edit]These are optional settings for the search result output they are defined by adding a ?
in front of the property name.
parameter | settings | setting values | description | example |
---|---|---|---|---|
?<property>
|
#display | image | displays an image, the property must be a relative URL to the image | ?Image#display=image
|
link | creates a link from a property | ?User#display=link
| ||
pill | creates a pill, that can be used for filter selection | ?Tag#display=pill
| ||
template | parses a template, add #template=<template> . The {{{Page|}}} and {{{Value|}}} parameters are passed to the template
|
?Icon#display=template
| ||
checkbox | show a checkbox, can be used with action
|
?User#display=checkbox
| ||
#template | <template> | used with #display=template
|
||
#label | <text>
|
adds a label in front of the displayed property value. When table layout is used it defines the tabel column header name | ?Rating#label=Page rating
| |
#highlight | true | highlights the search term on the displayed property value | ?Description#highlight=true
| |
Default properties, these can be used to create a custom order for your results | ||||
?$snippet | the search result snippet | |||
?$title | set #display=link
|
|||
?$page | ||||
?$namespacename | ||||
?$image | if result is a file page | |||
?$Modification date |
Facets filter settings
[edit]Facet filters are defined by adding an @
in front of the property name. All settings are optional. When no display setting is used the default checkboxes are displayed.
Some display types need a setting with an ask query, see Semantic MediaWiki ask query string for more information about them.
parameter | settings | setting values | description | example |
---|---|---|---|---|
@<property> | #display | elastic combobox | show a select drop-down with aggregated search results, to hide the result count add #count=false
|
@Author #display=elastic combobox
|
switch | add a switch, you can set a value for true false and default | @Author #display=switch #true=Has name #false=Has no name #default=false
| ||
combobox | shows a drop-down combo-box instead of the default checkboxes | @Author#display=combobox
| ||
ask combobox | shows a combobox and uses an ask query as you type to generate options. see ask combox for more information | @Author
| ||
search | adds a search input for the specified property | @Title#display=search
| ||
datepicker | adds two DateInputWidgets that are used for filtering the results by a date property | @Modification date#display=datepicker
| ||
range | adds the default checkboxes but with a set of ranges from the property. see range for more information | @Range
| ||
sorted | adds the default checkboxes but sorts on a given ask query. see sorted for more information | @Tag
| ||
date | shows date facets with ranges for 'last week', 'last moth', 'last quarter', and 5 years, needs #type=date to be set
|
@Modification date
| ||
slider | adds a range slider, a max can be set with #max=<number>
|
@Version
| ||
#label | <text>
|
defines a label to be used for display instead of the property name | @User
| |
#logic | or | set logic to or, needs 'post filter properties' setting in back-end WikiSearchConfig. see WikiSearch for more information | @Tag
| |
#sort | alphabetically | sorts the facets alphabetically, default facets are sorted by page count | @Tag
| |
alphanumeric | sorts the facets alphanumeric, default facets are sorted by page count | @Tag #sort=alphanumeric Optional: #order=reverse
| ||
#translation | <property>
|
translates the property values based on a given ask query. only applicable for properties of type Page. | @Service
| |
#value | <text>
|
set a value for a single filter | ||
#valueLabel | <text>
|
set a label for a single value |
ask combobox
[edit]setting | values | description | example |
---|---|---|---|
#query | <ask>
|
ask query | @Tag
#display=ask combobox
#query=[[Class::Tag]]
#data=Tag ID
#text=Tag name
|
#data | <property>
|
property for options | |
#text | <property>
|
label for options | |
#search | true | searches for typed term on enter key |
Sorted
[edit]setting | values | description | example |
---|---|---|---|
#query | <ask>
|
ask query | @Tags
#display=sorted
#query=[[Tag::+]][[-Has subobject.Type::Search Tag]]
#data=-Has subobject.Name
#text=Tag name
|
#data | <property>
|
property to sort on | |
#text | <property>
|
property for display |
Range
[edit]setting | values | description | example |
---|---|---|---|
#max | <number>
|
maximum number of ranges | @Year
#display=range
#max=20
#type=date
|
#step | <number>
|
step for range | |
#type | date | type for date ranges |
Styling and layout
[edit]WikiSearchFront can be styled using CSS. Components are logically named using BEM convention, and the layout is defined with CSS Grid. You can just add your own style-sheet, by adding your CSS to common.css or you could use TemplateStyles. A dark theme is available and can be set by adding theme=dark
to the config.
Layout
[edit]Below you find the default layout, grid-template-columns defines the columns sizes, grid-template-rows define the row sizes.
The different components can be moved around by changing the grid-template-areas. In the default layout the search component spans over the whole first row.
.wikisearch {
display: grid;
grid-template-columns: minmax(20ch, 30ch) auto minmax(auto, 40ch);
grid-template-rows:
auto
minmax(2em, auto)
auto
1fr;
grid-template-areas:
"search search search"
"selected selected order"
"filters action total"
"filters results results";
grid-gap: 0.5em 2em;
}
The available components are:
search
this is the search input including the search buttonselected
this is the area where the pills for selected filter show uporder
this is the area where the sort options drop-down will show if sort options are set in the configurationfilters
this is where the different facet filters will be locatedtotal
this where the result count will show upresults
this is the area where the search result are shown, including the pagersaction
this is the area where the action button will appear
Variables
[edit]WikiSearchFront uses CSS variables to define colors and icons, the following variables are available to override
--ws-color-darker
--ws-color
--ws-color-lighter
--ws-color-lightest
--ws-white
--tint-1
--tint-2
--gray-1
--gray-2
--ws-border-color
--ws-border-color-darker
--ws-text-color-muted
--ws-black-lighter
--ws-black
--border-1
--star-size
--transition-short