Page MenuHomePhabricator

"what links here" should list the template, not the pages that use it
Open, MediumPublic

Description

When a template directly introduces a link to a target page, the "what links here" list for the target page should list the template as a link to the target, but it should not list a page that uses the template as links to the target (unless the using page also has direct links to the target.)

Alternative: Treat links generated by a template similarly to links via a redirect: that is, list the template, and then list all pages linked via the template indented under the template link.

Justification: "what links here" is used by people who move a page to find and repair all of the links to the page. We also use "what links here" to gauge the relative importance of several pages when determining whether a particular page should retain the "main title" when disambiguation is needed. A third major use of the "what links here" is to generate the list of "most needed articles." In all three cases, the resultes rae severely distorted when th epage is linked from a template. For example, a completely obscure Football coach named Clyde Snerd suddenly has 50 links when he is one of 50 football coaches listed in a template of "coaches of the Lower Smedley football club." If I move his page to "Clyde Snerd (football coach)" I must then check all 50 pages to see if any of them have non-template references.Changiong e template first does not help, because the resulting updatea process (apparently) runs in the background and can take quite a long time. The result on the "most wanted articles" list is dramatic: all of the topmost "most wanted" articles are due to inclusions in templates.

Current workarounds

  1. T14396#3246135 Special:Search version
  2. T14396#3922884 Javascript version
  3. T14396#4462256 Template version of #1

See Also:


Proposed in Community-Wishlist-Survey-2016. Received 37 support votes, and ranked 41 out of 265 proposals. View full proposal with discussion and votes here.

Details

Reference
bz12396

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
bzimport added a subscriber: Unknown Object (MLST).

mike.lifeguard+bugs wrote:

I don't think this is possible with the current schema which tracks links between pages. Furthermore, I don't see the utility in changing things.

  • Bug 21266 has been marked as a duplicate of this bug. ***

hardy wrote:

Oh, great. The fact that there is one person somewhere who FAILS to see the utility is now considered a cogent point.

When I move an article and then click on "what links here", I sometimes see a
couple of hundred links nearly all of which result from pages using a template.
After editing the template to link to the new title, I want to see the
(usually few) links from articles themselves, rather than those resulting from
a template. Currently the only way to do this is to wait 24 hours so that when
you view "what links here", the template links will no longer link to the old
title. Currently one can click on "hide redirects"; there should be a similar
thing to hide links resulting from articles' use of templates.

I reported the above as a bug, and it got marked as a duplicate of this even though it proposes something DIFFERENT.

It's a bit different, but the problem is the same: currently templates are expanded and only after that links are parsed and replaced. To fix this, we should change parsing older to parse links in the same time as we expand templates and change the pagelinks database table to know if the link is directly inserted in the page or comes through a template. Also a problem would be parameter substitution: {{Some template|link=[[Some page]]}} or {{Link|page=Some page}} where Template:Link contains something like "[[{{{page}}}]]", for those two cases, should the link be considered as comming from the page, or the template? (first example might be easier than the second one)

  • Bug 28855 has been marked as a duplicate of this bug. ***

ekonomiska wrote:

I posted that duplicate bug, and I agree that it's the same problem as already given here.

I don't know which of the proposed solutions should be used to fix this bug, but it desperately needs to be fixed.

rd232 wrote:

@Alexandre Emsenhuber:


Also a problem wouldbe parameter substitution: {{Some template|link=[[Some page]]}} or {{Link|page=Some page}} where Template:Link contains something like
"[[{{{page}}}]]", for those two cases, should the link be considered as comming
from the page, or the template? (first example might be easier than the second

one)

Those cases should clearly be considered as coming from the page calling Template:Link, since "some page" is linking data stored in the calling page, not the template.

