Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Related: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Manuelle Zurücksetzung
Keine Bearbeitungszusammenfassung
Zeile 65: Zeile 65:


     output = output .. '</table>'
     output = output .. '</table>'
    return output
end
function related.findByKeywords(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end
    -- Argumente aus dem Frame extrahieren
    local args = getArgs(frame)
    local keywords = args["Stichworte"] or ""
    if keywords == "" then
        return "Keine Stichworte angegeben."
    end
    -- Baue die semantische Abfrage
    local query = string.format("[[Stichworte::%s]]|?Stichworte|limit=5", keywords)
    local queryResult = mw.smw.ask(query)
    if not queryResult or #queryResult == 0 then
        return "Keine Artikel mit ähnlichen Stichworten gefunden."
    end
    -- Ausgabe als Liste
    local output = "<ul>"
    for title, data in pairs(queryResult) do
        local displayTitle = data["Stichworte"] and table.concat(data["Stichworte"], ", ") or title
        output = output .. string.format('<li>[[%s|%s]]</li>', title, displayTitle)
    end
    output = output .. "</ul>"
     return output
     return output
end
end


return related
return related

Version vom 27. November 2024, 00:34 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.findByKeywords(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Argumente aus dem Frame extrahieren
    local args = getArgs(frame)
    local keywords = args["Stichworte"] or ""

    if keywords == "" then
        return "Keine Stichworte angegeben."
    end

    -- Baue die semantische Abfrage
    local query = string.format("[[Stichworte::%s]]|?Stichworte|limit=5", keywords)
    local queryResult = mw.smw.ask(query)

    if not queryResult or #queryResult == 0 then
        return "Keine Artikel mit ähnlichen Stichworten gefunden."
    end

    -- Ausgabe als Liste
    local output = "<ul>"
    for title, data in pairs(queryResult) do
        local displayTitle = data["Stichworte"] and table.concat(data["Stichworte"], ", ") or title
        output = output .. string.format('<li>[[%s|%s]]</li>', title, displayTitle)
    end
    output = output .. "</ul>"

    return output
end

return related