Mô đun:Plain sister
Giao diện
Mô đun này cung cấp một hàm duy nhất, dùng để liệt kê các liên kết từ các dự án liên quan từ trang hiện tại. Nó dùng trong {{đề mục liên quan}}.
local p = {}
local sites = {
-- interwiki prefix, parameter, label and site id (for Wikidata)
{ 'w', 'wikipedia', 'bài viết Wikipedia', 'viwiki' },
{ 'c', 'commons', 'thư viện ảnh Commons', 'commonswiki' },
{ 'c:Category', 'commonscat', 'thể loại Commons', 'commonswiki' },
{ 'q', 'wikiquote', 'danh ngôn', 'viwikiquote' },
{ 'n', 'wikinews', 'tin tức', 'viwikinews' },
{ 'wikt', 'wiktionary', 'từ điển', 'viwiktionary' },
{ 'b', 'wikibooks', 'sách' , 'viwikibooks' },
-- { 'v', 'wikiversity', 'course', 'viwikiversity' },
{ 'wikispecies', 'wikispecies', 'danh mục loài', 'specieswiki' },
{ 'voy', 'wikivoyage', 'cẩm nang du lịch', 'viwikivoyage' },
{ 'd', 'wikidata', 'mục Wikidata', 'wikidatawiki' },
{ 'bibliowiki', 'wikilivres', 'bibliowiki', '' }, -- wikilivres now bibliowiki
{ 'bibliowiki', 'bibliowiki', 'bibliowiki', '' },
{ 'm', 'meta', 'Meta', 'metawiki' }
}
function p.interprojetPart( frame )
local frame = frame:getParent()
local item = mw.wikibase.getEntityObject()
local links = {}
for _, site in pairs( sites ) do
local val = frame.args[site[2]] -- link provided as input parameter
if val == '' then
val = nil;
end
if not val and site[4] ~= '' and item then -- fetch it from wikidata
val = item:getSitelink( site[4] )
if site[4] == 'wikidatawiki' then
val = item.id
elseif site[4] == 'commonswiki' and val then -- we have link to commons
local catFlag = (#val>9 and string.sub(val,1,9) == 'Category:')
if (site[2]=='commonscat' and catFlag==false) or (site[2]=='commons' and catFlag==true) then
val = nil -- link is to a wrong namespace so let's nuke it
elseif (site[2]=='commonscat' and catFlag==true) then
val = string.sub(val,10) -- trim 'Category:' from the front
end
end
end
if not val and site[2] == 'commons' and item then
local statements = item:getBestStatements('P935' ) -- get commons gallery page from P935 property
if statements[1] and statements[1].mainsnak.datavalue then
val = statements[1].mainsnak.datavalue.value
end
end
if not val and site[2] == 'commonscat' and item then
local statements = item:getBestStatements('P373' ) -- get commons category page from P373 property
if statements[1] and statements[1].mainsnak.datavalue then
val = statements[1].mainsnak.datavalue.value
end
end
if val then
table.insert( links, '[[' .. site[1] .. ':' .. val .. '|' .. site[3] .. ']]' )
end
end
if #links == 0 then -- links table length is zero
return ''
end
return '<li class="sisitem">'
.. '<span class="sisicon" style="padding-right:1ex;">[[Tập tin:Wikimedia-logo.svg|frameless|18px|link=Đặc biệt:Ma trận trang|alt=Các dự án wiki khác.]]</span>'
.. '[[Đặc biệt:Ma trận trang|các dự án wiki khác]]: ' .. table.concat( links, ', ' )
.. '.</li>'
end
return p