[Mediawiki-l] Link list on page

Rowan Collins rowan.collins at gmail.com
Sun Feb 13 19:59:03 UTC 2005


On Sun, 13 Feb 2005 18:27:39 +0000, Ulf Clausen <u.clausen at gmx.net> wrote:
> >Maybe you should have a look into SpecialPage.php and
> >SpecialWhatlinkshere.php
> >for inspiration. I think (!) it's basically creating a SpecialPage object
> >and execute() it.
> >untested:
> >include_once("includes/SpecialPage.php");
> >$sp = new SpecialPage("Whatlinkshere");
> >$sp->execute();

A bit of testing suggests that this is essentially usable, except that
the execute() method takes the page title as a parameter - so, in my
test hacking of Parser.php, I found I could use
$sp->execute("$this->mTitle->getText()"); Wherever you end up adding
it, you'll probably be able to get at a "Title" object for the page
being displayed, and call it's getText() method in this way.

However, I notice that this adds the text *as soon as it's called*
rather than returning a block of HTML or whatever (which means you've
got to find the right place to put it), and that it has a link like "<
[[foo]]", which doesn't make sense if you're including it on-page. So
you may want to look at SpecialWhatlinkshere and make a modified
version that better suits.
 
> Excuse my lack of knowledge, but how and where do I include this code into my pages so it gets executed?

That's a surprisingly awkward question. I guess somewhere in the skin
hierarchy, really - which can be a fairly confusing maze...

On 1.3, I would suggest that if you can get a function to return a
block of text with the backlinks in it, you could add somewhere in
includes/SkinPHPTal.php (in OutputPage.php) something like:
$tpl->set( "backlinks", function_that_generates_backlinks() );
and then in xhtml_slim.pt (e.g. just after "{$bodytext}"):
{$backlinks} 

1.4 is basically the same, but it doesn't use the PHPTal template by
default, but a kind of "pre-compiled" version, so the first change is
in includes/SkinTemplate.php, and the second, in skins/MonoBook.php,
should be more like:
<?php $this->html('backlinks') ?>


> >> And while I am writing: Is there a way of telling mediawiki to open
> >>external links in a new window? I have tried everything to persuade the
> >>parser to accept the HTML code "target=_blank", but failed.

You might want to look at recent threads on this topic, such as:
http://mail.wikimedia.org/pipermail/mediawiki-l/2005-February/thread.html#3406
http://mail.wikimedia.org/pipermail/mediawiki-l/2005-January/thread.html#2919

I know most of what's been written amounts to "don't do it", but maybe
those of you who really really feel like this is a good idea could get
together and work something out...

-- 
Rowan Collins BSc
[IMSoP]



More information about the MediaWiki-l mailing list