มอดูล:Military navigation
หน้าตา
มีการใช้มอดูลนี้ในหลายพันหน้าและการแก้ไขอาจทำให้เกิดผลกระทบหรือสังเกตเห็นได้ ควรทดสอบการเปลี่ยนแปลงในกระบะทราย หรือหน้าทดสอบ หรือในมอดูลกระบะทรายของคุณเอง อนึ่ง อภิปรายเกี่ยวกับการแก้ไขมอดูลได้ที่หน้าอภิปรายก่อนที่จะนำไปใช้ |
มอดูลนี้ขึ้นอยู่กับมอดูลอื่น ๆ ดังต่อไปนี้ |
แม่แบบกล่องนำทาง
[แก้]แม่แบบกล่องนำทางที่เกี่ยวข้องกับการทหารควรสร้างขึ้นโดยใช้ {{กล่องนำทาง การทหาร}} เป็นแม่แบบฐาน
{{Military navigation | name = | raw_name = | state = | style = | title = | image = | imageleft = | odd_color = | even_color = | above = | listclass = | group1 = | list1 = | group2 = | list2 = | group3 = | list3 = ... | group30 = | list30 = | below = }}
- name
- The actual page name (i.e. "XYZ" for Template:XYZ) of the newly-created template.
- raw_name
- Use instead of "name" to omit the V · T · E links from the title bar.
- title
- The displayed title of the navigation box.
- listclass
- Optional – but typically
hlist
, to format content as horizontal lists. In the case of hlists in above or below fields, set bodyclass=hlist, instead. - style
- Optional – an alternative style for the template; this may be set to "wide" to produce a full-width box. The alternative style should be used sparingly; it is intended that the majority of navigational templates will use the default style (in the wild, "wide" has become quite common). The above example template formatted with
style=wide
is shown below:
- state
- Optional – may be set to "collapsed" to force the template to render in its closed state by default.
- odd_color/even_color
- Optional – the stripe colors for alternating listN items to use. These parameters should be used sparingly; in the absence of a good reason to do otherwise, templates should use the default stripe colors.
- groupN/listN
- The body of the navigation box, consisting of successive horizontal blocks of content (the listN fields) with optional labels (the corresponding groupN fields). Please see the documentation for {{navbox}} for more details on the different layouts possible.
- above
- Optional – the sub-header of the navigation box; please see the documentation for {{navbox}} for more details on the resulting layout when this is used.
- below
- Optional – the footer of the navigation box; please see the documentation for {{navbox}} for more details on the resulting layout when this is used.
- image
- Optional – an image to be displayed at the right of the box, given in the form
[[File:Example.jpg|100px]]
. This parameter should be used sparingly, and typically only in conjunction with the full-width template style. - imageleft
- Optional – an image to be displayed at the left of the box, given in the form
[[File:Example.jpg|100px]]
. This parameter should be used sparingly, and typically only in conjunction with the full-width template style.
Common problems with navigation templates
[แก้]There are several known issues with the current navigation template design that editors should be aware of:
- Shifted header wrapping
- A long header used in a narrow navigation template may wrap incorrectly, with the second line being indented further than necessary. A workaround is possible by adding a
<br />
tag between the words where the wrapping is to occur. This should be done to separate link-text to the right of the 'pipe' (|
), as follows:[[Article title|Article <br /> title]]
. An alternative method is to use {{wrap}} for the link-text as follows:[[A very long article title|{{wrap|A very long article title}}]]
, which allows the browser to break as-needed. - Stretching or overflowed boxes
- A very long header formatted as a single link may cause a template to stretch beyond its normal width, or the whole link to extend off too far to the right. A workaround is possible by breaking the header onto multiple lines, as shown above.
local p = { }
local Navbox = require('Module:Navbox')
local Styles = require('Module:WPMILHIST Infobox style')
local function isblank(s)
return (not s) or s == ''
end
local function isnotblank(s)
return s and s ~= ''
end
function p.main(frame)
local args = { }
local pargs = frame:getParent().args
local sargs = {}
local tcats = ''
-- process bodystyle and titlestyle
if (pargs['style'] or '') == 'wide' then
args['titlestyle'] = Styles['nav_box_wide_header']
args['bodystyle'] = Styles['nav_box_wide']
else
args['titlestyle'] = Styles['nav_box_header']
if (pargs['border'] or '') == 'child' or
(pargs['border'] or '') == 'subgroup' then
args['bodystyle'] = Styles['nav_box_child']
tcats = tcats .. '[[หมวดหมู่:หน้าที่ใช้กลุ่มย่อยกล่องนำทางการทหารที่ไม่มีรูปแบบกว้าง]]'
else
args['bodystyle'] = Styles['nav_box']
end
end
sargs['titlestyle'] = 1
sargs['bodystyle'] = 1
-- process groupstyle, abovestyle, belowstyle
args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '')
sargs['groupstyle'] = 1
args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '')
sargs['abovestyle'] = 1
args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '')
sargs['belowstyle'] = 1
-- process oddstyle, evenstyle
args['oddstyle'] = isnotblank(pargs['odd_color'])
and ('background:' .. pargs['odd_color']) or nil
sargs['oddstyle'] = 1
args['evenstyle'] = isnotblank(pargs['even_color'])
and ('background:' .. pargs['even_color']) or nil
sargs['evenstyle'] = 1
-- process name and rawname
args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname']
if isblank(args['name']) then args['navbar'] = 'plain' end
sargs['name'] = 1
sargs['rawname'] = 1
-- copy the remaining args
for k, v in pairs(pargs) do
if v and v ~= '' and sargs[k] == nil then
args[k] = v
end
end
-- add allow wrap
if args['title'] and (pargs['style'] or '') ~= 'wide' then
if not mw.ustring.match(args['title'], '<span class="wrap">') then
-- probably a more efficient way to match 15 or more characters
local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]'
m = m .. m .. m
args['title'] = mw.ustring.gsub(args['title'],
'%[%[(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%1</span>]]')
args['title'] = mw.ustring.gsub(args['title'],
'%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%2</span>]]')
end
end
-- add navbox-vertical for non-wide format
if (pargs['style'] or '') ~= 'wide' then
args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '')
end
return tcats .. Navbox._navbox(args)
end
return p