英雄联盟维基
探索
首页
讨论板
所有页面
社区页
交互式地图
最新博文
英雄联盟
英雄
免費英雄輪換
背景故事
游戏技巧
技能数据
轶事
皮肤
地图
召唤师峡谷
扭曲丛林
水晶之痕
试炼之地
熔岩地區
物品
初始
基础
史诗
傳說
神话
消耗品
已移除物品
小兵
近戰小兵
遠程小兵
攻城小兵
超級小兵
符文
召唤师技能
云顶之弈
英雄
道具
小小英雄
社區
遊戲幫助
術語
快捷鍵與命令
幫助中心
最新博客
FANDOM
游戏
电影
电视
wiki
探索wiki
社区中心
创建wiki
尚未注册?
注册
登录
登录
注册
英雄联盟维基
1,859
个页面
探索
首页
讨论板
所有页面
社区页
交互式地图
最新博文
英雄联盟
英雄
免費英雄輪換
背景故事
游戏技巧
技能数据
轶事
皮肤
地图
召唤师峡谷
扭曲丛林
水晶之痕
试炼之地
熔岩地區
物品
初始
基础
史诗
傳說
神话
消耗品
已移除物品
小兵
近戰小兵
遠程小兵
攻城小兵
超級小兵
符文
召唤师技能
云顶之弈
英雄
道具
小小英雄
社區
遊戲幫助
術語
快捷鍵與命令
幫助中心
最新博客
编辑“
Module:ImageLink
”
返回页面
|
Xixshnsh
(
留言墙
|
贡献
)
2021年1月29日 (五) 11:45的版本
(
差异
)
←上一版本
|
最后版本
(
差异
) |
下一版本→
(
差异
)
编辑源代码
查看历史
讨论 (0)
正在编辑
Module:ImageLink
警告:您正在编辑的是本页面的旧版本。
如果您发布该更改,该版本后的所有更改都会丢失。
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
-- <pre> local ImageLink = {} -- Dependencies local HF = require("Dev:HF") local FN = require("Module:Filename") local lib = require('Module:Feature') local userError = require('Dev:User error') --[[ {{#invoke: ImageLink | ability | champion = | ability = -- can be empty ... }} {{#invoke: ImageLink | buff | buff = | variant = -- can be empty ... }} {{#invoke: ImageLink | champion | champion = | skin = -- can be empty | circle = -- can be empty | variant = -- can be empty ... }} {{#invoke: ImageLink | item | item = | enchantment = -- can be empty | variant = -- can be empty ... }} {{#invoke: ImageLink | loading | champion = | skin = | variant = -- can be empty ... }} {{#invoke: ImageLink | rune | rune = | variant = -- can be empty ... }} {{#invoke: ImageLink | spell | spell = | variant = -- can be empty ... }} {{#invoke: ImageLink | ward | ward = | variant = -- can be empty ... }} {{#invoke: ImageLink | TFTchampion | champion = | set = ... }} {{#invoke: ImageLink | TFTitem | item = ... }} {{#invoke: ImageLink | TFTtrait | trait = | set = ... }} {{#invoke: ImageLink | LittleLegend | legend = | variant = ... }} {{#invoke: ImageLink | basic | link = | text = | alttext = | image = | image2 = | image3 = | size = | width = | height = | border = | separator = | display = | class = | style = | iconclass = | iconstyle = | label = | labellink = | labelclass = | labelstyle = | possessive = | edit = | editlink = | number = | blacknum = -- nil or 'true' }} ]]-- function ImageLink.ability(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end _input = args['champion'] args['champion'] = lib.validateName(args['champion']) args['link'] = args['link'] or formatnil('%s#%s', args['champion'], args['ability']) or args['champion'] or '' args['text'] = args['text'] or args['ability'] or '' args['image'] = args['image'] or FN.ability{args['ability'], args['variant']} args['editlink'] = args['editlink'] or formatnil('Template:Data %s/%s', args['champion'], args['ability']) local link, img = ImageLink._createLink(args) if args['champion'] and args['ability'] then link:addClass('ability-icon') if args['champion'] then link:attr('data-champion', args['champion']) end if args['ability'] then link:attr('data-ability', args['ability']) end if args['variant'] then link:attr('data-variant', args['variant']) end end return link end function ImageLink.buff(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or args['buff'] or '' args['text'] = args['text'] or args['buff'] or '' args['image'] = args['image'] or FN.buff{args['buff'], args['variant']} args['editlink'] = args['editlink'] or formatnil('Template:Buff data %s', args['buff']) local link, img = ImageLink._createLink(args) link:addClass('buff-icon') if args['buff'] then link:attr('data-param', args['buff']) end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.champion(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end _input = args['champion'] args['champion'] = lib.validateName(args['champion']) args['link'] = args['link'] or args['champion'] or '' args['text'] = args['text'] or _input or '' if args['circle'] == 'true' then args['image'] = args['image'] or FN.championcircle{_input, args['skin'], args['variant']} args['border'] = args['border'] or 'false' else args['image'] = args['image'] or FN.championsquare{_input, args['skin'], args['variant']} end args['editlink'] = args['editlink'] or 'Module:ChampionData/data' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) link:addClass('champion-icon') link:attr('data-champion', args['champion']) link:attr('data-skin', lib.ternary(args['skin'] == '', 'Original', args['skin'] or 'Original')) if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.item(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end if args['enchantment'] then args['link'] = args['link'] or args['enchantment'] or '' args['text'] = formatnil('%s (%s)', args['item'], args['enchantment']) or args['text'] or '' args['image'] = args['image'] or FN.item{['item'] = args['item'], ['enchantment'] = args['enchantment'], ['variant'] = args['variant']} else args['link'] = args['link'] or args['item'] or '' args['text'] = args['text'] or args['item'] or '' args['image'] = args['image'] or FN.item{args['item'], args['variant']} end args['editlink'] = args['editlink'] or formatnil('Template:Item data %s', args['item']) or '' local link, img = ImageLink._createLink(args) link:addClass('item-icon') if args['item'] then link:attr('data-param', args['item']) end if args['enchantment'] then link:attr('data-enchantment', enchantment):addClass('enchantment-icon') end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.loading(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end _input = args['champion'] args['champion'] = lib.validateName(args['champion']) args['link'] = args['link'] or args['champion'] or '' args['text'] = args['text'] or _input or '' args['image'] = args['image'] or FN.loading{_input, args['skin'], args['variant']} args['border'] = args['border'] or 'false' args['size'] = args['size'] or '110px' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) link:addClass('skin-icon') link:attr('data-skin', lib.ternary(args['skin'] == '', 'Original', args['skin'] or 'Original')) if args['champion'] then link:attr('data-champion', args['champion']) end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.rune(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or args['rune'] .. ' (Rune)' args['text'] = args['text'] or args['rune'] or '' args['image'] = args['image'] or FN.rune{args['rune'], args['variant']} args['editlink'] = args['editlink'] or formatnil('Template:Rune data %s', args['rune']) or '' args['border'] = args['border'] or 'false' local link, img = ImageLink._createLink(args) link:addClass('rune-icon') if args['rune'] then link:attr('data-param', args['rune']) end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.skin(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end _input = args['champion'] args['champion'] = lib.validateName(args['champion']) local skinData = mw.loadData('Module:SkinData/data') local skinname = args['skin'] or "Original" if skinData[args['champion']] == nil then return userError("''" .. args['champion'] .. "'' is not a valid champion name" , "LuaError") end if skinData[args['champion']].skins[skinname] == nil then return userError("Skin ''" .. skinname .. "'' for " .. args['champion'] .. " is not specified in Module:SkinData/data" , "LuaError") end local formatname = skinData[args['champion']].skins[skinname].formatname args['link'] = args['link'] or args['champion'] or '' args['text'] = args['text'] or lib.ternary(formatname, formatname, skinname .. " " .. _input) or '' if args['circle'] == 'true' then args['image'] = args['image'] or FN.championcircle{_input, args['skin'], args['variant']} args['border'] = args['border'] or 'false' else args['image'] = args['image'] or FN.championsquare{_input, ["variant"] = args['variant']} end args['editlink'] = args['editlink'] or 'Module:SkinData/data' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) link:addClass('skin-icon') link:attr('data-skin', lib.ternary(args['skin'] == '', 'Original', args['skin'] or 'Original')) if args['champion'] then link:attr('data-champion', args['champion']) end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.spell(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or args['spell'] or '' args['text'] = args['text'] or args['spell'] or '' args['image'] = args['image'] or FN.spell{args['spell'], args['variant']} args['editlink'] = args['editlink'] or formatnil('Template:Spell data %s', args['spell']) or '' local link, img = ImageLink._createLink(args) link:addClass('spell-icon') if args['spell'] then link:attr('data-param', args['spell']) end if args['variant'] then link:attr('data-variant', args['variant']) end return link end function ImageLink.ward(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or 'Ward skins' args['text'] = args['text'] or args['ward'] .. ' Ward' or '' args['image'] = args['image'] or FN.ward{args['ward']} args['size'] = args['size'] or 64 args['border'] = args['border'] or 'false' local link, img = ImageLink._createLink(args) link:addClass('ward-icon') return link end function ImageLink.TFTchampion(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local TFTu = require('Module:TFTUnitData') _input = args['champion'] args['champion'] = lib.validateName(args['champion']) if args['set'] then args['skin'] = args['skin'] or TFTu.get{_input, args['set'], 'skin'} args['variant'] = args['variant'] or TFTu.get{_input, args['set'], 'variant'} end args['link'] = args['link'] or args['champion'] .. '/TFT' or '' args['text'] = args['text'] or _input or '' if args['circle'] == 'true' then args['image'] = args['image'] or FN.championcircle{_input, args['skin'], args['variant']} args['border'] = args['border'] or 'false' else args['image'] = args['image'] or FN.championsquare{_input, args['skin'], args['variant']} end args['editlink'] = args['editlink'] or 'Module:TFTUnitData/data' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) if args['set'] then link:addClass('tft-icon') link:attr('data-param', args['champion']) link:attr('data-type', 'champion') link:attr('data-set', args['set']) end return link end function ImageLink.TFTitem(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or 'https://teamfighttactics.fandom.com/zh/wiki/' .. args['item'] .. ' (Teamfight Tactics)' or '' args['text'] = args['text'] or args['item'] or '' args['image'] = args['image'] or args['item'] .. ' TFT item.png' args['editlink'] = args['editlink'] or args['item'] .. ' (Teamfight Tactics)' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) link:addClass('tft-icon') link:attr('data-param', args['item']) link:attr('data-type', 'item') return link end function ImageLink.TFTtrait(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['link'] = args['link'] or args['trait'] .. ' (Teamfight Tactics)' or '' args['text'] = args['text'] or args['trait'] or '' args['image'] = args['image'] or args['trait'] .. ' TFT icon.svg' args['editlink'] = args['editlink'] or 'Module:TFTTraitData/data' args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText local link, img = ImageLink._createLink(args) if args['set'] then link:addClass('tft-icon') link:attr('data-param', args['trait']) link:attr('data-type', 'trait') link:attr('data-set', args['set']) end return link end function ImageLink.LittleLegend(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end args['tier'] = args['tier'] or '3' args['link'] = args['link'] or args['legend'] .. ' (Teamfight Tactics)' if (args['text'] == nil) then if (args['variant'] ~= nil) then args['text'] = args['variant'] .. ' ' else args['text'] = '' end args['text'] = args['text'] .. args['legend'] end if (args['image'] == nil) then if (args['legend'] ~= nil) then if (args['variant'] ~= nil) then args['image'] = args['legend'] .. ' ' .. args['variant'] .. ' Tier ' .. args['tier'] .. '.png' else args['image'] = 'Little Legend ' .. args['legend'] .. ' profileicon.png' end else args['image'] = '*none*' end end local link, img = ImageLink._createLink(args) return link end function ImageLink.basic(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local link, img, label = ImageLink._createLink(args) return link end function ImageLink._createLink(args) -- define args.display (default: inline) args['display'] = (({['inlineblock'] = 'inline-block'})[args['display']]) or args['display'] or 'inline' -- define args.image (default: '') args['image'] = args['image'] or '' if args['image'] == '*none*' then args['image'] = '' end -- define args.border (true or false; default: true) args['border'] = args['border'] or true if args['border'] == 'false' or args['border'] == '0' then args['border'] = false end -- define args.edit (true or false; default: false) args['edit'] = args['edit'] or false if args['edit'] == 'true' or args['edit'] == '1' then args['edit'] = true end -- define args.style (default: 'white-space:pre') args['style'] = args['style'] or 'white-space:pre' if args['style'] == '*none*' then args['style'] = nil end -- define args.labelstyle (default: 'white-space:normal') args['labelstyle'] = args['labelstyle'] or 'white-space:normal' if args['labelstyle'] == '*none*' then args['labelstyle'] = nil end -- define args.width, args.height (%%x%%px or %%x%% or %%px or %%; default: 20px) local width, height if(args['size']) then width, height = getSize(args['size']) end args['size'] = args['size'] or 20 args['width'] = tonumber(mw.ustring.match(args['width'] or width or '', '%d*')) args['height'] = tonumber(mw.ustring.match(args['height'] or height or '', '%d*')) if(not args['height']) then args['width'] = args['width'] or args['size'] end -- define args.selflink (default: articlename) args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().prefixedText -- define args.link (default: '') args['link'] = args['link'] or '' if args['link'] == '*none*' then args['link'] = '' end -- define args.possessive (default: '') args['possessive'] = args['possessive'] or '' if args['possessive'] == 'true' or args['possessive'] == '1' then args['possessive'] = true end -- define args.text (default: '') args['text'] = args['text'] or args['link'] or '' if args['text'] == '*none*' then args['text'] = '' end if args['possessive'] == true then if mw.ustring.sub(args['text'], -1) == 's' then args['text'] = args['text'] .. '\'' else args['text'] = args['text'] .. '\'s' end end -- define args.alttext (default: '') args['alttext'] = args['alttext'] or '' -- define args.label (before or after; default: after) args['label'] = (({['after'] = 'after', ['before'] = 'before'})[args['label']]) or 'after' if args['image'] == '' then args['label'] = 'only' end if args['text'] == '' then args['label'] = 'none' end -- define args.labellink (true or false; default: true) args['labellink'] = args['labellink'] or true if args['labellink'] == 'false' or args['labellink'] == '0' then args['labellink'] = false end --define args.data-param (specified or '') args['data-param'] = args['data-param'] or '' if args['data-param'] == '*none*' then args['data-param'] = nil end -- define args.separator (default: ' ') args['separator'] = args['separator'] or ' ' local tag = lib.ternary(args['display'] == 'inline', 'span', 'div') local link = mw.html.create(tag):css('display', args['display']):addClass(args['display'] .. '-image') if args['class'] then link:addClass(args['class']) end if args['style'] then link:cssText(args['style']) end if args['data-param'] then link:attr('data-param', args['data-param']) end -- //img start local img = mw.html.create(tag) if args['image'] ~= '' then img:css({position = 'relative', display = 'inline-block'}) local size = tostring(args['width'] or '') .. 'x' .. tostring(args['height'] or '') .. 'px' if args['iconclass'] then img:addClass(args['iconclass']) end if args['width'] then img:attr('data-width', tostring(args['width'])) end if args['height'] then img:attr('data-height', tostring(args['height'])) end if args['border'] == true then img:addClass('border') end if args['iconstyle'] then img:cssText(args['iconstyle']) end -- [[File:test.jpg|24px|border|link=test|testing]] img:wikitext(mw.ustring.format('[[File:%s%s%s|link=%s%s]]', args['image'], lib.ternary(size == 'px', '', '|'..size), lib.ternary(args['border'], '|border', ''), lib.ternary(args['link'] == args['selflink'], '', args['link']), lib.ternary(args['alttext'] == '', lib.ternary(args['text'] == '', '', '|' .. args['text']), '|' .. args['alttext'] ) )) if args['image2'] then img:wikitext(mw.ustring.format('[[File:%s%s%s|link=%s%s]]', args['image2'], lib.ternary(size == 'px', '', '|'..size), lib.ternary(args['border'], '|border', ''), lib.ternary(args['link'] == args['selflink'], '', args['link']), lib.ternary(args['alttext'] == '', lib.ternary(args['text'] == '', '', '|' .. args['text']), '|' .. args['alttext'] ) )) end if args['image3'] then img:wikitext(mw.ustring.format('[[File:%s%s%s|link=%s%s]]', args['image3'], lib.ternary(size == 'px', '', '|'..size), lib.ternary(args['border'], '|border', ''), lib.ternary(args['link'] == args['selflink'], '', args['link']), lib.ternary(args['alttext'] == '', lib.ternary(args['text'] == '', '', '|' .. args['text']), '|' .. args['alttext'] ) )) end -- //bottom right number start if args['number'] and args['number'] ~= '' then local number = mw.html.create('span') local t = { ['position'] = 'absolute', ['font-size'] = string.gsub(math.min(args['width'] or 1e309, args['height'] or 1e309), 'px', '')/2 ..'px', ['line-height'] = '1em', ['bottom'] = '0.08em', ['right'] = '0.1em', ['font-weight'] = 'bold', ['pointer-events'] = 'none', ['color'] = lib.ternary(args['blacknum'] == 'true', '#111', '#EEE'), ['text-shadow'] = lib.ternary(args['blacknum'] == 'true', '-1px 0 1px #fff, 0 1px 1px #fff, 1px 0 1px #fff, 0 -1px 1px #fff', '-1px 0 1px #000, 0 1px 1px #000, 1px 0 1px #000, 0 -1px 1px #000') } number:css(t) number:wikitext(args['number']) number:done() img:node(number) end -- //bottom right number end img:done() else img = nil end -- //img end -- //label start local label = mw.html.create(tag) if args['text'] ~= '' then link:addClass('label-' .. args['label']) if args['labelclass'] then label:addClass(args['labelclass']) end if args['labelstyle'] then label:cssText(args['labelstyle']) end if args['link'] == '' or args['labellink'] == false then label:wikitext(args['text']) elseif args['selflink'] == args['link'] then label:wikitext('<strong class="selflink">' .. args['text'] .. '</strong>') elseif args['text'] == args['link'] then label:wikitext(formatnil('[[%s]]', args['text'])) else label:wikitext(formatnil('[[%s|%s]]', args['link'], args['text'])) end if args['edit'] == true and args['editlink'] ~= nil then label:wikitext(' <sup>[' .. tostring(mw.uri.fullUrl(args['editlink'], 'action=edit')) .. ' e]</sup>') end label:done() else label = nil end -- //label end if args['label'] == 'before' then if label then link:node(label) end if args['separator'] and img and label then link:wikitext(args['separator']) end if img then link:node(img) end else if img then link:node(img) end if args['separator'] and img and label then link:wikitext(args['separator']) end if label then link:node(label) end end return link, img, label end function formatnil(text, ...) if select("#", ...) == 0 then return text end for i=1, select("#", ...) do if select(i, ...) == nil then return nil end end return mw.ustring.format(text, ...) end function getSize(size) local fields = HF.explode('x', mw.ustring.gsub(tostring(size or ''), 'px', '', 1)) local width = tonumber(fields[1]) or nil local height = tonumber(fields[2]) or nil return width, height end return ImageLink -- </pre> -- [[Category:Lua]]
摘要:
请注意在英雄联盟维基上的所有贡献都将依据CC-BY-SA进行发布。
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
Module:ImageLink/doc
(
编辑
)
Follow on IG
TikTok
Join Fan Lab