Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Related

Die Dokumentation für dieses Modul kann unter Modul:Publikation/Related/Doku erstellt werden

local related = {}
local getArgs = require("Module:Arguments").getArgs

function related.render(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local args = getArgs(frame)
    local query = args.query or ""
    local columns = args.columns or ""
    local limit = tonumber(args.limit) or 10

    if query == "" or columns == "" then
        return "Fehler: Abfrage und Spalten müssen angegeben werden."
    end

    -- Generiere Query-String
    local fullQuery = query .. "|?" .. columns:gsub(",", "|?") .. "|limit=" .. limit
    mw.log("Generierte Abfrage: " .. fullQuery)

    -- QueryResult ausführen
    local queryResult = mw.smw.getQueryResult( fullQuery )

    -- Kein Ergebnis
    if not queryResult or not queryResult.results or next(queryResult.results) == nil then
        return "<pre>Keine Ergebnisse gefunden.\nDebug-Abfrage: " .. fullQuery .. "\nDebug-Ausgabe: " .. mw.dumpObject(queryResult) .. "</pre>"
    end

    -- Debugging: Ergebnis anzeigen
    mw.log("Ergebnis der Abfrage: " .. mw.dumpObject(queryResult))

    -- Tabelle erstellen
    local output = "{| class=\"wikitable\"\n"
    output = output .. "! " .. columns:gsub(",", " !! ") .. "\n"

    for _, result in pairs(queryResult.results) do
        output = output .. "|-\n"
        for _, column in ipairs(mw.text.split(columns, ",")) do
            local value = result.printouts[column] and result.printouts[column][1] or "—"
            if column == "Hat Titel" and result.fulltext then
                value = "[[" .. result.fulltext .. "|" .. value .. "]]"
            end
            output = output .. "| " .. value .. " || "
        end
        output = output:sub(1, -4) .. "\n" -- Entfernt das letzte " || "
    end

    output = output .. "|}"
    return output
end

return related