Module:WikidataIB/doc
![]() | This is a documentation subpage for Module:WikidataIB. It may contain usage information, categories and other content that is not part of the original module page. |
This module is designed specifically to implement a mechanism which moves control of whether Wikidata values are used in an infobox from the template coder at the infobox design level to the editor at the article level. It should only be used inside an infobox.
Usage
Generalised call:
{{#invoke:WikidataIB |getValue |<PropertyID> |name=<fieldname> |suppressfields=<list of fields which will never display> |fetchwikidata=<list of fields to fetch values from Wikidata> }}
- The module provides one call at present:
getValue
- getValue can take a named parameter
|qid=
which is the Wikidata ID for the article. This will not normally be used but is available for testing, although it makes the call expensive. - The name of the field that this function is called from is passed in the named parameter
|name=
, which is first checked against a blacklist of fields that are never to be displayed, (i.e. the call must return nil in all circumstances). If the fiels is not on the blacklist, it is then checked against a whitelist. If the name of the field matches, the call will return any locally supplied value if it is supplied, or the Wikidata value otherwise. - The name is compulsory when the blacklist or whitelist is used, so the module returns nil if it is not supplied.
- The blacklist is passed in the named parameter
|suppressfields=
- The whitelist is passed in the named parameter
|fetchwikidata=
Coding into an infobox
Typically, the getValue call will be invoked in an infobox definition, using appropriate template parameters. One simple implementation is given as an example in Template:Infobox book/Wikidata/Sandbox. As an illustration, the 'author' field in the infobox is coded like this:
| label2 = Author{{#if:{{{authors|}}}|s}}
| data2 = {{#invoke:WikidataIB |getValue |P50 |name=author |fetchwikidata={{{fetchwikidata|}}} |suppressfields={{{suppressfields|}}} |{{{authors|{{{author|}}}}}} }}
The property to be fetched is the first unnamed parameter. In this case it is author (P50).
The name of the field is passed in |name=
and that name is checked against the blacklist and the whitelist. To always suppress the author field in a particular article, an editor will set |suppressfields=author
in the infobox. The author field will then never be displayed.
If the field is not blacklisted, then the infobox can be set to display a locally supplied value for author simply by setting |author=George Orwell
, for example, in the infobox. It also accepts |authors=
. If the name of the field is on the whitelist, e.g. |fetchwikidata=author; genre; pub_date; pages; dewey; congress
, and the local value is not supplied, then the infobox will display the value retrieved from Wikidata. Any separators can be used, except | and {}.
As a shorthand, |fetchwikidata=ALL
will fetch all of the fields that are not blacklisted, as long as no local value is already provided in the article for a given field.
Upgrading existing infoboxes
Since the parameter |fetchwikidata=
is needed for any Wikidata functionality, an existing infobox may be replaced by an infobox incorporating these calls without any change whatsoever to any article. Each article using the new infobox can later be enabled by supplying |fetchwikidata=ALL
, or a list of required fields for that article. At that point, the onus is on the editor enabling the functionality to check that no unwanted fields are now being displayed. If so, they can be added to a blacklist for the article by setting |suppressfields=
to the list of unwanted fields.
Examples
This section is taken from Template:Infobox book/Wikidata/Sandbox/doc.
No Wikidata
{{Infobox book/Wikidata/Sandbox | suppressfields = | fetchwikidata = | name = Animal Farm | title_orig = Animal Farm: A Fairy Story | image = Animal Farm - 1st edition.jpg | image_size = 200px | caption = First edition cover | author = [[George Orwell]] | country = United Kingdom | language = English | genre = Political satire }}
Works as a non-aware infobox: only locally supplied parameters are displayed.
{{Infobox book/Wikidata/Sandbox | name = Animal Farm | title_orig = Animal Farm: A Fairy Story | image = Animal Farm - 1st edition.jpg | image_size = 200px | caption = First edition cover | author = [[George Orwell]] | country = United Kingdom | language = English | genre = Political satire }}
The blacklist and whitelist can be omitted if unused
All Wikidata
{{Infobox book/Wikidata/Sandbox | suppressfields = | fetchwikidata = author; genre; pub_date; pages; dewey; congress }}
Fetches all of its values from Wikidata.
{{Infobox book/Wikidata/Sandbox | fetchwikidata = ALL }}
As shorthand, the |fetchwikidata=
can be set to ALL to fetch all available fields.
Any of them can be suppressed by |suppressfields=
, or overridden by supplying a local value.
Never display genre
{{Infobox book/Wikidata/Sandbox | suppressfields = genre | fetchwikidata = author; genre; pub_date; pages; dewey; congress }}
The genre field will always be suppressed, even if a local value is supplied.
{{Infobox book/Wikidata/Sandbox | suppressfields = genre | fetchwikidata = author; genre; pub_date; pages; dewey; congress | genre = Political satire }}
Local override
{{Infobox book/Wikidata/Sandbox | fetchwikidata = author; genre; pub_date; pages; dewey; congress | genre = Political satire }}
The genre field is set to display "Political satire", no matter what is stored in Wikidata.
{{Infobox book/Wikidata/Sandbox | fetchwikidata = ALL | genre = Novel }}
The genre field is set to display "Novel", no matter what is stored in Wikidata.
Don't fetch genre
{{Infobox book/Wikidata/Sandbox | suppressfields = | fetchwikidata = author; pub_date; pages; dewey; congress }}
The genre field will not be fetched from Wikidata.