Modul:Queries: Unterschied zwischen den Versionen
(Aufräumarbeiten, sep hinzugefügt mit defaultwert ";".) |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
function p. | function p.GetValues(frame) | ||
-- Gets the values from an attribute on a page | -- Gets the values from an attribute on a page | ||
page = frame.args["page"] or "" | local page = frame.args["page"] or "" | ||
attr = frame.args["attr"] or "" | local attr = frame.args["attr"] or "" | ||
sep = frame.args["sep"] or ";" | local sep = frame.args["sep"] or ";" | ||
result = mw.smw.getQueryResult("[["..page.."]] |?"..attr) | local result = mw.smw.getQueryResult("[["..page.."]] |?"..attr) | ||
-- If no results, return just nil | -- If no results, return just nil | ||
| Zeile 13: | Zeile 13: | ||
return | return | ||
end | end | ||
values = result.results[1].printouts[attr] | local values = result.results[1].printouts[attr] | ||
t = "" | local t = "" | ||
for i = 1, #values do | for i = 1, #values do | ||
t = t .. values[i]["fulltext"] | t = t .. values[i]["fulltext"] | ||
| Zeile 25: | Zeile 24: | ||
return t | return t | ||
end | end | ||
return p | return p | ||
Version vom 24. August 2025, 13:17 Uhr
Dieses Modul enthält Abfragen für semantic Mediawiki, welche nicht oder nur sehr umständlich mit {{#show}} oder {{#ask}} realisiert werden können.
getValues() / GetValues()
- lua:
getValues(page, attr, plain)gibt Werte des Attributsattrder Seitepage(immer) alstablemit Strings zurück. - Wikitext:
GetValues(frame)gibt Werte des Attributsattrder Seitepageals durch Semikolon (optional anderen Wert) getrennte Werte als String zurück.
Die Funktion GetValues() ist ähnlich {{#show}}, welches aber leider nur durch Komma getrennte Werte zurückgibt. Das ist ein Problem, denn in diesem Wiki werden Werte durch Semikolon getrennt da das Komma in allen Formularen als Satzzeichen gehandhabt wird.
Parameter
| Variable | Beschreibung | Typ | Required/Optional Default |
|---|---|---|---|
page
|
Seite, auf welcher sich das Attribut befindet | string | required |
attr
|
Name des Attributs, welches ausgelesen werden soll | string | required |
sep
|
Separator (nur bei GetValues())
|
string | optional, default=";" |
plain
|
Nur-Text-Flag. Rückgabe-Wert ohne HTML. | boolean | optional, default=false |
Test
| lua | Wikitext | Ergebnis |
|---|---|---|
getValues("Rathaus", "StraßeHnr")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=StraßeHnr}}-
|
-Lua-Fehler in Zeile 19: attempt to concatenate field 'fulltext' (a nil value)-
|
getValues("Rathaus", "BlaBla")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=BlaBla}}-
|
-- (lua:nil bzw. Wiki:"nix")
|
getValues("Rathaus", "Bahnlinie")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=Bahnlinie}}-
|
-- (lua:nil bzw. Wiki:"nix")
|
getValues("RathausBlaBla", "StraßeHnr")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=RathausBlaBla|attr=StraßeHnr}}-
|
-- (lua:nil bzw. Wiki:"nix")
|
getValues("Rathaus", "Hausnummer")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=Hausnummer}}-
|
-Lua-Fehler in Zeile 19: attempt to concatenate field 'fulltext' (a nil value)-
|
getValues("Rathaus", "Seite")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=Seite}}-
|
-Rathaus-
|
getValues("Rathaus", "Seite", true)
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=Seite|plain=Ja}}-
|
-Rathaus-
|
getValues("Rathaus", "StraßeHnr")
|
-{{#invoke:{{#replace:{{PAGENAME}}|/Doku|}}|GetValues|page=Rathaus|attr=StraßeHnr}}-
|
-Lua-Fehler in Zeile 19: attempt to concatenate field 'fulltext' (a nil value)-
|
getPages()
Gibt Seiten von der Query query als table zurück.
Parameter
| Variable | Beschreibung | Typ | Required/Optional Default |
|---|---|---|---|
query
|
Abfrage | string | required |
plain
|
Nur-Text-Flag. Rückgabe-Wert ohne HTML. | boolean | optional, default=false |
uniFilter() / UniFilter()
Gibt für eine Attribut-Query einen universellen Filter zurück. Der Suchbegriff wird gesucht:
- als Ganzes
- als Volltextsuche
- wenn Semikolons vorhanden, dann außerdem als Liste von Einzelbegriffen
- wenn Suchtext leer, Vorhandensein irgendeines Wortes
Beispiele:
{{#invoke:Queries|UniFilter|Wort1}}bzw.uniFilter("Wort1")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1 Wort2 Wort3}}bzw.uniFilter("Wort1 Wort2 Wort3")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1;Wort2;Wort3}}bzw.uniFilter("Wort1;Wort2;Wort3")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1;Wort2;}}bzw.uniFilter("Wort1;Wort2;")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1;;Wort3}}bzw.uniFilter("Wort1;;Wort3")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1; ;Wort3}}bzw.uniFilter("Wort1; ;Wort3")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|Wort1;Wort2 Wort3}}bzw.uniFilter("Wort1;Wort2 Wort3")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter| Wort1 ; Wort2 ; Wort3 }}bzw.uniFilter(" Wort1 ; Wort2 ; Wort3 ")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter|}}bzw.uniFilter("")ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.{{#invoke:Queries|UniFilter}}ergibtSkriptfehler: Die Funktion „UniFilter“ ist nicht vorhanden.
dateLastDayCompleter()
Vervollständigt ein unvollständiges Abfrage-bis-Datum zu entweder dem letzten des Monats oder des Jahres.
Anwendung: Wenn man im Formular z.B. von 2020 bis 2020 einträgt, dann wird bis 31.12.2020 gesucht.
Unterseiten
Siehe auch
local p = {}
function p.GetValues(frame)
-- Gets the values from an attribute on a page
local page = frame.args["page"] or ""
local attr = frame.args["attr"] or ""
local sep = frame.args["sep"] or ";"
local result = mw.smw.getQueryResult("[["..page.."]] |?"..attr)
-- If no results, return just nil
if #result.results == 0 then
return
end
local values = result.results[1].printouts[attr]
local t = ""
for i = 1, #values do
t = t .. values[i]["fulltext"]
if i ~= #values then
t = t .. sep .. " "
end
end
return t
end
return p