Extension:LandingCheck

From MediaWiki.org
Jump to: navigation, search
MediaWiki extensions manual
Crystal Clear action run.png
LandingCheck

Release status: stable

Implementation Special page
Description Send users to localized landing pages with fallback options
Author(s) Ryan Kaldari
Latest version 1.2
License GPL
Download
Parameters
  • landing_page
  • language
  • country
  • utm_source
  • utm_medium
  • utm_campaign

Translate the LandingCheck extension if it is available at translatewiki.net

Check usage and version matrix; code metrics

LandingCheck makes using localized and geotargeted landing pages easy. It was created as a replacement for the GeoLite extension.

When called with a landing page name and a set of user-specific parameters, the extension checks to see if a version of the landing page exists for the user's language and country. If not, it looks for a version localized for the user's language. If that doesn't exist either, it looks for the English version. If any of those exist, it then redirects the user.

Installation[edit | edit source]

  1. Download the latest snapshot and extract it to your extensions directory.
  2. Add
    require_once( "$IP/extensions/LandingCheck/LandingCheck.php" );
    to LocalSettings.php.
  3. The extension should now be active.

How it works[edit | edit source]

GeoIP lookup: Normally LandingCheck does not perform a GeoIP lookup, but depends on the referring page to supply the user's country. If the country parameter is not supplied, the extension checks to see if the geoip_country_code_by_name() function exists (from the php5-geoip package), and if so, performs its own GeoIP lookup. (As of 2010, all Wikimedia page views perform a GeoIP lookup against http://geoiplookup.wikimedia.org/ and record the user's country in the global Javascript variable Geo.country.)

Language: LandingCheck looks for whatever landing pages correspond to the user's wgUserLanguage variable. If none exist, it tries to find landing pages in the corresponding fallback language. So, for example, if JimmyAppeal/pt-br doesn't exist, it looks for JimmyAppeal/pt, and then JimmyAppeal/en (English is the final fallback for all languages).

Usage[edit | edit source]

Set up landing pages[edit | edit source]

First, create a set of localized landing pages using the following naming scheme: <pagename>/<language>/<country>. For a fundraising campaign, you might set up the following pages:

  • JimmyAppeal/en - landing page localized to English
    • JimmyAppeal/en/US - landing page localized to English and customized for users in the United States
    • JimmyAppeal/en/GB - landing page localized to English and customized for users in the United Kindom
    • JimmyAppeal/en/FR - landing page localized to English and customized for users in France
  • JimmyAppeal/fr - landing page localized to French
    • JimmyAppeal/fr/FR - landing page localized to French and customized for users in France
    • JimmyAppeal/fr/CA - landing page localized to French and customized for users in Canada

Create link[edit | edit source]

Next, set up a link that uses Javascript to construct the LandingCheck URL with user-specific query string parameters.

jQuery example[edit | edit source]

<script type="text/javascript">
var cn_rewrite_url = function() {
  var baseUrl = 'http://wikimediafoundation.org/wiki/Special:LandingCheck';
  var queryString = jQuery.param({'landing_page':'JimmyAppeal', 'language':wgUserLanguage, 'country':Geo.country});
  jQuery("a.variable_lp").attr("href", baseUrl + '?' + queryString);
}
jQuery(document).ready(cn_rewrite_url);
</script>
<a class="variable_lp" href="">Read an Appeal by Jimmy Wales</a>

jQuery example with tracking[edit | edit source]

<script type="text/javascript">
var cn_rewrite_url = function() {
  var baseUrl = 'http://wikimediafoundation.org/wiki/Special:LandingCheck';
  var queryString = jQuery.param({'landing_page':'JimmyAppeal', 'language':wgUserLanguage, 'country':Geo.country, 'utm_source':'banner22', 'utm_medium':'sitenotice', 'utm_campaign':'2010fundraiser'});
  jQuery("a.variable_lp").attr("href", baseUrl + '?' + queryString);
}
jQuery(document).ready(cn_rewrite_url);
</script>
<a class="variable_lp" href="">Read an Appeal by Jimmy Wales</a>

non-jQuery example[edit | edit source]

<a href="#" onclick="window.location.href='http://wikimediafoundation.org/wiki/Special:LandingCheck?landing_page=JimmyAppeal&language='+wgUserLanguage+'&country='+Geo.country">Read an Appeal by Jimmy Wales</a>

Add more landing pages[edit | edit source]

As additional localized and geotargeted landing pages are created, users will automatically start being directed to them. Make sure that any new landing pages added after your link has gone live are ready to use immediately. If you need to build new localized or geotargeted landing pages gradually, build them under different names and then move them into place once they are complete.

Overrides for level-1 chapters[edit | edit source]

During the 2010 fundraiser the Wikimedia Foundation was required to send all traffic from chapter countries to chapter-specific landing pages even if they did not support the user's language. To facilitate this, an override mechanism was built into LandingCheck. Level 1 chapters were instructed to build their landing pages using the following naming scheme: <pagename>/<country>/language>. For example:

The country codes of the level 1 chapters were then added to the $wgPriorityCountries global variable.