Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Related: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 7: Zeile 7:
     end
     end


     local args = getArgs(frame)
    -- Debugging: Zeige die Argumente
     local query = args.query or ""
     local args = frame.args
     local columns = args.columns or ""
    local debugOutput = mw.dumpObject(args)
     local limit = tonumber(args.limit) or 10
     local query = args["query"]
     local columns = args["columns"]
     local limit = args["limit"] or 5


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


     -- Generiere Query-String
     -- Debugging: Ausgabe des Abfrage-Strings
     local fullQuery = query .. "|?" .. columns:gsub(",", "|?") .. "|limit=" .. limit
     debugOutput = debugOutput .. "\nAbfrage-Parameter: " .. query
    mw.log("Generierte Abfrage: " .. fullQuery)


     -- QueryResult ausführen
     -- Abfrage ausführen
     local queryResult = mw.smw.getQueryResult( fullQuery )
     local queryResult = mw.smw.getQueryResult({ query = query, limit = limit })


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


     -- Debugging: Ergebnis anzeigen
     -- Ergebnis aufbereiten
     mw.log("Ergebnis der Abfrage: " .. mw.dumpObject(queryResult))
     local output = '<table class="wikitable sortable">'
    output = output .. '<tr>'


     -- Tabelle erstellen
     -- Spalten definieren
     local output = "{| class=\"wikitable\"\n"
     for column in mw.text.gsplit(columns, ",") do
    output = output .. "! " .. columns:gsub(",", " !! ") .. "\n"
        output = output .. '<th>' .. mw.text.trim(column) .. '</th>'
    end
    output = output .. '</tr>'


    -- Ergebnisse iterieren
     for _, result in pairs(queryResult.results) do
     for _, result in pairs(queryResult.results) do
         output = output .. "|-\n"
         output = output .. '<tr>'
         for _, column in ipairs(mw.text.split(columns, ",")) do
         for column in mw.text.gsplit(columns, ",") do
             local value = result.printouts[column] and result.printouts[column][1] or "—"
             local cellValue = result.printouts[mw.text.trim(column)] or ""
            if column == "Hat Titel" and result.fulltext then
             output = output .. '<td>' .. tostring(cellValue) .. '</td>'
                value = "[[" .. result.fulltext .. "|" .. value .. "]]"
            end
             output = output .. "| " .. value .. " || "
         end
         end
         output = output:sub(1, -4) .. "\n" -- Entfernt das letzte " || "
         output = output .. '</tr>'
     end
     end
    output = output .. '</table>'


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


return related
return related

Version vom 24. November 2024, 01:29 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.render(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Debugging: Zeige die Argumente
    local args = frame.args
    local debugOutput = mw.dumpObject(args)
    local query = args["query"]
    local columns = args["columns"]
    local limit = args["limit"] or 5

    if not query then
        return "Keine Abfrage angegeben."
    end

    -- Debugging: Ausgabe des Abfrage-Strings
    debugOutput = debugOutput .. "\nAbfrage-Parameter: " .. query

    -- Abfrage ausführen
    local queryResult = mw.smw.getQueryResult({ query = query, limit = limit })

    -- Kein Ergebnis
    if not queryResult or not queryResult.results then
        return debugOutput .. "\nKeine Ergebnisse gefunden."
    end

    -- Ergebnis aufbereiten
    local output = '<table class="wikitable sortable">'
    output = output .. '<tr>'

    -- Spalten definieren
    for column in mw.text.gsplit(columns, ",") do
        output = output .. '<th>' .. mw.text.trim(column) .. '</th>'
    end
    output = output .. '</tr>'

    -- Ergebnisse iterieren
    for _, result in pairs(queryResult.results) do
        output = output .. '<tr>'
        for column in mw.text.gsplit(columns, ",") do
            local cellValue = result.printouts[mw.text.trim(column)] or ""
            output = output .. '<td>' .. tostring(cellValue) .. '</td>'
        end
        output = output .. '</tr>'
    end
    output = output .. '</table>'

    return output
end

return related