This Lua module is used in MediaWiki:Babel-category-override, and on approximately 710,000 pages, or roughly 3834% of all pages. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
This module depends on the following other modules: |
Related pages |
---|
Resolves a soft category redirect.
It takes one parameter, which is the name of a category. It returns that category name, unless the category exists and is a {{category redirect}} ... when it returns the name of the redirect target.
Usage
{{Resolve category redirect|categoryname}}
Examples
- Category exists and is not redirected
- Category:1970s
{{Resolve category redirect|1970s}}
→ 1970s{{Resolve category redirect|Category:1970s}}
→ Category:1970s
- Category exists and is a soft redirect
- Category:Mosques completed in the 19th century
{{Resolve category redirect|Mosques completed in the 19th century}}
→ Mosques completed in the 19th century{{Resolve category redirect|Category:Mosques completed in the 19th century}}
→ Category:Mosques completed in the 19th century
- Category exists and is a soft redirect
- Category:Organisations
{{Resolve category redirect|Organisations}}
→ Organisations{{Resolve category redirect|Category:Organisations}}
→ Category:Organisations
- Non-existent category
- Category:Colourless green things
{{Resolve category redirect|Colourless green things}}
→ Colourless green things{{Resolve category redirect|Category:Colourless green things}}
→ Category:Colourless green things
Templates
Do not use templates in the target name.
{{Resolve category redirect}} cannot expand any templates in the target name, and the {
character caused crashes (as did }
and !
). So it does not attempt to resolve any redirect where the target includes those characters.
- Example
- Category:1781 in Mexico contained
{{category redirect|{{title year}} in New Spain}}
which cannot be resolved. To be safe,{{Resolve category redirect|1781 in Mexico}}
simply returned1781 in Mexico
.
The above example has since been WIKI.org/w/index.php?title=Category:1781_in_Mexico&diff=prev&oldid=1160597791 changed to{{category redirect|1781 in New Spain}}
, which can be resolved.
Avoiding deletion of the redirected page
If the parameter |keep=yes
is included in the category redirect, this hides a speedy deletion button that is otherwise displayed to administrators.
It is helpful to also add {{R from category navigation}} to indicate that the redirect is required for navigation between category pages. See that template page for full syntax.
See also
local p = {}
--Returns the target of {{Category redirect}}, if it exists, else returns the original cat.
function p.rtarget( cat )
if (mw.ustring.match( cat, '[{}!|]') ~= nil ) then
return cat
end
local catcontent = mw.title.new( cat or '', 'Category' ):getContent()
if string.match( catcontent or '', '{{ *[Cc]at' ) then
local getRegex = require('Module:Template redirect regex').main
local tregex = getRegex('Category redirect')
for _, v in pairs (tregex) do
local rtarget = mw.ustring.match( catcontent, v..'%s*|%s*([^|{}}]+)' )
if rtarget then
rtarget = mw.ustring.gsub(rtarget, '^1%s*=%s*', '')
rtarget = string.gsub(rtarget, '^[Cc]ategory:', '')
return rtarget
end
end
end
return cat
end
function p.main( frame )
local args = frame:getParent().args
local cat = args[1]
if (cat == '') or (cat == nil) then
return ''
end
return p.rtarget( cat )
end
return p