User:Ilmari Karonen/canonical

From NetHackWiki
< User:Ilmari Karonen
Revision as of 22:17, 27 November 2014 by Ilmari Karonen (talk | contribs) (rewrite for MediaWiki 1.24)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Quick and dirty MediaWiki hook to add rel=canonical links to all normal page views:

$wgHooks['ArticleViewHeader'][] = 'addCanonicalLinks';
function addCanonicalLinks ( &$article ) {
	if ( $article->getOldID() ) return true;  // permalink to old version or diff
	if ( $article->getPage()->getID() == 0 ) return true;  // redlink, shared image, etc.

	$context = $article->getContext();
	if ( $context->getRequest()->getVal( 'redirect' ) == 'no' ) return true;  // redirect

	// XXX: MediaWiki core only calls setCanonicalUrl() for shared images and redirects,
	// and for the latter case it sets the exact same canonical URL as we set here.
	$context->getOutput()->setCanonicalUrl( $article->getTitle()->getLocalURL() );
	return true;
}