Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 139: | Zeile 139: | ||
output = output .. '</table>' | output = output .. '</table>' | ||
return output | |||
end | |||
function related.similarAutor(frame) | |||
if not mw.smw then | |||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | |||
end | |||
local args = getArgs(frame) | |||
local genres = args["Genres"] | |||
local limit = tonumber(args["limit"]) or 5 | |||
local query = "" | |||
-- Baue die Abfrage dynamisch für alle Schlüsselwörter | |||
if genres then | |||
for genre in mw.text.gsplit(genres, ",") do | |||
genre = mw.text.trim(genre) | |||
query = query .. "[[Genre::" .. genre .. "]]" | |||
end | |||
end | |||
query = query .. "|?Hat Titel|limit=" .. tostring(limit) | |||
-- Führe die Abfrage aus | |||
local queryResult = mw.smw.getQueryResult(query) | |||
-- Kein Ergebnis gefunden | |||
if not queryResult or not queryResult.results then | |||
return "Keine ähnlichen Artikel gefunden." | |||
end | |||
-- Ergebnisse formatieren | |||
local output = '<ul>' | |||
for _, result in ipairs(queryResult.results) do | |||
local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt" | |||
output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>' | |||
end | |||
output = output .. '</ul>' | |||
return output | return output | ||
end | end | ||
return related | return related |
Aktuelle Version vom 30. November 2024, 02:06 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.similarArticles(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local args = getArgs(frame)
local keywords = args["Keyword"]
local limit = tonumber(args["limit"]) or 5
local query = ""
-- Baue die Abfrage dynamisch für alle Schlüsselwörter
if keywords then
for keyword in mw.text.gsplit(keywords, ",") do
keyword = mw.text.trim(keyword)
query = query .. "[[Keyword::" .. keyword .. "]]"
end
end
query = query .. "|?Hat Titel|limit=" .. tostring(limit)
-- Führe die Abfrage aus
local queryResult = mw.smw.getQueryResult(query)
-- Kein Ergebnis gefunden
if not queryResult or not queryResult.results then
return "Keine ähnlichen Artikel gefunden."
end
-- Ergebnisse formatieren
local output = '<ul>'
for _, result in ipairs(queryResult.results) do
local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
end
output = output .. '</ul>'
return output
end
function related.generateTable(args)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local query = args.query or ""
local limit = tonumber(args.limit) or 10
-- Führe die Abfrage aus
local queryResult = mw.smw.getQueryResult(query .. "|limit=" .. limit)
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>Titel</th><th>Erscheinungsjahr</th><th>Typ</th><th>Genre</th></tr>'
for _, result in ipairs(queryResult.results) do
local title = result.fulltext or "Unbekannt"
local linkTitle = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title
local year = result.printouts["Erscheinungsjahr"] and result.printouts["Erscheinungsjahr"][1] or "N/A"
local typ = result.printouts["Typ"] and result.printouts["Typ"][1] or "N/A"
local genre = result.printouts["Keyword"] and table.concat(result.printouts["Keyword"], ", ") or "N/A"
output = output .. string.format(
'<tr><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%s</td></tr>',
title, linkTitle, year, typ, genre
)
end
output = output .. '</table>'
return output
end
function related.similarAutor(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
local args = getArgs(frame)
local genres = args["Genres"]
local limit = tonumber(args["limit"]) or 5
local query = ""
-- Baue die Abfrage dynamisch für alle Schlüsselwörter
if genres then
for genre in mw.text.gsplit(genres, ",") do
genre = mw.text.trim(genre)
query = query .. "[[Genre::" .. genre .. "]]"
end
end
query = query .. "|?Hat Titel|limit=" .. tostring(limit)
-- Führe die Abfrage aus
local queryResult = mw.smw.getQueryResult(query)
-- Kein Ergebnis gefunden
if not queryResult or not queryResult.results then
return "Keine ähnlichen Artikel gefunden."
end
-- Ergebnisse formatieren
local output = '<ul>'
for _, result in ipairs(queryResult.results) do
local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
end
output = output .. '</ul>'
return output
end
return related