+skin.txt
-SKIN.DOC
+MediaWiki includes four core skins:
-This document describes the overall architecture of MediaWiki's HTML rendering
-code as well as some history about the skin system. It is placed here rather
-than in comments in the code itself to help reduce the code size.
+* Vector: The default skin. Introduced in the 1.16 release (2010), it has been
+ set as the default in MediaWiki since the 1.17 release (2011), replacing
+ Monobook.
-== Version 1.4 ==
+* Monobook: Named after the black-and-white photo of a book in the page
+ background. Introduced in the 2004 release of 1.3, it had been been the
+ default skin since then, before being replaced by Vector.
-MediaWiki still use the PHPTal skin system introduced in version 1.3 but some
-changes have been made to the file organisation.
+* Modern: An attractive blue/grey theme with sidebar and top bar. Derived from
+ Monobook.
-PHP class and PHPTal templates have been moved to /skins/ (respectivly from
-/includes/ and /templates/). This way skin designer and end user just stick to
-one directory.
+* Cologne Blue: A lightweight skin with minimal formatting. The oldest of the
+ currently bundled skins, largely rewritten in 2012 while keeping its
+ appearance.
-Two samples are provided to start with, one for PHPTal use (SkinPHPTal.sample)
-and one without (Skin.sample).
+Several legacy skins were removed in the 1.22 release, as the burden of
+supporting them became too heavy to bear. Those were:
-== Version 1.3 ==
+* Standard (a.k.a. Classic): The old default skin written by Lee Crocker during
+ the phase 3 rewrite, in 2002.
-The following might help a bit though.
+* Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
+ This skin is now used for the old Wikipedia snapshot at
+ http://nostalgia.wikipedia.org/
-Firstly, there's Skin.php; this file will check various settings, and it
-contains a base class from which new skins can be derived.
+* Chick: A lightweight Monobook skin with no sidebar. The sidebar links were
+ given at the bottom of the page instead.
-Before version 1.3, each skin had its own PHP file (with a sub-class to Skin)
-to generate the output. The files are:
- * SkinCologneBlue.php
- * SkinNostalgia.php
- * SkinStandard.php
- * SkinWikimediaWiki.php
-If you want to change those skins, you have to edit these PHP files.
-
-Since 1.3 a new special skin file is available: SkinPHPTal.php. It makes use of
-the PHPTal template engine and allows you to separate code and layout of the
-pages. The default 1.3 skin is MonoBook and it uses the SkinPHPTAL class.
+* Simple: A lightweight skin with a simple white-background sidebar and no top
+ bar.
-To change the layout, just edit the PHPTal template (templates/xhtml_slim.pt)
-as well as the stylesheets (stylesheets/monobook/*).
+* MySkin: Essentially Monobook without the CSS. The idea was that it could be
+ customised using user-specific or site-wide CSS (see below).
-== pre 1.3 version ==
+== Custom CSS/JS ==
+
+It is possible to customise the site CSS and JavaScript without editing any
+server-side source files. This is done by editing some pages on the wiki:
+
+* [[MediaWiki:Common.css]] -- for skin-independent CSS
+* [[MediaWiki:Common.js]] -- for skin-independent JavaScript
+* [[MediaWiki:Vector.css]], [[MediaWiki:Monobook.css]], etc. -- for
+ skin-dependent CSS
+* [[MediaWiki:Vector.js]], [[MediaWiki:Monobook.js]], etc. -- for
+ skin-dependent JavaScript
+
+These can also be customised on a per-user basis, by editing
+[[User:<name>/vector.css]], [[User:<name>/vector.js]], etc.
+
+This feature has led to a wide variety of "user styles" becoming available:
+
+https://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles
+
+If you want a different look for your wiki, that gallery is a good place to start.
+
+== Drop-in custom skins ==
+
+If you put a file in MediaWiki's skins directory, ending in .php, the name of
+the file will automatically be added as a skin name, and the file will be
+expected to contain a class called Skin<name> with the skin class. You can then
+make that skin the default by adding to LocalSettings.php:
+
+$wgDefaultSkin = '<name>';
+
+You can also disable dropped-in or core skins using:
+
+$wgSkipSkins[] = '<name>';
+
+This technique is used by the more ambitious MediaWiki site operators, to
+create complex custom skins for their wikis. It should be preferred over
+editing the core Monobook skin directly.
+
+See https://www.mediawiki.org/wiki/Manual:Skinning for more information.
+
+== Extension skins ==
+
+It is now possible (since MediaWiki 1.12) to write a skin as a standard
+MediaWiki extension, enabled via LocalSettings.php. This is done by adding
+it to $wgValidSkinNames, for example:
+
+$wgValidSkinNames['mycoolskin'] = 'MyCoolSkin';
+
+and then registering a class in $wgAutoloadClasses called SkinMycoolSkin, which
+derives from Skin. This technique is apparently not yet used (as of 2008)
+outside the DumpHTML extension.
-Unfortunately there isn't any documentation, and the code's in a bit of a mess
-right now during the transition from the old skin code to the new template-based
-skin code in 1.3.