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

    -- QueryResult ausführen
    local queryResult = mw.smw.getQueryResult({ query = query .. "|?" .. columns:gsub(",", "|?") .. "|limit=" .. limit })

    if not queryResult or not queryResult.results or next(queryResult.results) == nil then
        return "Keine Ergebnisse gefunden."
    end

    -- 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