Extension:MobileFrontend

The MobileFrontend extension:


 * allows sysadmins to provide a different skin and separate mobile site for their mobile traffic.
 * provides various content transformations to make your content more friendly - notably section collapsing and content re-arrangment and removal.
 * provides replacement special pages for MediaWiki pages that are not mobile friendly - Special:History, Special:Contributions, Special:Watchlist, Special:Preferences, Special:MobileDiff.
 * It provides the special pages Special:Nearby, Special:MobileLanguages, Special:MobileMenu and Special:Uploads

This page is designed for end users who want to install it on their development instance. If you are keen to help us build it and improve it we encourage you to get involved.

Prerequisites

 * Although MediaWiki doesn't require it, PHP must have mbstring support for this extension to work.
 * Release for MediaWiki ≤ 1.24 of MobileFrontend requires the extension Mantle.

Setup Nearby
MobileFrontend provides the Special:Nearby page with a little configuration. To get this to work a few optional steps are required:


 * Due to browser security you will need to be running a secure site over SSL - it is not possible to request a users location over http

Alternatively you can use an alien MediaWiki instance for Nearby with the following 2 lines in your LocalSettings. The nearby endpoint will be used to find related content to a given location.
 * Install GeoData
 * Run update.php
 * in LocalSettings.php add $wgMFNearby = true;
 * Add data to your articles to one or more pages   see the documentation for GeoData for syntax details

Setup a skin
MobileFrontend provides you with a mobile formatted website to go alongside your existing desktop website. You can skin it however you want. The following skins are compatible with MobileFrontend:
 * Skin:Timeless
 * Skin:Minerva
 * Skin:Vector which operates in an experimental responsive mode

Configuration settings
See Extension:MobileFrontend/Configuration

Additional tweaks
Get the most out of MobileFrontend by adding these other optional dependencies:


 * Extension:Geodata - get Special:Nearby and geotag your articles
 * Extension:PageImages - adds images to search and nearby results
 * Extension:VisualEditor - add Visual editing to your mobile experience.

CSS styling
To apply CSS to your mobile theme, edit MediaWiki:Mobile.css, the counterpart of MediaWiki:Common.css.

More information
If you would like to test the mobile extension on a desktop browser or your device doesn't render the mobile version, you can append the following key-value pair to the query string:  e.g., https://en.wikipedia.org/wiki/Chuck_Schuldiner?useformat=mobile

If you would like to view a page in the beta without enabling it across the entire site you can append to the query string of any page

If you would like to force your wiki to always display in mobile view, add the following to your LocalSettings.php:

Extended action=parse
accepts extra parameters:
 * : Return rendered page HTML in a mobile format . Prior to MediaWiki 1.23, you could specify  to output HTML for modern phones or   to output WML for dumb phones (see mailing list messagefor details).
 * : Disable images in mobile output.
 * : Apply mobile main page transformations.

Example:

action=mobileview
Delivers content optimized for mobile devices for use by mobile apps and dynamic section views. Almost like a restricted-functionality, but more flexible and returns separate sections that are always obtained from full-page parse.

Parameters:
 * : Title of page to process.
 * : Pipe-separated list of section numbers for which to return text or  for all sections.
 * : Whether redirects should be followed,  (default) or  . This parameter is intentionally made similar to the one to index.php.
 * : Which information to get:
 * : HTML of selected section(s)
 * : Information about all sections on page
 * : Normalized page title, will be returned only if it differs from the specified one.
 * : What information about sections to get: pipe-separated list of value types defined by parser. It's the same as in action=parse: toclevel, level, line, number, index, fromtitle, anchor. "byteoffset" has been excluded as it makes no sense for this action.
 * : Return HTML without images.
 * : Return HTML without headings.

Returned section information also includes the  for every section - its zero-based number; and for sections that contains references added by Cite, there's also   data member.

Examples:

Same request for XML:

[//www.mediawiki.org/w/api.php?action=mobileview&page=Extension:MobileFrontend/Example&sections=0&prop=text|sections&format=xmlfm api.php?action=mobileview&page=Extension:MobileFrontend/Example&sections=0&prop=text|sections&format=xml]

prop=extracts
 Migrated to  

Testing with articles on a foreign wiki (live data)
MobileFrontend can now be configured locally to render articles from other MediaWiki instances. This can help you debug problems locally instead of importing articles which may have dependencies on various templates and Wikibase identifiers from production to your local instance. This is not recommended for production usage.

The code below will turn your local MediaWiki mobile site into a Wikivoyage viewer: This is particularly useful for testing different mobile skins using the wgMFDefaultSkinClass config option.

WMF sites
On Wikimedia Foundation-run sites, we use Varnish caching servers to check the user agent of your device.

If your user agent appears to be coming from a mobile device, the Varnish servers will set an appropriate 'X-Device' header for your request, and you will be redirected to the MobileFrontend version of an article.

Alternatively, you can click 'Mobile view' in the footer of an article or append "useformat=mobile" to the query string to view an article in the mobile view.

Example:

Varnish server vcl config for X-Device

If you are viewing the mobile version of article but wish to see the desktop-version of that article, you can click 'View this article on regular ' to switch back.

If you want to permanently disable the mobile view for your web browser, you can click 'Permanently disable mobile site', which will set a cookie instructing the WMF servers to always display the desktop version of the site.

Non-WMF sites
For non-WMF sites, you can either set up your configuration to mimic how things are done at the WMF (doing device detection at the proxy layer and setting specific X-Device headers), or you can simply use "?useformat=mobile" to switch an article to use the mobile view.

FAQ
The following questions frequently appear on our talk page. Please check this list before posting about them on the talk page or use the existing talk topic, if available, to receive clarifications.

Q: How do I customise the main menu of the Minerva skin?
A: This is tracked in phabricator but you can see Topic:Tiggc18fvd3stmsf has an interim solution.

Q: How do I add HTML to the Minerva skin, for example to add ads or additional script tags?'
A: You can do this by editing the template file for the skin (currently include/skins/minerva.mustache). See this discussion for details.

Q: The extension I am using doesn't seem to work on MobileFrontend. Why?
A: It's likely the extension is old and needs to add compatibility to MobileFrontend. Please contact the developer of the extension and point them to ResourceLoader/Writing a MobileFrontend friendly ResourceLoader module. Please do not post to the talk page, as in this case it would be better to file a bug on Phabricator.org (you can login using your MediaWiki.org username) for a quicker response.

Q: I upgraded MobileFrontend and now I'm getting a fatal exception!
A: You are probably using incompatible versions of MobileFrontend and MediaWiki. In most cases, we can't help you here. Try upgrading MobileFrontend or MediaWiki to resolve your issue.

For Extension Developers
By default resource modules in extensions will not be loaded in mobile view.

Should a module need to be loaded while in mobile view 1>Special:MyLanguage/ResourceLoader/Writing a MobileFrontend friendly ResourceLoader module|this guide on writing MobileFrontend friendly modules will be of help.