Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 75: | Zeile 75: | ||
-- Argumente aus dem Frame extrahieren | -- Argumente aus dem Frame extrahieren | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local keywords = args[" | local keywords = args["Keyword"] or "" | ||
if keywords == "" then | if keywords == "" then | ||
return "Keine | return "Keine Keywords angegeben." | ||
end | end | ||
-- Baue die semantische Abfrage | -- Baue die semantische Abfrage | ||
local query = string.format("[[ | local query = string.format("[[Keyword::%s]]|?Keyword|limit=5", keywords) | ||
local queryResult = mw.smw.ask(query) | local queryResult = mw.smw.ask(query) | ||
if not queryResult or #queryResult == 0 then | if not queryResult or #queryResult == 0 then | ||
return "Keine Artikel mit ähnlichen | return "Keine Artikel mit ähnlichen Keywords gefunden." | ||
end | end | ||
Zeile 92: | Zeile 92: | ||
local output = "<ul>" | local output = "<ul>" | ||
for title, data in pairs(queryResult) do | for title, data in pairs(queryResult) do | ||
local displayTitle = data[" | local displayTitle = data["Keyword"] and table.concat(data["Keyword"], ", ") or title | ||
output = output .. string.format('<li>[[%s|%s]]</li>', title, displayTitle) | output = output .. string.format('<li>[[%s|%s]]</li>', title, displayTitle) | ||
end | end |
Version vom 27. November 2024, 00:41 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Publikation/Related/Doku erstellt werden
local related = {}
local getArgs = require("Module:Arguments").getArgs
function related.buchRelated(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
-- Eingabeparameter
local args = getArgs(frame)
local series = args["series"]
local limit = tonumber(args["limit"]) or 5 -- Standardlimit, falls nicht angegeben
local defaultCover = args["defaultCover"] -- Standard-Cover von der spezifischen Seite übergeben
-- Sicherstellen, dass die Serie übergeben wurde
if not series or series == "" then
return "Keine Serie angegeben."
end
-- Abfrage-String erstellen
local query = string.format(
"[[Hat Serie::%s]]|?Hat Titel|?Band|?Standort|?Inhaltszusammenfassung|?Hat Cover|limit=%d",
series,
limit
)
-- Abfrage ausführen
local queryResult = mw.smw.getQueryResult(query)
-- Kein Ergebnis gefunden
if not queryResult or not queryResult.results then
return "Keine Ergebnisse gefunden."
end
-- Tabelle erstellen
local output = '<table class="wikitable sortable table">'
output = output .. '<tr><th>Cover</th><th>Titel</th><th>Band</th><th>Standort</th><th>Inhaltszusammenfassung</th></tr>'
-- Ergebnisse verarbeiten
for _, result in ipairs(queryResult.results) do
-- Titel extrahieren und verlinken
local title = result.fulltext or "Unbekannt"
local titleLink = '[[' .. title .. '|' .. (result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title) .. ']]'
-- Band, Standort und Inhaltszusammenfassung extrahieren
local band = result.printouts["Band"] and result.printouts["Band"][1] or "N/A"
local standort = result.printouts["Standort"] and result.printouts["Standort"][1] or "N/A"
local summary = result.printouts["Inhaltszusammenfassung"] and result.printouts["Inhaltszusammenfassung"][1] or ""
-- Coverbild verarbeiten
local cover = result.printouts["Hat Cover"] and result.printouts["Hat Cover"][1]
local coverImage = cover and '[[File:Library:' .. cover .. '|100px|link=' .. title .. ']]'
or (defaultCover and '[[File:Library:' .. defaultCover .. '|100px|link=' .. title .. ']]' or "Kein Cover verfügbar")
-- Zeile hinzufügen
output = output .. string.format(
'<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
coverImage,
titleLink,
band,
standort,
summary
)
end
output = output .. '</table>'
return output
end
function related.findByKeywords(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
-- Argumente aus dem Frame extrahieren
local args = getArgs(frame)
local keywords = args["Keyword"] or ""
if keywords == "" then
return "Keine Keywords angegeben."
end
-- Baue die semantische Abfrage
local query = string.format("[[Keyword::%s]]|?Keyword|limit=5", keywords)
local queryResult = mw.smw.ask(query)
if not queryResult or #queryResult == 0 then
return "Keine Artikel mit ähnlichen Keywords gefunden."
end
-- Ausgabe als Liste
local output = "<ul>"
for title, data in pairs(queryResult) do
local displayTitle = data["Keyword"] and table.concat(data["Keyword"], ", ") or title
output = output .. string.format('<li>[[%s|%s]]</li>', title, displayTitle)
end
output = output .. "</ul>"
return output
end
return related