Questo modulo serve ad aggiungere a una pagina gli interlink corrispondenti a un certo elemento di Wikidata, diverso dall'elemento corrispondente alla pagina stessa (i cui interlink rimangono comunque automaticamente presenti). Può servire in casi particolari, quando è utile interlinkare le pagine di altre Wikipedie, ma per motivi organizzativi dei vari progetti l'elemento Wikidata è diverso.

  • {{#invoke:Interlink|addInterlinks|Q12345}} aggiunge gli interlink dell'elemento Q12345
  • {{#invoke:Interlink|addInterlinks|Q12345|P123}} aggiunge gli interlink dell'elemento indicato alla proprietà P123 dell'elemento Q12345
  • {{#invoke:Interlink|addInterlinks||P123}} aggiunge gli interlink dell'elemento indicato alla proprietà P123 dell'elemento corrente

local getArgs = require('Modulo:Arguments').getArgs
local p = {}

function p.addInterlinks(frame)
    local t = getArgs(frame)
    local itemId = t[1]	--e.g. Q123
    local propertyId = t[2]	--e.g. P456
    
    if itemId == nil or itemId == '' then
        itemId = mw.wikibase.getEntityIdForCurrentPage()
    end
    
    if propertyId ~= nil and propertyId ~= '' then
        local claims = mw.wikibase.getBestStatements(itemId, propertyId)
        itemId = claims[1].mainsnak['datavalue']['value']['id']
    end
    
    local sitelinks = mw.wikibase.getEntity(itemId)['sitelinks']
    local res = ''
    for k,v in pairs(sitelinks) do
        local sitelink = sitelinks[k]
        local globalSiteId = sitelink['site']
        if globalSiteId:find('^[%w-]+wiki$')
                and globalSiteId ~= 'itwiki'
                and globalSiteId ~= 'commonswiki'
                and globalSiteId ~= 'wikidatawiki'
                and globalSiteId ~= 'specieswiki' then
            local lang = globalSiteId:gsub('wiki$', '')
            res = res .. '[['..lang..':'..sitelink['title']..']]'
        end
    end
    
    return res
end
 
return p