Mô đun:Official website
Giao diện
Mô đun này sử dụng thuộc tính Wikidata:
| Mô đun này được xếp loại là đã sẵn sàng để sử dụng rộng rãi. Nó đã đạt đến mức độ hoàn thiện, được coi là khá ổn định và không có lỗi, và có thể được sử dụng bất kỳ chỗ nào nếu phù hợp. Nó có thể được nêu trên các trang trợ giúp cũng như các tài liệu Wikipedia khác làm tùy chọn tìm hiểu cho người dùng mới. Để giảm tải tài nguyên máy chủ và tránh tạo đầu ra gây hại, mọi cải tiến nên được thực hiện thông qua việc kiểm thử tại chỗ thử thay vì sửa đổi "thử và sai" lặp đi lặp lại liên tục. |
| Việc sửa đổi trang mô đun này đối với thành viên mới hoặc vô danh hiện đang bị vô hiệu hóa. Xem quy định khóa trang và nhật trình khóa để biết thêm chi tiết. nếu bạn không thể sửa đổi mô đun này và bạn muốn thay đổi, bạn có thể yêu cầu sửa trang này, thảo luận về những thay đổi tại trang thảo luận, yêu cầu mở khóa trang này, đăng nhập, hoặc tạo một tài khoản. |
Module này được sử dụng cho bản mẫu {{Website chính thức}}. Vui lòng xem tài liệu hướng dẫn sử dụng ở trang bản mẫu đó.
Các thể loại theo dõi
local makeUrl = require('Mô đun:URL')._urllocal p = {}-- Wrapper for pcall which returns nil on failure.local function quickPcall(func) local success, result = pcall(func) if success then return result endend-- Gets the rank for a Wikidata property table. Returns 1, 0 or -1, in-- order of rank.local function getRank(prop) local rank = prop.rank if rank == 'preferred' then return 1 elseif rank == 'normal' then return 0 elseif rank == 'deprecated' then return -1 else -- No rank or undefined rank is treated as "normal". return 0 endend-- Finds whether a Wikidata property is qualified as being in English.local function isEnglish(prop) local ret = quickPcall(function () for i, lang in ipairs(prop.qualifiers.P407) do if lang.datavalue.value['numeric-id'] == 1860 then return true end end return false end) return ret == trueend-- Fetches the official website URL from Wikidata.local fetchWikidataUrlfetchWikidataUrl = function() -- Get objects for all official sites on Wikidata. local websites = quickPcall(function () return mw.wikibase.getEntityObject().claims.P856 end) -- Clone the objects in case other code needs them in their original order. websites = websites and mw.clone(websites) or {} -- Add the table index to the objects in case it is needed in the sort. for i, website in ipairs(websites) do website._index = i end -- Sort the websites, first by highest rank, and then by websites in the -- English language, then by the website's original position in the -- property list. When we are done, get the URL from the highest-sorted -- object. table.sort(websites, function(ws1, ws2) local r1 = getRank(ws1) local r2 = getRank(ws2) if r1 ~= r2 then return r1 > r2 end local e1 = isEnglish(ws1) local e2 = isEnglish(ws2) if e1 ~= e2 then return e1 end return ws1._index < ws2._index end) local url = quickPcall(function () return websites[1].mainsnak.datavalue.value end) -- Cache the result so that we only do the heavy lifting once per #invoke. fetchWikidataUrl = function () return url end return urlend-- Render the URL link, plus other visible output.local function renderUrl(options) if not options.url and not options.wikidataurl then return '<strong class="error">' .. 'Không tìm thấy URL. Vui lòng định rõ một URL ở đây hoặc thêm vào trên Wikidata.' .. '</strong>' end local ret = {} ret[#ret + 1] = string.format( '<span class="official-website">%s</span>', makeUrl(options.url or options.wikidataurl, options.display) ) if options.wikidataurl and not options.url then local entity = mw.wikibase.getEntityObject() or {} local qid = entity.id if qid then ret[#ret + 1] = '[[Tập tin:Blue pencil.svg |frameless |text-top |10px |alt=Sửa đổi này tại Wikidata |link=https://www.wikidata.org/wiki/' .. qid .. '#P856|Sửa đổi này tại Wikidata]]' end end if options.format == 'flash' then ret[#ret + 1] = mw.getCurrentFrame():expandTemplate{ title = 'Link note', args = {note = 'Yêu cầu [[Adobe Flash Player]]'} } end if options.mobile then ret[#ret + 1] = '(' .. makeUrl(options.mobile, 'Di động') .. ')' end return table.concat(ret, ' ')end-- Render the tracking category.local function renderTrackingCategory(url, wikidataurl) if mw.title.getCurrentTitle().namespace ~= 0 then return '' end local category if not url and not wikidataurl then category = 'Website chính thức thiếu URL' elseif not url and wikidataurl then return '' elseif url and wikidataurl then if url:gsub('/%s*$', '') ~= wikidataurl:gsub('/%s*$', '') then category = 'Website chính thức khác nhau giữa Wikidata và Wikipedia' end else category = 'Website chính thức không có trên Wikidata' end return category and string.format('[[Thể loại:%s]]', category) or ''endfunction p._main(args) local url = args[1] or args.URL or args.url local wikidataurl = fetchWikidataUrl() local formattedUrl = renderUrl{ url = url, wikidataurl = wikidataurl, display = args[2] or args.name or 'Website chính thức', format = args.format, mobile = args.mobile } return formattedUrl .. renderTrackingCategory(url, wikidataurl)endfunction p.main(frame) local args = require('Mô đun:Arguments').getArgs(frame, { wrappers = 'Bản mẫu:Website chính thức' }) return p._main(args)endreturn p