Difference between revisions of "Template:Links to"

From blackwiki
Jump to navigation Jump to search
imported>Cpiral
(+URL-style1, expecting at least one more: URL-style2)
imported>Jdaloner
m ("{{plainlink" --> "{{plain link")
 
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
<onlyinclude><!--
 
<onlyinclude><!--
Document the code
 
-->{{#if: {{{2|}}} <!-- if a page name is given in a second parameter,  -->
 
|<!-- True, so output a normal search link
 
-->{{plainlink<!--
 
  -->|{{fullurl:Special:Search|search={{urlencode:<!--
 
  -->{{trim|{{{3|all}}}}}: <!--
 
  -->linksto: "{{trim|{{{2}}}}}" <!--
 
  -->insource:/"#<!-- Preprocess {{{1}}}
 
  Change " to \", / to \/ and a space character to [ _]
 
  -->{{#invoke:String|replace
 
      |source =
 
        {{#invoke:String|replace
 
          |source =
 
            {{#invoke:String|replace
 
              |source = {{trim | {{{1}}} }}
 
              |pattern = "
 
              |replace = "\""
 
            }}
 
          |pattern = /
 
          |replace = "\/"
 
        }}
 
      |pattern = %s
 
      |replace = "[ _]"
 
      |plain = false
 
    }}"/}}}} <!-- end of urlencode and fullurl arguments to url=
 
  -->|name=<!--  Now label it. Make the label echo the query itself.
 
  -->{{trim | {{{3|all}}} }}: <!--
 
  -->linksto: "{{trim | {{{2}}} }}" <!--
 
  -->insource:/"#<!-- Show label {{{1}}}
 
  Change " to \", / to \/ and a space character to [ _] as before.
 
  But also replace ] with its HTML entity &#93;
 
  so's not to confuse [link la]bel]
 
  -->{{#invoke:String|replace
 
      |source =
 
        {{#invoke:String|replace
 
          |source =
 
            {{#invoke:String|replace
 
              |source = {{trim | {{{1}}} }}
 
              |pattern = "
 
              |replace = "\""
 
            }}
 
          |pattern = /
 
          |replace = "\/"
 
        }}
 
      |pattern = ]
 
      |replace = &#93;
 
    }}"/ <!--
 
-->}}<!-- end of plainlinks: end of WIKILINKS
 
  
Now to output the search links for the other two possibilities:
+
By relying foundationally on search parameter "linksto",
1) there is a template called Section link, that makes wikitext
+
this version avoids namespace name variations in the wikitext,
links to a section, but does not have the # syntax.  Done.
+
and reduces the number of search links to two.
2) there are the external style links to sections?
+
 
 +
This version does not concern itself with URL-style links to sections.
 +
A later version will re-introduce that functionality, but only
 +
by way of a parameter that flags the need to produce up to twelve search links.
  
Special:Search/all:linksto {{{1}}} hastemplate:"section link" insource:"section link {{{1}}} {{{2}}}"
+
That version will rely on up to twelve insource searches to do this 2 X 2 X 3:
-->{{middot}}{{plainlink<!--
+
+ two kinds of *url: canonicalurl and fullurl
  -->|url={{fullurl:Special:Search|search={{urlencode:<!--
+
+ two kinds of atomic search terms: *url with and without space char
    -->{{trim|{{{3|all}}}}}: <!-- (saw aesthetic space)
+
+ up to three namespace names: WP and WT have two other aliases.
    -->linksto: "{{trim|{{{2}}}}}" <!-- (saw aesthetic space, + param space)
+
Logical OR to combine the possibilities is not an option for
    hastemplate is insurance, insource ignores greyspace characters
+
search parameter insource.
    -->hastemplate:"section link" <!--
 
    -->insource:"section link {{{2}}} {{{1}}}"<!--
 
    -->}}}}<!-- end fullurl and url
 
  -->|name=template usage: Section link}}<!--
 
-->{{middot}}<!--
 
-->{{plainlink<!--
 
  -->|url=<!--
 
      -->{{fullurl:Special:Search|search=<!--
 
      -->{{urlencode:<!--
 
      -->{{trim|{{{3|all}}}}}: <!-- (saw aesthetic space)
 
      -->insource:"{{SERVER}}{{localurl:{{FULLPAGENAME}}}}#{{{1}}}" <!-- (space)
 
      -->insource:/\#{{{1}}}/<!--
 
  -->}}}}<!-- end fullurl and urlencode
 
  -->|name=External<!--
 
-->}}
 
  
 +
Output one of the two possible contexts for the search links.
  
-->|
+
-->{{#if: {{{2|}}} <!-- Was a page name also given?  -->
<!-- else False, so output a pink box (a {|table|}) search link-->
+
|<!-- True, so don't output the pink box stuff.
 +
Instead output a line starting with "fullpagename#Section: "
 +
-->{{trim | {{{2|{{FULLPAGENAME}}}}} }}#{{ trim | {{{1}}} }}:{{spaces|2}}<!--
 +
-->|<!-- else False, so output a pink box (a {|table|}) search link-->
 
{{(!}} border="1" cellpadding="6" cellspacing="0" style="background:pink;width:61%"
 
{{(!}} border="1" cellpadding="6" cellspacing="0" style="background:pink;width:61%"
{{!}}<!-- this translate to a pipe | character, so's not to confuse #if's pipe chars -->  
+
{{!}}<!-- this translates to a pipe | character, so's not to confuse #if's pipe chars -->  
Temporary search links to find what links to ''{{{1|section}}}'':
+
Search links to find links to ''{{{1|section}}}'':<br/>
 +
}}<!-- end #if
 +
 
 +
Output the search links (either context):  #Links and §Links.
 +
 
 +
-->{{plain link<!--
 +
  -->|{{fullurl:Special:Search|search={{urlencode:<!--
 +
    -->{{ trim | {{{3|all}}} }}: <!--
 +
    -->linksto: "{{ trim | {{{2|{{FULLPAGENAME}}}}} }}" <!-- target the entire page
 +
    (trims any spaces on outer boundary of insource arg)
 +
    Proof: both linksto and matches "#section". 
 +
    Matching "#section" requires a regexp that permits metachars in the section name, and equates _ to space char.
 +
    -->insource: "{{{2|{{FULLPAGENAME}}}}} {{{1}}}" <!-- target the desired term sequence
 +
    -->insource:/"<!-- target the redirect symbol and section name
 +
    Preprocess {{{1}}}, changing " to \", / to \/ and a space character to [ _]
 +
    -->{{#invoke:String|replace
 +
      |source =
 +
        {{#invoke:String|replace
 +
          |source =
 +
            {{#invoke:String|replace
 +
              |source = {{trim | {{{2|{{FULLPAGENAME}}}}}#{{{1}}} }}
 +
              |pattern = "
 +
              |replace = "\""
 +
            }}
 +
          |pattern = /
 +
          |replace = "\/"
 +
        }}
 +
      |pattern = %s
 +
      |replace = "[ _]"
 +
      |plain = false
 +
    }}"/}}}} <!-- end of urlencode and fullurl
 +
  -->|name=#Links<!-- Make the label fullpagename#Section : WL . TL . EL
 +
-->}}<!-- end of plain links: #Links
 +
 
 +
Now for:          §Links
 +
-->{{middot}}{{plain link<!--
 +
  -->|{{fullurl:Special:Search|search={{urlencode:<!--
 +
    -->{{ trim | {{{3|all}}} }}: <!--
 +
 
 +
    -->linksto: "{{ trim | {{{2|{{FULLPAGENAME}}}}} }}" <!--
 +
    Proof: both linksto fullpagename, and matches the given section _inside a template Section link (alias "slink") call_ .
 +
    The [Ss](ection )?link finds "section link" or its alias "slink", and in a case insensitive fashion.
 +
    The [^}]* construct searches inside the template call.
 +
    This catches both {{section link || section name }} and {{section link| fullpagename | section name}}.
 +
    Alternatively, using ({{{2}}} *\| *)? could be used to ensure fewer false positives if {{slink}} ever gets high use.
 +
    Acceptably, it misses when other kinds of braces are inside: {{section link | {{markup}} | section name}}.
 +
    -->insource:/\{\{ *[Ss](ection )?link *[^}]*"<!-- QUOTE the regexp " or / chars
 +
    quotation mark starts escaping any metacharacters in section name
 +
      -->{{#invoke:String|replace
 +
        |source =
 +
          {{#invoke:String|replace
 +
            |source =
 +
              {{#invoke:String|replace
 +
                <!--|source = {{trim | ({{{2|{{FULLPAGENAME}}}}} *\{{!}} *)?{{{1}}} }}<!-- overkill? -->
 +
                |source = {{trim | {{{1}}} }}
 +
                |pattern = "
 +
                |replace = "\""
 +
              }}
 +
            |pattern = /
 +
            |replace = "\/"
 +
          }}
 +
        |pattern = %s
 +
        |replace = "[ _]"
 +
        |plain = false
 +
      }}"/ <!--
 +
    -->}}}}<!-- end fullurl and url
 +
  -->|name=&sect;Links<!--
 +
-->}}<!-- end plain links
  
{{plainlink|{{fullurl:Special:Search|search={{urlencode:<!--
+
Output a newline
-->{{trim | {{{3|all}}} }}: <!--
+
-->
-->linksto: "{{FULLPAGENAME}}" insource:/"#<!-- Preprocess {{{1}}}
+
{{#if: {{{2|}}} |<!-- True, so everything is done.  Do nothing.
  Change " to \", / to \/ and a space character to [ _]
+
-->|<!-- False, so  defaulting to pink table, output closing table markup-->
  -->{{#invoke:String|replace
+
{{!)}}<!-- mark end of the table while inside a template parser function-->
      |source =
 
        {{#invoke:String|replace
 
          |source =
 
            {{#invoke:String|replace
 
              |source = {{trim | {{{1}}} }}
 
              |pattern = "
 
              |replace = "\""
 
            }}
 
          |pattern = /
 
          |replace = "\/"
 
        }}
 
      |pattern = %s
 
      |replace = "[ _]"
 
      |plain = false
 
    }}"/}}}}<!-- Now for plainlinks label
 
  -->|name=Wikilink<!--
 
-->}}<!-- plainlinks end, WIKILINKS end.
 
(end, and with no space after its last arg)
 
Now for quick fullpagename-defaulted search link to TEMPLATES,
 
template Section, possibly others later, link that link to given section
 
-->{{middot}}{{plainlink<!--
 
  -->|url={{fullurl:Special:Search|search={{urlencode:<!--
 
  -->{{trim|{{{3|all}}}}}: <!-- (saw aesthetic space)
 
  -->linksto: "{{FULLPAGENAME}}" <!-- (saw aesthetic space and parameter space)
 
  hastemplate is insurance, insource ignores greyspace characters
 
  -->hastemplate:"section link" <!--
 
  -->insource:"section link {{FULLPAGENAME}} {{{1}}}"<!--
 
  -->}}}}<!-- end of fullurl and urlencode
 
  -->|name=Template}}<!--
 
-->{{middot}}<!--
 
-->{{plainlink<!--
 
  -->|url=<!--
 
      -->{{fullurl:Special:Search|search=<!--
 
      -->{{urlencode:<!--
 
      -->{{trim|{{{3|all}}}}}: <!-- (saw aesthetic space)
 
      -->insource:"{{SERVER}}{{localurl:{{FULLPAGENAME}}}}#{{{1}}}" <!-- (space)
 
      -->insource:/\#{{{1}}}/<!--
 
  -->}}}}<!-- end fullurl and urlencode
 
  -->|name=External<!--
 
-->}}
 
{{!)}}<!--  mark ends the table -->
 
 
}}<!-- End of #if --></onlyinclude><noinclude>
 
}}<!-- End of #if --></onlyinclude><noinclude>
 
{{Documentation}}
 
{{Documentation}}

Latest revision as of 19:09, 18 April 2018

Search links to find links to section:
Template:Plain link · Template:Plain link

Template documentation[view] [edit] [history] [purge]

{{Links to}} lists all pages that link to a section, and shows a snippet from each page, with the link highlighted. It uses the linksto search parameter to find the pages, and from that a regexp search to find the section's incoming links. (Note that the input to {{links to}} is a section, while the input to the search parameter linksto is a fullpagename.)

Purpose

Use {{links to}} to help decide about changing or removing section headings, {{anchor}}s, or "span id=" (HTML) tags.

  • Manage anchors. Assess and delete excess anchors. Move and replace anchors.
  • Manage section headings. Delete section headings. Rename section headings.

This template lists all the wikilinks to a section that are found in the wikitext as:

  1. [[ fullpagename#section ]]
  2. {{ section link | section}}
  3. {{ slink|section}}

These are all the usual-style wikilinks, and the search links produced by this template are definitive concerning the sections of most pages.[1]

While editing a section, you decide to rename its heading. Or you want to restructure an article. But it might break a link. And you're not sure about adding {{anchors}}.

  • "What links here" does not report links by section name.
  • This template, {{links to}}, reports sections but does not report redirects.
  • "Show redirects only" does report redirects to sections names. (It's on the What links here page).

Using these three tools, the incoming wikilinks to a section can be known.[1]

Usage

Work from the edit page — going from it and back to it — while finding all links and redirects.[2] When entering a {{links to|section}} copy any section name exactly as it appears in the wikitext:

  • == inside the heading markup == {{links to|section heading}} or
  • {{anchor | inside the anchor parameter }} {{links to|anchor}} or
  • <span id="inside the double quotes">...</span> {{links to|span id}}

The spacing outside the name is not important, but the markup and spacing inside the name is important.[3] The most common mistake is wrong capitalization.

Should you change or removed a section name, then for each incoming wikilink or redirect it had, you must edit that page, even if it is a user page. Use an edit summary like "fixing changed section name".

Links

Links. Taken altogether, the search links generated by this template will list all wikilinks to a section name of a page name.

  • #Links · Finds #section used in wikilinks (and URL-style links).
  • §Links · Finds {{ Section link | fullpagename | section }}. (uncommon)

The results do not overlap and are guaranteed links to that section.

Redirects

Redirects. Use the "Tool" What links here. (Its on every page and every edit page.) Once there, immediately activate the "external tool" Show redirects only. If your section name is shown, your redirects are reported. Just find the wikilinks to them using What links here, and you're done. If your section is not shown in the report, no redirect at all links to your section.

These normally report zero results (or fewer than ten).

Basic

{{ links to | section }}

Links to creates a pink box with search links inside: one to find wikilinks, one to find templates ({{Section link}}).

  1. On an edit page enter a {{links to}}.
  2. Preview the edit. A pink box appears with search links inside.
  3. Visit each of them while learning how to proceed.[4]
  4. Go back to your edit page.
  5. Visit the redirects report.
  6. Go back to your edit page and proceed.

Advanced

{{ links to | section | fullpagename }}
{{ links to | section | fullpagename | namespace }}

Links to outputs a single line starting with the fullpagename, and followed by the search links. This style is fit for collaboration or storage for wikiprojects.

Just add the fullpagename of the page of interest in parameter two. (The {{FULLPAGENAME}}, before {{DISPLAYTITLE}} or the like may have applied.)[5]

To limit search results to a namespace instead of all namespaces, use parameter three. This is necessary for a highly linked-to page like the Manual of Style (over a million links to it). This is useful to try when a search takes around twenty seconds and returns with zero results. (Search silently fails, with no indication of an HTML timeout.)

Parameters

Template:More

Spacing does not matter around the input.

{{ links to | 1st | 2nd | 3rd }}

1stTemplate:Space Section. Case sensitive. Matches wikitext character-wise.

2ndTemplate:Space Fullpagename. Case sensitive. First letter capitalized.[5]

3rdTemplate:Space namespace. Defaults to all. Accepts aliases.

Examples

Inside an edit session of this section
What you type What you get Description
{{ links to | Examples }}

Search links to find links to Examples :
Template:Plain link · Template:Plain link

Find all links to this section.
{{ links to | Usage }}

Search links to find links to Usage :
Template:Plain link · Template:Plain link

Find all links to this page's Usage section.
What you type: What you get:
{{ links to | Linux | Operating system }} Operating system#Linux:  Template:Plain link · Template:Plain link
{{ links to | Registers | Javanese language }} Javanese language#Registers:  Template:Plain link · Template:Plain link
{{ links to | Different functions of "to be" | E-prime }} E-prime#Different functions of "to be":  Template:Plain link · Template:Plain link
{{ links to | Projects | Mediawiki | talk }} Mediawiki#Projects:  Template:Plain link · Template:Plain link
{{ links to | Projects | Mediawiki | user talk }} Mediawiki#Projects:  Template:Plain link · Template:Plain link

Reordering. If you used natural instead of most-requested order, you can number them.
What you type:
{{ links to | Wikipedia:Manual of Style | Section headings }}
{{ links to | WP | Wikipedia:Manual of Style | Section management }}

{{ links to | 2= Wikipedia:Manual of Style | 1=Section headings }}
{{ links to | 3= WP | 2= Wikipedia:Manual of Style | 1= Section management }}

What you get:
Wikipedia:Manual of Style#Section headings:  Template:Plain link · Template:Plain link
Wikipedia:Manual of Style#Block quotations:  Template:Plain link · Template:Plain link

See also

Template:Search templates

Notes and references

  1. 1.0 1.1 There may exist additional wikilinks (internal links) to a given section. These are not currently listed:
    1. Web links made with URL-style syntax.
    2. wikilinks or {{Section link}}'s placed on a page by a transclusion.
  2. It is safe to navigate away from an edit page, for example to test a wikilink in the preview. It is safe also to activate a search link, for the same reasons. (To open a new tab or window instead, press Ctrl or ⇧ Shift while following a link.)
  3. The actual query, seen on the search results page, for sections with space characters in them, replaces every space with a "[ _]". This mirrors the behavior of the wikilinks.
  4. To get an edit tag for each search result, add this to your custom javaScript:
    $( function() {
    	'use strict';
    	if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ) {
    		$( '.mw-search-result-heading a' ).each( function() {
    			$( this ).after( '<span class="searchedit">[<a href="' + $( this ).attr( 'href' ) + '?action=edit">edit</a>]</span>' );
    		} );
    	}
    } );
    

    Until it is an official user preference, the code may be susceptible to malcontents.

  5. 5.0 5.1 It's the canonical name, not the redirect. It's the title line exactly, but the title line should begin with a capital letter. If there are any questionable aspects to the title's appearance, go to that page and render {{FULLPAGENAME}} in a temporary preview.