Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Related: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
local getArgs = require("Module:Arguments").getArgs
local getArgs = require("Module:Arguments").getArgs


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


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


     if not query then
    -- Sicherstellen, dass eine Query übergeben wird
     if query == "" then
         return "Keine Abfrage angegeben."
         return "Keine Abfrage angegeben."
     end
     end


     -- Debugging: Ausgabe des Abfrage-Strings
     -- Abfrage-String erstellen
     debugOutput = debugOutput .. "\nAbfrage-Parameter: " .. query
     local queryResult = mw.smw.getQueryResult({
        query = query,
        limit = limit
    })


    -- Abfrage ausführen
     -- Kein Ergebnis gefunden
    local queryResult = mw.smw.getQueryResult({ query = query, limit = limit })
 
     -- Kein Ergebnis
     if not queryResult or not queryResult.results then
     if not queryResult or not queryResult.results then
         return debugOutput .. "\nKeine Ergebnisse gefunden."
         return "Keine Ergebnisse gefunden."
     end
     end


     -- Ergebnis aufbereiten
     -- Tabelle erstellen
     local output = '<table class="wikitable sortable">'
     local output = '<table class="wikitable sortable">'
     output = output .. '<tr>'
     output = output .. '<tr><th>Titel</th><th>Band</th><th>Standort</th><th>Inhaltszusammenfassung</th></tr>'


     -- Spalten definieren
     for _, result in ipairs(queryResult.results) do
    for column in mw.text.gsplit(columns, ",") do
        -- Titel extrahieren und verlinken
         output = output .. '<th>' .. mw.text.trim(column) .. '</th>'
        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 ""
 
        -- Zeile hinzufügen
        output = output .. string.format(
            '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            titleLink,
            band,
            standort,
            summary
        )
     end
     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>'
     output = output .. '</table>'
     return output
     return output
end
end


return related
return related

Version vom 24. November 2024, 01:50 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

    -- Debugging: Eingehende Parameter anzeigen
    local args = frame.args
    local query = args["query"] or ""
    local limit = tonumber(args["limit"]) or 5

    -- Sicherstellen, dass eine Query übergeben wird
    if query == "" then
        return "Keine Abfrage angegeben."
    end

    -- Abfrage-String erstellen
    local queryResult = mw.smw.getQueryResult({
        query = query,
        limit = limit
    })

    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine Ergebnisse gefunden."
    end

    -- Tabelle erstellen
    local output = '<table class="wikitable sortable">'
    output = output .. '<tr><th>Titel</th><th>Band</th><th>Standort</th><th>Inhaltszusammenfassung</th></tr>'

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

        -- Zeile hinzufügen
        output = output .. string.format(
            '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            titleLink,
            band,
            standort,
            summary
        )
    end

    output = output .. '</table>'
    return output
end

return related