Merge "Maintenance: Add an easy way to access Config instances"
[lhc/web/wiklou.git] / docs / skin.txt
index ce2d0b7..58f77cf 100644 (file)
@@ -1,60 +1,92 @@
-
 skin.txt
 
-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.
+MediaWiki includes four core skins:
+
+* 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.
+
+* 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.
+
+* Modern: An attractive blue/grey theme with sidebar and top bar. Derived from
+  Monobook.
+
+* Cologne Blue: A lightweight skin with minimal formatting. The oldest of the
+  currently bundled skins, largely rewritten in 2012 while keeping its
+  appearance.
+
+
+Several legacy skins were removed in the 1.22 release, as the burden of
+supporting them became too heavy to bear. Those were:
+
+* Standard (a.k.a. Classic): The old default skin written by Lee Crocker during
+  the phase 3 rewrite, in 2002.
+
+* 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/
+
+* Chick: A lightweight Monobook skin with no sidebar. The sidebar links were
+  given at the bottom of the page instead.
+
+* Simple: A lightweight skin with a simple white-background sidebar and no top
+  bar.
+
+* MySkin: Essentially Monobook without the CSS. The idea was that it could be
+  customised using user-specific or site-wide CSS (see below).
+
+
+== Custom CSS/JS ==
 
-== Version 1.6 and greater ==
+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:
 
-PHPTal skins doesn't exist anymore. They were replaced by SkinTemplate skins,
-introduced since 1.4 to remove the depedency of PHPTal.
+* [[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
 
-A new experimental (disabled by default) callback-based template processor
-has been introduced to try to speed up the generation of html pages. See for
-example skins/disabled/MonoBookCBT.php.
+These can also be customised on a per-user basis, by editing
+[[User:<name>/vector.css]], [[User:<name>/vector.js]], etc.
 
-You can find more informations at http://www.mediawiki.org/wiki/Manual:Skins.
+This feature has led to a wide variety of "user styles" becoming available:
 
+https://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles
 
-== Version 1.4 ==
+If you want a different look for your wiki, that gallery is a good place to start.
 
-MediaWiki still use the PHPTal skin system introduced in version 1.3 but some
-changes have been made to the file organisation.
+== Drop-in custom skins ==
 
-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.
+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:
 
-Two samples are provided to start with, one for PHPTal use (SkinPHPTal.sample)
-and one without (Skin.sample).
+$wgDefaultSkin = '<name>';
 
+You can also disable dropped-in or core skins using:
 
-== Version 1.3 ==
+$wgSkipSkins[] = '<name>';
 
-The following might help a bit though.
+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.
 
-Firstly, there's Skin.php; this file will check various settings, and it 
-contains a base class from which new skins can be derived.
+See https://www.mediawiki.org/wiki/Manual:Skinning for more information.
 
-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.
+== Extension skins ==
 
-To change the layout, just edit the PHPTal template (templates/xhtml_slim.pt) 
-as well as the stylesheets (stylesheets/monobook/*).
+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';
 
-== pre 1.3 version ==
+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.