Not logged in
Talk
Contributions
Log in
Navigation
Main page
Recent changes
Random page
Upload file
Module
Discussion
Edit
View history
Editing
Module:Category handler/doc
(section)
From Body Communication
Jump to:
navigation
,
search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Advanced usage === This module takes one or more parameters named after the different page types as listed in section [[#Namespaces|namespaces]] above. By using those parameters you can specify exactly in which namespaces your template should categorize. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module meant for articles and talk pages.' local category = categoryHandler{ main = '[[Category:Somecat1]]', -- Categorize in main (article) space talk = '[[Category:Somecat2]]', -- Categorize in talk space nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> The above module will only categorize in main and talk space. But it will not categorize on /archive pages since they are blacklisted. (See section [[#Blacklist|blacklist]] below.) And if you need to demonstrate (discuss) the module on a talkpage, then you can feed "<code>nocat='true'</code>" to prevent that template from categorizing. (See section [[#Nocat|nocat]] below.) Like this: <pre> == My new module == Hey guys, have you seen my new module? {{#invoke:mymodule|main|nocat=true}} Nice, isn't it? --~~~~ </pre> Sometimes we want to use the same category in several namespaces, then do like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in several namespaces.' local category = categoryHandler{ main = '[[Category:Somecat1]]', [ 1 ] = '[[Category:Somecat2]]', -- For help and user space help = 1, user = 1, talk = '', -- No categories on talk pages other = '[[Category:Somecat3]]', -- For all other namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> In the above example we use a numbered parameter to feed one of the categories, and then we tell this module to use that numbered parameter for both the help and user space. The category handler module understands an unlimited number of numbered parameters. The '''other''' parameter defines what should be used in the remaining namespaces that have not explicitly been fed data. Note the empty but defined '''talk''' parameter. That stops this module from showing what has been fed to the '''other''' parameter, when in talk space. The category handler module also has a parameter called '''all'''. It works like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in all namespaces.' local category = categoryHandler{ all = '[[Category:Somecat1]]', -- Categorize in all namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> The above example will categorize in all namespaces, but not on blacklisted pages. If you want to demonstrate that module on a page, then use "<code>nocat=true</code>" to prevent the template from categorizing. We suggest avoiding the '''all''' parameter, since modules and templates should preferably only categorize in the namespaces they need to. The all parameter can also be combined with the rest of the parameters. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in all namespaces.' local category = categoryHandler{ all = '[[Category:Somecat1]]', -- Categorize in all namespaces main = '[[Category:Somecat2]]', -- And add this in main space other = '[[Category:Somecat3]]', -- And add this in all other namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> If the above module is placed on an article, then it will add the categories "Somecat1" and "Somecat2". But on all other types of pages it will instead add "Somecat1" and "Somecat3". As the example shows, the all parameter works independently of the rest of the parameters.
Summary:
Please note that all contributions to Body Communication are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (see
Body Communication:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Tools
What links here
Related changes
Special pages
Page information