Ta̱mpi̱let:Further
--[[ -- This module produces a "redirect" hatnote. It looks like this: -- '"X" redirects here. For other uses, see Y.' -- It implements the Error: missing redirect parameter (help). template. --]]
local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local mArguments --lazily initialize local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti
local p = {}
-- Helper functions
local function getTitle(...) --Calls mw.title.new and returns either a title object, or nil on error local success, titleObj = pcall(mw.title.new, ...) return success and titleObj or nil end
-- Main functions
function p.redirect(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {parentOnly=true}) --Get number of redirects local numRedirects = tonumber(frame.args[1]) or 1 -- Create the options table. local options = {} options.selfref = args.selfref return p._redirect(args, numRedirects, options) end
function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle) -- Validate the input. Don't bother checking currentTitle, redirectTitle or -- targetTitle, as they are only used in testing. checkType('_redirect', 1, args, 'table') checkType('_redirect', 2, numRedirects, 'number', true) numRedirects = numRedirects or 1 checkType('_redirect', 3, options, 'table', true) options = options or {} currentTitle = currentTitle or mw.title.getCurrentTitle() -- Get the table of redirects local redirect = {} for i = 1, numRedirects do -- Return an error if a redirect parameter is missing. if not args[i] then return mHatnote.makeWikitextError( 'missing redirect parameter', 'Template:Redirect#Errors', args.category ) end redirect[i] = args[i] end -- Generate the text. local formattedRedirect = {} for k,v in pairs(redirect) do formattedRedirect[k] = mHatnote.quote(v) end local text = { mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.', mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text}) } text = table.concat(text, ' ') -- Functionality for adding categories local categoryTable = {} local function addCategory(cat) if cat and cat ~= then -- Add by index to avoid duplicates categoryTable[string.format(, cat)] = true end end --Generate tracking categories local mhOptions = {} local redirTitle for k,v in pairs(redirect) do -- We don't need a tracking category if the template invocation has been -- copied directly from the docs, or if we aren't in main- or category-space. if not v:find('^REDIRECT%d*$') and v ~= 'TERM' -- and currentTitle.namespace == 0 or currentTitle.namespace == 14 then redirTitle = redirectTitle or getTitle(v) if not redirTitle or not redirTitle.exists then addCategory('Missing redirects') elseif not redirTitle.isRedirect then if string.find(redirTitle:getContent(), '#invoke:RfD') then addCategory('Articles with redirect hatnotes impacted by RfD') else addCategory('Articles with redirect hatnotes needing review') end else local target = targetTitle or redirTitle.redirectTarget if target and target ~= currentTitle then addCategory('Articles with redirect hatnotes needing review') end end end
-- Generate the options to pass to Module:Hatnote. if currentTitle.namespace == 0 and not mhOptions.selfref and redirTitle and redirTitle.namespace ~= 0 then -- We are on a mainspace page, and the hatnote starts with something -- like "Wikipedia:Foo redirects here", so automatically label it as -- a self-reference. mhOptions.selfref = true else mhOptions.selfref = options.selfref end end --concatenate all the categories local category = for k,v in pairs(categoryTable) do category = category .. k end
return mHatnote._hatnote(text, mhOptions) .. category end
return p
This template is used on many pages and changes may be widely noticed. Test changes in the template's /sandbox or /testcases subpages, or in your own user subpage. Consider discussing changes on the talk page before implementing them. |
This template uses Lua: |
This template is a wrapper that prompts {{Template shortcut}} to refer to "redirect/s" rather than "shortcut/s".
TemplateData
jhyukParameter | Description | Type | Status | |
---|---|---|---|---|
Page 1 | 1 | The name of the first page that you want to link to. | Page name | required |
Page 2 | 2 | The name of the second page that you want to link to. | Page name | optional |
Page 3 | 3 | The name of the third page that you want to link to. More pages can be added using the parameters "4", "5", "6", etc. | Page name | optional |
Self reference | selfref | Set to "yes" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site. | String | optional |
Category | category | Set to "no", "n", "false", or "0" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified. | Unknown | optional |
Label 1 | label1 label 1 l1 | The displayed label of the first page link | String | optional |
Label 2 | label2 label 2 l2 | The displayed label of the second page link | String | optional |
Label 3 | label3 label 3 l3 | The displayed label for the third page link. Labels for further pages can be added using the parameters "label4", "label5", "label6", etc. | String | optional |
This template uses Lua: |
This template is used to link to articles containing further information on a topic. It looks like this:
It is typically used at the top of a section, when the topic of that section is covered in more detail by another page. It is useful for implementing summary style. The corresponding template for use on category pages is {{Cat more}}
Usage
jhyuk- One article
{{further|PAGE1}}
→- More than one article
{{further|PAGE1|PAGE2|PAGE3}}
→- With a topic
{{further|topic=TOPIC|PAGE1|PAGE2}}
→- All parameters
{{further|topic=TOPIC|PAGE1|PAGE2#SECTION|selfref=yes|category=no|label1=LABEL1}}
→
Parameters
jhyukThis template accepts the following parameters:
1
,2
,3
, ... - the pages to link to. At least one page name is required. Categories and files are automatically escaped with the colon trick, and links to sections are automatically formatted as page § section, rather than the MediaWiki default of page#section.label1
,label2
,label3
... alternative output labels for the corresponding linked pages. Aliases "label N
" (with a space) and "lN
" (short) are also available.topic
- the name of the topicselfref
- if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See Template:Selfref for more information.category
- if set to "no", "n", "false", or "0", suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if the first positional parameter (the page to link to) is omitted.
Interwiki links
jhyukTo link to articles on foreign language Wikipedias, use interwiki links, prefixing the page name in the foreign Wikipedia with the required interwiki language code:
- Basic interwiki links to articles in Spanish and German
{{further|es:PÁGINA1|de:SEITE2}}
→
- Multiple interwiki links with language names
Note that you can use the TOPIC and LABEL parameters in combination to produce this effect:
{{Further|topic=Eero Heinonen, in|de:Eero Heinonen|es:Eero Heinonen|fi:Eero Heinonen|l1=German|l2=Spanish|l3=Finnish}}
→
Template {{Further ill}} can produce similar links, but in a format more like that of {{interlanguage link}}.
Errors
jhyukIf no page names are supplied, the template will output the following message:
- Error: no page names specified (help).
If you see this error message, it is for one of four reasons:
- No parameters were specified (the template code was
{{further}}
). Please use{{further|page}}
instead. - Some parameters were specified, but no page names were included. For example, the template text
{{further|selfref=yes}}
will produce this error. Please use (for example){{further|page|selfref=yes}}
instead. - A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code
{{further|1+1=2|2+2=4}}
will produce this error. To work around this, you can specify the parameter name explicitly by using1=
,2
, etc., before the page name, like this:{{further|1=1+1=2|2=2+2=4}}
. - You tried to access the module directly by using
{{#invoke:(module name)|further|text}}
. Use of #invoke in this way has been disabled for performance reasons. Please use{{(module name)|text}}
instead.
If you see this error message and are unsure of what to do, please post a message on the help desk, and someone should be able to help you.
Pages that contain this error message are tracked in Category:Hatnote templates with errors.
See also
jhyuk- {{Further-text}}
- {{Excerpt}}, which allows transclusion of text (such as an intro section) from one article into another
- {{Broader}}
- {{Main}}
TemplateData documentation used by VisualEditor and other tools
| |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Click here to see a monthly parameter usage report for this template based on this TemplateData.
TemplateData for Further Template used to link to pages containing further information on a topic. Produces the output "Further information: page 1, page 2 and page 3".
|
Usage
jhyuk- One article
{{further|PAGE1}}
→- More than one article
{{further|PAGE1|PAGE2|PAGE3}}
→- With a topic
{{further|topic=TOPIC|PAGE1|PAGE2}}
→- All parameters
{{further|topic=TOPIC|PAGE1|PAGE2#SECTION|selfref=yes|category=no|label1=LABEL1}}
→
Parameters
jhyukThis template accepts the following parameters:
1
,2
,3
, ... - the pages to link to. At least one page name is required. Categories and files are automatically escaped with the colon trick, and links to sections are automatically formatted as page § section, rather than the MediaWiki default of page#section.label1
,label2
,label3
... alternative output labels for the corresponding linked pages. Aliases "label N
" (with a space) and "lN
" (short) are also available.topic
- the name of the topicselfref
- if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See Template:Selfref for more information.category
- if set to "no", "n", "false", or "0", suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if the first positional parameter (the page to link to) is omitted.
Interwiki links
jhyukTo link to articles on foreign language Wikipedias, use interwiki links, prefixing the page name in the foreign Wikipedia with the required interwiki language code:
- Basic interwiki links to articles in Spanish and German
{{further|es:PÁGINA1|de:SEITE2}}
→
- Multiple interwiki links with language names
Note that you can use the TOPIC and LABEL parameters in combination to produce this effect:
{{Further|topic=Eero Heinonen, in|de:Eero Heinonen|es:Eero Heinonen|fi:Eero Heinonen|l1=German|l2=Spanish|l3=Finnish}}
→
Template {{Further ill}} can produce similar links, but in a format more like that of {{interlanguage link}}.
Errors
jhyukIf no page names are supplied, the template will output the following message:
- Error: no page names specified (help).
If you see this error message, it is for one of four reasons:
- No parameters were specified (the template code was
{{further}}
). Please use{{further|page}}
instead. - Some parameters were specified, but no page names were included. For example, the template text
{{further|selfref=yes}}
will produce this error. Please use (for example){{further|page|selfref=yes}}
instead. - A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code
{{further|1+1=2|2+2=4}}
will produce this error. To work around this, you can specify the parameter name explicitly by using1=
,2
, etc., before the page name, like this:{{further|1=1+1=2|2=2+2=4}}
. - You tried to access the module directly by using
{{#invoke:(module name)|further|text}}
. Use of #invoke in this way has been disabled for performance reasons. Please use{{(module name)|text}}
instead.
If you see this error message and are unsure of what to do, please post a message on the help desk, and someone should be able to help you.
Pages that contain this error message are tracked in Category:Hatnote templates with errors.
See also
jhyuk- {{Further-text}}
- {{Excerpt}}, which allows transclusion of text (such as an intro section) from one article into another
- {{Broader}}
- {{Main}}
TemplateData documentation used by VisualEditor and other tools
| |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Click here to see a monthly parameter usage report for this template based on this TemplateData.
TemplateData for Further Template used to link to pages containing further information on a topic. Produces the output "Further information: page 1, page 2 and page 3".
|