(In reply to comment #8)

@Alexandre Emsenhuber:


Also a problem wouldbe parameter substitution: {{Some template|link=[[Some
page]]}} or {{Link|page=Some page}} where Template:Link contains something like
"[[{{{page}}}]]", for those two cases, should the link be considered as comming
from the page, or the template? (first example might be easier than the second

one)

Those cases should clearly be considered as coming from the page calling
Template:Link, since "some page" is linking data stored in the calling page,
not the template.

Yeah, that's easy to say for a human. But a piece of software is likely not going to able to distiguish that.

for example:

Template:Foo contains:

This is a [[department]] [[portal]].

{{#ifeq: {{{type|normal}}} | special | Welcome to the [[special]]
department. | Welcome to the department page of the [[normal people]].}}

Department:Special contains:

{{Foo|type=special}}
Blablablabla.
[[Category:Departments|Special]]

Does the link to [[special]] come from the template or from the article ?
The answer to this doesn't matter and likely not obvious, but untill the parser has been rewritten and world piece has been made I dont think such advanced extractions can be made from a simple page with templates.

That doesn't mean we can't do any extractions at all. A simple way to approach this bug's goal would be to compare links generated from {{Foo}} to whatever the template call was (eg. {{Foo}}), and whatever was added consider that caused by the article, and the rest to be coming from the template and thus further down the tree on WhatLinksHere.

(things to keep in mind though are constructions with <includeonly> and the like, and comparisons to {{PAGENAME}} etc.)

rd232 wrote:

@Krinkle

I'm not sure it has to be that complicated. Any time a template wraps a parameter in [[ ]], it's link data the calling page is responsible for. Otherwise, it's link data stored in the template. Though comparing links from the template and the template call, as you suggest, may be helpful.

I'm sure there are hard cases which may be generated what might be considered categorisation errors, but this system doesn't have to be perfect in correctly including/excluding templates, as long it categorises links one way or the other. (I'm imagining there would be a switch so you could choose to look at page links, templates links, or both together.)

  • Bug 17728 has been marked as a duplicate of this bug. ***
  • Bug 21266 has been marked as a duplicate of this bug. ***

Or like Bug 3241 - Transclusion should produce tree-like results in "What links here"

This task was proposed in the Community-Wishlist-Survey-2016 and in its current state needs owner. Wikimedia is participating in Google Summer of Code 2017 and Outreachy Round 14. To the subscribers -- would this task or a portion of it be a good fit for either of these programs? If so, would you be willing to help mentor this project? Remember, each outreach project requires a minimum of one primary mentor, and co-mentor.

I made this comment at T5241#3246126, because I'm not entirely sure which is the interesting ticket: I think Special:Search is sufficiently powerful at this time to take care of curating "manual" links--reference this search using linksto and insource to isolate links to the article on Issik Qaghan.

debt subscribed.

We won't be able to get to this any time soon, based on our quarterly and annual goals; moving to later on our board.

I think this will require digging into the parser. What is stored in mysql, and elasticsearch, is based on what the wikitext parser says was used in the page. Currently the wikitext parser says that page was linked so that's what gets stored in mysql and indexed into elasticsearch.

In some cases it could be desirable to link back, so if this is going to be implemented it should be in a manner that is editor controlled as to the link back target.

Ammarpad subscribed.

Oops, I wanted to merge the newer one here T217906.

+1 to implementing this functionality.

Example d'jour, https://en.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Vinmont_Veteran_Park&hidetrans=1 shows me a ton of inbound links, all of which are because my page is listed in https://en.wikipedia.org/wiki/Template:Protected_areas_of_New_York_City, and that's transcluded all over the place. What I really want to see is the pages that actually link directly here, not because of a transcluded navigation template.

Izno removed a subscriber: bzimport.

Putting a +1 here because someone on zh.wp telegram group asked for a way to not list navbox-introduced links. I agree that these links don't make sense to be counted and add unnecessary noise to "most wanted" and similar stats.

I would just like to mention that being able to hide navbox links or just see the template would be very useful for us mobile editors who can't see navboxes.

Like, please. It makes 'What links here' basically useless for any article linked in a template.

QuicoleJR raised the priority of this task from Low to Medium.Tue, Apr 2, 1:27 PM

Raising the priority to medium per myself and Zanahary. This issue heavily screws over mobile editors like myself who don't get to use the infobox. Please fix this!