Template:Search link/doc
| This is a documentation subpage for Template:Search link. It may contain usage information, categories and other content that is not part of the original template page. |
__EXPECTED_UNCONNECTED_PAGE__
| This template should not be used in articles as links to search result pages are among the links normally to be avoided. |
This template creates a link that can be used to store a Wikipedia search box query. A search link is useful for collaborative search on Talk pages and most other pages, but it is not to be used in articles. If used in articles, it outputs the above warning.
Basics
{{Search link|first|second|third}}
{{Search link|query|label|domain}}
- The first parameter is for the search, or query.
- The second parameter is a label for the link.
- The third parameter is the search domain.
The name of the template is Search link, or sl for short.
The second and third parameters are optional and have defaults, so the short form is {{sl|query}}.
Both a search link and a search box go to the same search engine. The same query produces the same result.
The basic search covers articles. It finds words and phrases composed of letters and numbers very quickly, but a basic search can also query for all articles that contain a string that includes punctuation, math, and other symbols as seen in the page content or as seen in the page wikitext.
| 1 | {{Search link |
There is one search term, a phrase that produces 18 results, including a redirect. For one term, the page ranking rule is simple: title matches, on top. Two pages hit on "Search Engine Query" and one on "[[Search engine (computing)|search engine]] query". |
| 2 | {{Search link |
Added a term: insource:/"slash delimited regex"/. Now there are 15. Three were filtered out because regex match only exact strings. All other searches always ignore capitalization, punctuation, math, and other symbols, like the ]] above. Proves a basic difference with search 1: only insource: searches wikitext. All other terms search what is rendered. |
| 3 | {{Search link |
There are three search terms. They produce 1169 results. Many page ranking rules apply to make the top most likely and the bottom least likely, probably. |
| 4 | {{Search link |
Similar to search 3, the regex crawled character-by-character through the same 1169-page filter to produce its same 15 results. As much as that seems, 1169 is nothing compared to running an unfiltered (unaccompanied) regex exposed to the 88,420 pages on the wiki to produce some 15 results.[1] |
| 5 | {{Search link"Arithmetic" titles & "2 + 2" |
The regexp is the first term, but the prefix: term first filters out all but a few titles that start with the characters A-r-i-t-h-m-e-t-i-c, then the regexp crawls character-wise. Perhaps such a label conveys this to your team. |
This template differs from the search box superficially when searching for an equals sign. In the search box you just say =, but here you must use the five-letter string {{=}}.[2]
In search 5 notice the need for the double quotes around the search pattern: insource:/"slash delimited regexp"/. These protect any characters from being interpreted as regex metacharacters, and ensures they are interpreted literally. In basic searches quotes are always used, to enable exact-string searches in the wikitext. In advanced searches the double quotes are not used, so that the metacharacters can act as conditional and branching operators to create generalized patterns.
Search 2 exemplifies the easiest filter to apply to accompany any regexp search. It just takes the same phrase and make it a separate term. Given any regexp insource/"exact string search"/, just accompany it by an insource:"exact string search". The later term will always act like a perfect filter, matching every alphanumeric, and ignoring every non-alphanumeric, speeding through an indexed search to filter out pages the regexp couldn't possibly match. As for other filters, a namespace is weak, but every additional term increases regex power.
The next section covers Search link arguments more in depth.
Advanced
Here are the template parameters for Search link.
| Parameter | Alias | Description |
|---|---|---|
| 1 | |query= |
The search query. It becomes the text of the search link (how the link will look) so it accepts |text=.
|
| 2 | |label= |
A label to replace the default text. A new look to the link, so it also accepts |link=. Defaults to show the search query.
|
| 3 ⋮ 20 |
|3|4|5|…|20 |
The search domain: one or more namespaces abbreviated "nsx", where x is
any namespace number. |
|limit=
|
Number of search results on the first page. Named parameter only, not positional. |
| Namespaces | |||
|---|---|---|---|
| Subject namespaces | Talk namespaces | ||
| 0 | (Main/Article) | Talk | 1 |
| 2 | User | User talk | 3 |
| 4 | Elite Dangerous Wiki | Elite Dangerous Wiki talk | 5 |
| 6 | File | File talk | 7 |
| 8 | MediaWiki | MediaWiki talk | 9 |
| 10 | Template | Template talk | 11 |
| 12 | Help | Help talk | 13 |
| 14 | Category | Category talk | 15 |
| 100 | [[Wikipedia:Portal|]] | 101 | |
| 118 | [[Wikipedia:Drafts|]] | 119 | |
| 126 | [[Wikipedia:Manual of Style|]] | 127 | |
| 710 | TimedText | TimedText talk | 711 |
| 828 | Module | Module talk | 829 |
| 1728 | [[Event:Sandbox|]] | 1729 | |
| Former namespaces | |||
| 108 | Book | Book talk | 109 |
| 442 | Course | Course talk | 443 |
| 444 | Institution | Institution talk | 445 |
| 446 | Education Program | Education Program talk | 447 |
| 2300 | Gadget | Gadget talk | 2301 |
| 2302 | Gadget definition | Gadget definition talk | 2303 |
| 2600 | Topic | 2601 | |
| Virtual namespaces | |||
| -1 | Special | ||
| -2 | Media | ||
| Current list | |||
You only ever need to use parameters 3–20 if you want a profile of two or more namespaces for a search domain. Otherwise you can just say the namespace name (or all) at the beginning of the query, or a prefix parameter at the end of the query.
When the query goes through this template, the default search domain is article space, just as it is for basic users. The default search domain of a user, logged-in or not, is article space unless the user set their preference.[3] But no matter who uses a search link the results will always be the same. "Cut and paste" can never guarantee the same results for a search, but a search link can because the search domain is just article space for everyone, or search domain is the set of namespaces you set for everyone.
If you know the numbers of your search domain profile, you just type them in ns=ns0&ns1&ns118. (You can get them from the namespace table to the right.) Otherwise you refine your query and search domain on the search results page, whose Advanced interface is designed to select and adjust namespaces with no knowledge of the namespace numbers. Once that produces satisfactory results, you copy the namespaces string from the URL (in your browser's address bar), and paste it into |ns=, and you can get the query from the search results page search box, and paste it as the query, and that's your search link.
If you have just one namespace in your search link, and it's not article space, you can specify it by saying, say, ns=ns10, or |ns10" at parameter position 3 or greater:
{{sl|"search link" namespace||ns10}}→ "search link" namespace
For one namespace the explicit name is preferred:
{{sl|Template:"search link" namespace}}→ Template:"search link" namespace
The explicit name is preferred if you will be publishing or saving your search link. That way when it is run later the search domain shows up explicitly at the beginning of the search box of the search results page to inform the user. Otherwise only the URL and only the namespace-profile dialog frame pops up on the search results page to inform the user. When it is two or more namespaces, these things always happen, because the query only accepts one namespace (as the first term only). But all is also an informative query, a pseudo-namespace for Search only. If you see a query begin with all:, the URL will be loaded with all the namespace parameters.
You can use "all" in {{Search link}} to specify all namespaces:
{{Search link|query|ns=all}}{{Search link|query|label|all}}
but again, it is far more preferable to say
{{Search link|all:"search link" namespace}}→ all:"search link" namespace
than it is to use:
{{Search link|"search link" namespace||all}}→ "search link" namespace
for the reasons given just above. But when specifying "all", the query time is about seven times greater because there are that many more pages on the wiki than there are articles. If a more targeted search is possible, it runs much more quickly than the "all" search.
For example, if you have a query for which know the search domain is 10 and 11, and you want no label, then you need a parameter 3, but you need no parameter 2, so per the template parameter rules the search link can be made in four general ways:
{{Search link|query||ns10|ns11}}When parameter 1 unnamed, and parameter 2 is unnamed||(defined as the "empty string"), then parameter 3 can be defined unnamed ns10, and parameter 4 can be defined unnamedns11, and so on. Nothing is named because everything is defined.{{Search link|query|3=ns10|4=ns11}}Parameter 2 is undefined, but that's fine because parameters 3 and above are all named...{{Search link|query|ns=ns10&ns11}}or the empty positional parameter||is not needed when|ns=defines itself named.{{Search link|query=query|label=|ns=ns10&ns11}}Everything is explicitly named.
For another example, if you select the "Wikipedia" and "Help" namespaces, then run a query, the URL will show ns4=1&ns12=1. Copy that and paste it to |ns=ns4=1&ns12=1. (Note: you can ignore the "=1" part from the URL.)
Note how the URL contains ns0, ns1, ns2, and ns3, and how it got them:
{{Search link|systems operations|3=ns2|4=ns1|ns=ns3|20=ns0}}→ systems operations{{Search link|query = systems operations|||ns2|ns1|ns3|ns0}}→ systems operations{{Search link|systems operations|3=ns2&ns1&ns3&ns0}}→ systems operations
If you need to develop a highly specific search domain, a very elaborate one carved out of a set of the thirty namespaces, then you will have developed this at the search results page using the Advanced search domain picker there. Then you just cut and paste the entire string from the URL of your found search domain namespaces, and paste it into one named parameter |ns=.
To type in namespaces 0, 2, 4, 5, 7 and 9, with no label, the two easiest ways are:
{{Search link|query||ns0|ns2|ns4|ns5|ns7|ns9}}{{Search link|query|ns=ns0&ns2&ns4&ns5&ns7&ns9}}
The order is irrelevant.
Advanced examples
- For examples, see Help:Searching/Regex/Sandboxing.
All these involve insource:/slash delimited regex/ with filters. Any search link with an insource:/regex/ search should always provide the additional query terms that would filter (reduce) the search domain as much as possible. This template defaults to article space if no namespace is given, which is a filter.
- Quoting
The need to match an equals in an article is not surprising, and is basic. You have to use {{=}} or |query= or |1= just to get the equals sign in your query to the search engine, or {{!}} to get the pipe character to the search engine. Both pipe characters and the equals signs are template sensitive for all templates, so you can always quote them with curly brackets like that inside templates. Although the search box can take = and | directly, quoting is necessary in the search link because otherwise they have their parameters meaning.
Regex are sensitive to punctuation, brackets, math and other symbolic characters, collectively known as "punctuation" so you quote them, because otherwise they have their regex metacharacter meaning. The "metacharacters" of CirrusSearch have claimed most punctuation characters as functions in their regex, but you don't have to know all the metacharacter functions just to search for them as targets literally. You can simply quote all punctuation to search for them as literal targets in wikitext. The way to easily quote every character in an entire regexp is to put the whole term in quotes: insource:/"regexp with literal characters"/
To get a pipe character through both the template and the search engine to target it as a character in wikitext, you have to quote it twice, hence the frequent need for the six characters \{{!}} in an advanced search link. The equals sign is not a metacharacter, so it does not have to be quoted twice, as the pipe character does. The pipe character is a metacharacter that means OR.
To generate advanced regex searches, see about doing so at {{regex}}. Help:Searching/FeaturesHelp:Searching/Regex Help:Searching/Regex/Sandboxing
Templates for searching Wikipedia
Search links
A search link stores a query in a link that takes you to live search results for that stored search. They're found on user pages and talk pages. Use one to bring the full feature set of MediaWiki Search, or features of external search engines, to bear on users unfamiliar with their search parameters.
One type of search link is a wikilink with all the capabilities of Search (search box), and with standard wikilink syntax: [[Special:Search/query| label]]. So this search link will (1) navigate: [[Special:search/Wales]] → Special:search/Wales or (2) search: [[Special:search/~Wales | search/~Wales]] → search/~Wales if you prefix a ~ tilde character.
All other search links are made from a template that will build a URL instead of wikilink. A URL can for example can call off-site search engines to search Wikipedia.
- {{Search link}} offers all the capabilities of Searching (search box), plus extra (URL) parameters for combinations of namespaces, and where you can escape the 20-results-per page-limitation, shareable: {{search link | et al | ''label'' | ns4 | ns5 | limit = 123}} → label.
- {{Regex}} – develop an advanced regex search. {{regex | \<--.*--> | label = Articles with comments missing the ! bang character | prefix=0}} → Articles with comments missing the ! bang character
- {{Template usage}} – develop a template regex search, and pinpoint specific template-call details. {{Template usage | Convert | \{{!}}C\{{!}}F | 0 | Articles that convert Celsius to Fahrenheit}} → Articles that convert Celsius to Fahrenheit
- {{ShortSearch}} – create three search links: {{ShortSearch | system operations research}} → WP GWP G (search Wikipedia, "Google" Wikipedia, and Google search)
- {{wpsearch}} – create five search links: {{wpsearch|collaborative search}} → collaborative search – Wikipedia search | Google search | Bing search | DuckDuckGo search | Yahoo search
- {{Wikidata search link}} – creates a Wikidata search link for descriptions, entities, items, properties, etc. → https://www.wikidata.org/w/index.php?search=Universe&title=Special:Search&fulltext=1
Search boxes
- {{Search box}} – Simple search box with choice of button below or to the right
- {{Search prefixes}} – Multiple pages' subpages are searched at once.
- {{Archive banner}} –For searching archives. It is of banner-style, like many other archive templates.
- {{Search lists}} – For searching from lists of lists.
- {{Editor search boxes}} – List of different administrative namespaces search boxes.
Search boxes are made by <inputbox> tags. See mw:Extension:InputBox.
Page title searches
- {{Canned search}} – Link to automated search results for a given term
- {{In title}} – Search for pages whose name contains given words
- {{Look from}} – Search for pages whose name begins with a given word
For searches with exact matches, exact in upper and lower cases, or in punctuation marks, see Help:Searching § grep.
Other Wikipedia editor help
- {{Linksearch}} – Searches for external links matching a URL
- {{dabsearch|term}} – External tool to find page titles containing a
(term)in parentheses; useful for Wikipedia:disambiguation study - {{Help desk searches}} – Navbox with list of links to Google pages, specialized to search for example user pages, village pump, etc.; useful for Wikipedia:Help desk tasks
- {{Spamcheck}} – Generates a link to the Spamcheck tool on Tool forge
- {{Spamsearch}} – Searches user pages for common spams, e.g. "we service", "leading manufacturer", etc.
See also
- Help:Searching
- Category:Search templates
- MediaWiki:Extension:InputBox § General syntax - how to create your own search box using
<inputbox>...</inputbox>
Search templates | |
|---|---|
| General | |
| Titles | |
| Other | |
| External engines | |
| Search boxes | |
| Self reference |
- Template:Search link invokes Module:Navbox using Lua.
Usage
This template can be used to make a standard navigation box. It is intended for use within another template that standardises the title and contents of the box (see Template:ShipNavbox). This template SHOULD NOT be used directly within articles, as it creates a maintenance burden to do so whenever the contents of the box have to be updated.
The purpose of this template is to standardise the attributes of all navigation boxes, for example, their colours and other CSS attributes. The template is fairly simple, and could be extended to add other features in the future. Using this template allows changes to be implemented much quicker and easier than editing each template separately.
Syntax
{{navbox
|state = uncollapsed, collapsed, plain, autocollapse (default)
|name = mandatory - name of the template
|style = optional - style for the whole table
|title = mandatory - navbox header
|gtitleN = optional - title of N-th group of items
|styleN = optional - style for groupN; i.e. text-align
|groupN = mandatory - list of groups of items
|fstyle = optional - style for footer ; i.e. text-align
|footer = optional - navbox footer
}}
- Groups: Currently there is no technical limit to the maximum number of groups.
- Groups of items can be added as parameters: group1, group2, group3, ... up to groupN.
- Group title: Each group has its own title parameter: gtitle1, gtitle2, gtitle3, ... up to gtitleN. Note that the default width for the first column is 15%.
- Group style: Style may also be customised to each group in: style1, style2, style3, ... up to styleN.
- Note that neither the title nor the items have any wiki-links built into the template. As a result, users of the template are free to use wiki-links as they wish.
- Line breaks: Line-breaks (
<br />) are unnecessary, as text wrapping is done automatically by the template. This also includes links and text in gtitleN and groupN. - Bullets: Create unordered lists with lines beginning with *.
- Pipe links: Because of the nature of template syntax, it may be necessary to use Template:! (
{{!}}).
States
- Autocollapse: By default, the state of a navbox is "autocollapsed". This means that if the number of navboxes in a page exceeds the maximum allocation of the collapsible navboxes, then the remaining navboxes are collapsed automatically. For more information (or to change the setting), see MediaWiki:Common.js.
- Currently, the autocollapse allocation is 2 (see MediaWiki:Common.js). This means that if there are 3 navboxes in a page, the third and subsequent navboxes will be collapsed automatically.
- Uncollapsed: Forces the navbox to be displayed.
- All of the navboxes in this documentation are in the uncollapsed state.
- Collapsed: The reverse of uncollapsed. Forces the navbox to be hidden instead.
- Navboxes with a height of more than 300 pixels will also be collapsed automatically. For more information (or to change the setting), see MediaWiki:Common.js.
- Plain: Removes the "show/hide" link.
Sub-groups
- For larger navboxes, it may be necessary to include sub-groups within a particular group of items. It is also possible to collapsible navboxes within the parent navbox, see Collapsible sub-groups.
- To create sub-groups within
{{navbox}}, certain parameters are to be included:- The parent navbox group (i.e. group2 in the example below) requires the type parameter (gtype2 = Subgroup).
- The nested navbox (sub-group) requires the inclusion of the sub-group parameter (subgroup = yes). This enables the template to differentiate between the sub-group and the parent navbox.
{{navbox
|name =
|title =
|gtitle1 =
|group1 =
|gtitle2 =
|gtype2 = Subgroup (mandatory)
|group2 =
{{navbox
|subgroup = yes (mandatory)
|gtitle1 =
|group1 =
|gtitle2 =
|group2 =
}}
}}
Collapsible sub-groups
- For extremely long navboxes, it is recommended to use collapsible navboxes within the parent navbox. Further sub-groups can then be added to these collapsible navboxes.
- To create collapsible sub-groups within
{{navbox}}, these parameters need to be included:- The parent navbox is almost always uncollapsed (state=uncollapsed).
- The parent navbox group (i.e. group1 in the example below) requires the type parameter (gtype1 = Subgroup).
- The nested collapsible navbox requires the inclusion of the collapsible parameter (collapsible = yes). This enables the template to differentiate between the collapsible navbox and the parent navbox.
- The nested collapsible navbox is forcefully collapsed (state=collapsed).
{{navbox
|state = uncollapsed
|name =
|gtype1 = Subgroup
|group1 =
{{navbox
|collapsible = yes
|state = collapsed
|title =
|gtitle1 =
|group1 =
|gtitle2 =
|group2 =
}}
}}
Use of images
- The use of images in navboxes is permitted, but please resize the images to keep them small. Inventory-sized images (25-30 pixels) are recommended.
- Please use {{t|plink}} to create links with images. Use {{t|plink}} for any case where text is not desired after the link. It functions the same as {{t|plink}}, but it does not produce a wikilink in text. Use {{t|chatl}} to link chatheads. These templates create links for both the image and text (except for {{t|plink}}) using far less wikicode than the standard syntax.
Link and file share the same name
{{plink|Item}}
File name differs from the link
{{plink|Item|File}}
Link and file share the same name, but different text is desired to display
{{plink|Item|alt=Text}}
File name differs from the link and different text is desired to display
{{plink|Item|File|alt=Text}}
Categorising
Navboxes are very useful for transcluding categories onto a large number of pages that share both a trait and the navigation box. For example: Template:ShipNavbox transcludes Category:Ships onto every page that uses it.
There are 2 methods of categorising pages with navboxes:
The first way is with {{t|Ctg}}. This is the preferred method, and can be used in most cases. The rules and operations for the Category handler template are very simple; however, they are enough to produce the desired results on most pages.
Categorisation should only be used on a template for large-scale addition. It is unhelpful, for example, to use a rule that only applies to 1 page.
Examples
To see the following navboxes in action, see Template:Navbox.
Single line navbox with centered list
{{navbox
|name =
|title =
|style1 = text-align:center
|group1 =
}}
Navbox with standard footer
{{navbox
|name =
|title =
|gtitle1 =
|group1 =
|footer = Centered footer
}}
Navbox with styled footer
{{navbox
|name =
|title =
|gtitle1 =
|group1 =
|fstyle = text-align:right
|footer = Right-aligned footer
}}
Multiple line navbox
{{navbox
|name =
|title =
|gtitle1 = Group title 1
|group1 =
|gtitle2 = Group title 2
|group2 =
|gtitle3 = Group title 3
|group3 =
}}
Collapsed navbox
{{navbox
|state = collapsed
|name =
|title =
|style1 = text-align:center
|group1 =
}}
Plain navbox with Tnavbar
{{navbox
|state = plain
|name =
|title =
|style1 = text-align:center
|group1 =
}}
Plain navbox without Tnavbar
{{navbox
|state = plain
|title =
|style1 = text-align:center
|group1 =
}}
Complicated navbox
{{navbox
|state = uncollapsed
|name =
|title =
|gtitle1 = Level 1 Title 1
|group1 =
|gtitle2 = Level 1 Title 2
|group2 =
|gtitle3 = Level 1 Title 3
|group3 =
|gtitle4 = Level 1 Title 4
|group4 =
|gtitle5 = Level 1 Title 5
|gtype5 = Subgroup
|group5 =
{{navbox
|subgroup = Yes
|gtitle1 = Level 2 Title 1
|group1 =
|gtitle2 = Level 2 Title 2
|group2 =
|gtitle3 = Level 2 Title 3
|gtype3 = Subgroup
|group3 =
{{navbox
|subgroup = Yes
|gtitle1 = Level 3 Title 1
|group1 =
|gtitle2 = Level 3 Title 2
|group2 =
}}
|gtitle4 = Level 2 Title 4
|group4 =
}}
|gtitle6 = Level 1 Title 6
|group6 =
|gtitle7 = Level 1 Title 7
|group7 =
|fstyle =
|footer =
}}
Preventing unwanted documentation
The Navbox template's documentation is automatically transcluded under the navbox on any Template namespace page. It is not transcluded when used as a sub-group or collapsible sub-group template (subgroup= yes or collapsible=yes).
Should the documentation appear when it is unwanted, it can be hidden by setting the doc parameter doc=no on the template. In most cases, the doc parameter is NOT used and the parameter is removed completely.
- ↑ Some users' default search domain is all namespaces. In cases like the bare regex search, the search engine protects itself by limiting all regex searches. A bare regex that crawls through millions of pages can take over twenty seconds, and may even cost you an HTML timeout. During that time very few other regex searches are allowed. Always use a filter with regex.
- ↑ Searching for an equals sign requires using a regexp. As with any template, use {{=}} or
|1=to pass in an equals sign to any parameter, even the link label. - ↑ Advancing editors who begin to search for Wikipedia's other pages may at times set their default search domain (at Special:Search Advanced) to all. Setting search to all is the most likely scenario to "set and forget". Since that includes article space, the usual results are comparable.