Manuel: Interface/Barre latérale

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Interface/Sidebar and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎Taqbaylit • ‎español • ‎français • ‎italiano • ‎português • ‎русский • ‎العربية • ‎अवधी • ‎中文 • ‎日本語 • ‎한국어
Exemple de barre latérale

MediaWiki:Sidebar définit la barre de navigation, laquelle propose des liens vers les emplacements les plus importants du wiki et fournit aux administrateurs un endroit où ajouter une collection permanente de liens. Par exemple, la plupart des wikis intègreront un lien vers la page de discussion de leur communauté et vers quelques outils utiles.

Les habillages Monobook et le Vector placent la barre de navigation en haut à gauche (en haut à droite pour les langues de droite à gauche) suivi de la barre de recherche et de la boîte à outils, mais le placement peut être différent avec d'autres habillages. Cette barre latérale n'est pas montrée aux utilisateurs du site Mobile.

Personnaliser la barre latérale

Pour personnaliser la MediaWiki:Sidebar dans un wiki, vous devez d'abord être connecté avec un utilisateur ayant le droit editinterface - droit attribué par défaut pour les administrateurs (pour les informations sur l'attribution des droits à des groupes ou des utilisateurs, voir Manuel:Droits utilisateurs ).

Lorsque vous utilisez un lien vers une page sur votre wiki, mais que vous remplacez le titre de votre page (par exemple Main_Page) dans la barre d'URL/addresse par MediaWiki:Sidebar et que vous chargez cette page - vous devez maintenant voir le contenu actuel de la barre latérale (il se peut que vous deviez utiliser la syntaxe //yourdomain/yourwiki/index.php?title=MediaWiki:Sidebar&action=edit si vous utilisez des URLs longues).

Si le contenu de la barre latérale a déjà été modifié, vous pouvez simplement cliquer sur le lien Editer ou Editer le source , sinon vous pourriez avoir à créer la page d'abord en cliquant sur Créer ou Créer le source.

Note: si vous devez créer une nouvelle page, elle vous sera présentée dans l'éditeur avec le contenu par défaut pour la barre latérale. Pour créer avec succès une page MediaWiki:Sidebar , vous avez besoin de changer le contenu avant de sauvegarder.

Ceci est un exemple de code pour une barre latérale :

* navigation
** mainpage|mainpage
** Special:RecentChanges|Recent changes
* new heading
** portal-url|portal
** https://www.mediawiki.org|MediaWiki home

Cette exemple produira la barre latérale suivante :

Exemple de barre latérale

Titres

La barre de navigation peut être découpée en sections, chacune avec leur propre titre. Ce titre est récupéré à partir de la liste des éléments de premier niveau (« navigation » et « new heading » dans l'exemple ci-dessus).

Si ce texte correspond au nom d'un message d'interface (une page existante qui a ce titre dans l'espace de noms MediaWiki), alors le texte de la page est utilisé comme une étiquette; sinon, le titre de l'entête est utilisé tel quel.

Pour vous assurer que la version internationalisée est utilisée, vous pouvez utiliser le mot magique {{int:}}

** randompage-url|{{int:randompage}}

Liens

Les éléments de liste de second ordre sont les liens ( « mainpage|mainpage » dans l'exemple ci-dessus), où le format est :

** target|link text
target
La cible du lien peut être le nom d'un message d'interface (page de l'espace de noms MediaWiki) ou d'une page wiki, ou un lien externe. Dans chaque cas, le lien peut être interne, interwiki ou externe. Parfois (liens avec le caractère '&'), un message d'interface est nécessaire. La cible du lien ne peut pas être définie en fonction de la langue d'interface définie dans les préférences.
La cible du lien peut être le nom d'un message d'interface (page de l'espace de noms MediaWiki) ou d'une page wiki, ou un lien externe. Dans chaque cas, le lien peut être interne, interwiki ou externe. Parfois (liens avec le caractère '&'), un message d'interface est nécessaire. La cible du lien ne peut pas être dépendante de la langue d'interface définie dans les préférences.
Algorithme suivi :
  1. Obtenir le texte cible.
  2. S'il existe (ou par défaut) un message d'interface avec ce nom, utiliser le contenu de ce message au lieu du texte cible.
  3. Si la sortie de l'étape précédente est une URL valide (commençant avec http:// ou autre protocole d'URL), le lien pointera sur cette URL.
  4. Sinon, il sera traité comme le lien cible d'une lien wiki (en pointant vers ce nom de page ou interwiki).
  5. Dans le cas où il terminerait en pointant sur '-', toute l'entrée est supprimée de la barre latérale (cela est utile pour supprimer une entrée pour toutes les langues en changeant le message où se trouve le lien).
Exemples :
  • "** portal-url|portal" utilise le texte de MediaWiki:Portal-url (qui contient "Project:Community portal").
  • "** Special:RecentChanges|Recent changes" liens vers Special:RecentChanges, parce qu'il n'existe pas de message d'interface de ce nom.
  • "** w:Foo|Some interwiki page" pointe vers w:Foo pour la même raison.
  • "** https://www.mediawiki.org|MediaWiki home" pointe vers http://www.mediawiki.org pour la même raison.
link text
Le texte du lien peut être le nom d'un message d'interface (page dans l'espace de noms MediaWiki) ou un texte brut.
  • Si le texte du lien est le nom d'un message d'interface existant ou par défaut, le contenu de ce message sera utilisé. MediaWiki vérifiera les versions traduites; par exemple, si la langue actuelle est fr (français) et que le texte du lien correspond au message d'interface « forum », le message « forum/fr » sera vérifié avant d'utiliser « forum » .
  • Sinon, le texte du lien est utilisé tel quel.
  • Notez que le texte du lien est pas facultatif comme dans les liens wiki classiques. Si le texte du lien est manquant, l'élément est ignoré.
Le texte du lien peut être le nom d'un message d'interface (page dans l'espace de noms MediaWiki) ou un texte brut.
  • Si le texte du lien est le nom d'un message d'interface existant ou par défaut, le contenu de ce message sera utilisé. MediaWiki vérifiera les versions traduites; par exemple, si la langue actuelle est fr (français) et que le texte du lien correspond au message d'interface « forum », le message « forum/fr » sera vérifié avant d'utiliser « forum » .
  • Sinon, le texte du lien est utilisé tel quel.
  • Notez que le texte du lien est pas facultatif comme dans les liens wiki classiques. Si le texte du lien est manquant, l'élément est ignoré.
Exemples :
  • ** Homepage|mainpage utilise MediaWiki:Mainpage (qui contient « MediaWiki » ).
  • ** Special:Recentchanges|Recent changes utilise « Recent changes » , parce qu'il n'existe pas de message d'interface avec ce nom.

Ordre des éléments

Par défaut, la barre latérale est constituée d'éléments dans cet ordre: navigation, recherche, boîte à outils, langues. L'ordre peut être changé (dans MediaWiki 1.13+) en ajoutant des mots clés spéciaux (SEARCH, TOOLBOX et LANGUAGES) à MediaWiki:Sidebar à l'aide de la syntaxe d'entête. Par exemple, le code suivant déplace la zone de recherche en haut de la barre latérale :

* SEARCH
* navigation
** mainpage|mainpage
** Special:Recentchanges|Recent changed
* new heading
** portal-url|portal
** https://www.mediawiki.org|MediaWiki home

Infobulle et clé d'accès

Si vous ajoutez un élément dans la barre latérale, il n'aura pas d'info-bulle associée. Mais vous pouvez en créer une en faisant ceci :[1]

  • créer une page wiki appelée « MediaWiki:Tooltip-n-<identifiant de l'élément> »
  • et écrivez le texte de l'infobulle à l'intérieur de cette page.

Les clés d'accès (accesskey) peuvent aussi être créées en faisant ceci :

  • créer une page wiki appelée "MediaWiki:Accesskey-n-<identifiant de l'élément>"
  • et écrivez l'accesskey dans cette page.

Exemple :


Traductions

Vous pouvez traduire les chaînes que vous utilisez en modifiant les pages correspondantes dans l'espace de noms MediaWiki.

Exemple: la chaîne qui va remplacer l'élément nommé « mainpage », est prise de MediaWiki:Mainpage. Pour initialiser/modifier ce texte pour les utilisateurs qui affichent votre wiki en allemand, vous pouvez mettre le texte approprié sur la page MediaWiki:Mainpage/de.

De cette manière vous pouvez facilement traduire ces textes via l'interface MediaWiki.

Veuillez noter que MediaWiki utilisera par défaut le contenu de la page de la barre latérale dans la cette langue, qui correspond à la langue par défaut de votre wiki. Donc, si votre wiki par exemple utilise le français comme langue par défaut, éditez MediaWiki: Mainpage/fr afin d'afficher une barre latérale modifiée à tous les utilisateurs qui n'ont pas modifié leur configuration de langue et à tous les utilisateurs anonymes.

Pour des traductions plus avancées, voir see Aide:Extension:Traduction/Traduction d'élément non structuré .

Personnalisation avancée

La barre latérale peut être entièrement personnalisée en implémentant JavaScript ou les feuilles de style en cascade (CSS), ou en modifiant directement les fichiers PHP. Avant d’utiliser ces méthodes, notez que:

  • JavaScript est fragile: il ne fonctionnera pas pour les utilisateurs dont JavaScript est désactivé et les scripts échouent souvent avec différents navigateurs ou habillages.
  • La modification des fichiers PHP peut facilement provoquer des erreurs inattendues et vos modifications seront perdues lors de la prochaine mise à jour, à moins que vous ne modifiez manuellement les nouveaux fichiers.

Forcer les messages de l'interface utilisateur à suivre la contenu

Certaines pages doivent parfois suivre la langue du contenu, en particulier pour les sites multilingues. Cela peut être contrôlé avec le paramètre $wgForceUIMsgAsContentMsg . Chaque message remplacé de cette manière doit être explicitement indiqué, par exemple pour permettre à la barre latérale de se lier aux versions fournies par la langue du contenu de la page principale et de la page de portail, en ajoutant les éléments suivants :

LocalSettings.php

code
$wgForceUIMsgAsContentMsg = [ 'mainpage', 'portal-url' ];

Ajouter ou supprimer des sections de boîte à outils (JavaScript)

La « boîte à outils » , qui apparaît « sous » dans la barre de recherche, est un élément dynamique qui ne peut pas être facilement personnalisé sans utiliser les extensions d'habillage (sinon, elle nécessite une programmation en PHP). Si vous voulez toujours le faire, vous pouvez copier skins/MonoBook.php, en créant un nouveau skin. Vous pouvez ensuite créer un habilage personnalisé pour générer ces liens à votre guise.

Une autre solution JavaScript est proposée ci-desous.

Pour que cette solution fonctionne sur le site MediaWiki entier, ce script doit être copié dans MediaWiki:Common.js (MediaWiki:Common.js est disponible pour MediaWiki 1.9 +).

Pour que cette solution ne fonctionne que pour un utilisateur spécifique, ajoutez ce script à Special:MyPage/common.js (ou à la page JS de l'habillage actuel de l'utilisateur, tel que Special:MaPage/monobook.js).

Maintenant configurez simplement quel lien doit apparaître dans quelle section. Vous pouvez aussi supprimer certains liens si vous le désirez.

code
function ModifySidebar( action, section, name, link ) {
	try {
		switch ( section ) {
			case 'languages':
				var target = 'p-lang';
				break;
			case 'toolbox':
				var target = 'p-tb';
				break;
			case 'navigation':
				var target = 'p-navigation';
				break;
			default:
				var target = 'p-' + section;
				break;
		}

		if ( action == 'add' ) {
			var node = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var aNode = document.createElement( 'a' );
			var liNode = document.createElement( 'li' );

			aNode.appendChild( document.createTextNode( name ) );
			aNode.setAttribute( 'href', link );
			liNode.appendChild( aNode );
			liNode.className = 'plainlinks';
			node.appendChild( liNode );
		}

		if ( action == 'remove' ) {
			var list = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var listelements = list.getElementsByTagName( 'li' );

			for ( var i = 0; i < listelements.length; i++ ) {
				if (
					listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
					listelements[i].getElementsByTagName( 'a' )[0].href == link
				)
				{
					list.removeChild( listelements[i] );
				}
			}
		}


	} catch( e ) {
		// ignorer simplement ce qui vient d'arriver
		return;
	}
}

function CustomizeModificationsOfSidebar() {
	// ajouter [[Special:CategoryTree|Special:CategoryTree]] à la boîte à outils
	ModifySidebar( 'add', 'toolbox', 'CategoryTree', 'https://en.wikipedia.org/wiki/Special:CategoryTree' );
	// supprimer [[Special:Upload|Special:Upload]] de la boîte à outils
	ModifySidebar( 'remove', 'toolbox', 'Upload file', 'https://en.wikipedia.org/wiki/Special:Upload' );
}

jQuery( CustomizeModificationsOfSidebar );
Utilisation
function CustomizeModificationsOfSidebar() doit être personnalisé pour ajouter ou supprimer des liens dans les sections spécifiques :
ModifySidebar( "action", "section", "name", "link" );
paramètre valeur
action add pour ajouter un lien; remove pour supprimer un lien
section navigation, toolbox, languages mais aussi tout autre section personnalisée existante; le lien donné sera ajouté à ou supprimé de cette section
name contient le texte du lien
link contient l'URL du lien
Restreindre les modifications à des groupes spécifiques d'utilisateurs

Si vous voulez restreindre la modification des liens à un groupe particulier d'utilisateurs (par exemple les bureaucrates), modifiez :

jQuery( CustomizeModificationsOfSidebar );

en

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'bureaucrat' ) !== -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}

Pour restreindre les modifications à des adresses IP au lieu d'un groupe spécifique d'utilisateurs, utilisez :

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'user' ) === -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}


Ajouter ou supprimer les sections de la boîte à outils (PHP)

Vous pouvez ajouter dans votre fichier LocalSettings.php l'accroche décrite sur cette page. Avec cela, vous pouvez modifier via MediaWiki:Sidebar les liens dans le panneau de la boîte à outils (supprimer certains liens, changer leur nom) et ajouter des liens personnalisés (par exemple, ajouter le lien « Modifications récentes » à la place du panneau de navigation.

Rendre la barre latérale développable/repliable à tous les utilisateurs (habillage Monobook seulement)

Si vous utilisez l'habillage Monobook et ne voulez pas perdre la barre de menu extensible qui se trouve par exemple dans l'habillage Vector, collez le code suivant dans MediaWiki:Monobook.js de votre wiki.

/////////////////////////////////////////////////////////
// Extrait de code pour rendre votre barre latérale extensible. 
// Utilisez ce code UNIQUEMENT pour l'habillage Monobook. 
/////////////////////////////////////////////////////////

$( document ).ready( function() {
	// déclare les éléments extensibles par défaut d'après leur titre
	var defaultExpandItems = ['Navigation', 'Orga'];
	// déclare le nom de base des cookies, qui sauvegardent l'état courant de l'expansion
	var expandCookieName = 'disdance_project_wiki_nav_expanded_';

var maxHeights = [];
	var expandeds = [];
	var labels = [];
	initNav();
});

function initNav() {
	$( '#p-logo' ).css({'position': 'relative', 'display': 'block'});
	$( '.generated-sidebar h5,#p-tb h5 ').each( function( i ) {
		var id = $( this ).parent().attr( 'id' );
		maxHeights[id] = $( this ).next( 'div' ).height();
		var str = $( this ).html();
		labels[id] = str;

if ( $.cookie( expandCookieName + id ) == 'false' ) {
			expandeds[id] = false;
			minimize( $( this ) );
		} else if ( $.cookie( expandCookieName + id ) == 'true' ) {
			expandeds[id] = true;
			maximize( $( this ) );
		} else if ( defaultExpandItems.indexOf( str ) == -1 ) {
			expandeds[id] = false;
			minimize( $( this ) );
		} else {
			expandeds[id] = true;
			maximize( $( this ) );
		}
		$( this ).css({'cursor': 'pointer'});
		$( this ).click( toggleNav );
	} );
}

function minimize( target ) {
	var id = $( target ).parent().attr( 'id' );
	// Fixer la durée de conservation du cookie : 7 jours (modifiable)
	$.cookie( expandCookieName + id, 'false', { expires: 7} );
	var str = labels[id] + '  ►';
	$( target ).next( 'div' ).animate({'height': '0px'});
	$( target ).html( str );
}

function maximize( target ) {
	var id = $( target ).parent().attr( 'id' );
	// Fixer la durée de conservation du cookie : 7 jours (modifiable)
	$.cookie( expandCookieName + id, 'true', { expires: 7} );
	var str = labels[id] + '  ▼';
	var newHeight = maxHeights[id];
	$( target ).next( 'div' ).animate({'height': newHeight + 'px'});
	$( target ).html( str );
}

function toggleNav( e ) {
	var id = $(e.target ).parent().attr( 'id' );
	expandeds[id] = !expandeds[id];
	if( expandeds[id] == true ) {
		maximize( e.target );
	} else {
		minimize( e.target );
	}
}

///////////////////////////////////////////////////////
///////////////////////////////////////////////////////

Barre latérale avec l'habillage Monobook (CSS)

Vous pouvez modifier la largeur de votre barre latérale en ajoutant les règles CSS suivantes à votre MediaWiki:Monobook.css; notez qu'il s'agit d'un article, et non pas d'un fichier. Cela modifie la largeur à 15em, la position des actions et la largeur du portlet doivent être égales ou inférieures, je les ai donc définies à 14em dans cet exemple.

/* augmenter la largeur de la barre latérale */
#column-content { margin-left: -15em; }
#column-content #content { margin-left: 15em; }
#p-logo a, #p-logo a:hover { width: 15em; }
#p-cactions { left: 14.5em; }
.portlet { width: 14em; }
div#column-content { margin-left: -14em; }
div#content { margin-left: 14em; }

Modifier le contenu de la barre latérale une fois connecté (PHP)

Vous pouvez modifier la barre latérale en utilisant une accroche. Créez par vous-même une petite extension ou écrivez le code directement dans votre fichier LocalSettings.php .

Quelque exemple de code qui ajoute un bloc avec la barre latérale de 'navigation' comprenant un lien de connexion pour les utilisateurs déconnectés.

Avertissement Avertissement : Le tableau de la barre latérale est mis en cache après avoir exécuté cette accroche; si vous utilisez la mise en cache pour la barre latérale et réalisez des choses spécifiques à l'utilisateur dans cette accroche comme quelque chose qui ne s'affiche qu'à la connexion ou à la déconnexion, cela peut mettre fin au cache et ne pas s'afficher correctement pour certains utilisateurs.
<?php
$wgHooks['SkinBuildSidebar'][] = 'lfHideSidebar';
function lfHideSidebar( $skin, &$bar ) {
	global $wgUser;
	// masquer la barre latérale pour les utilisateurs anonymes
	if ( !$wgUser->isLoggedIn() ) {
		$bar = array(
			'navigation' => array(
				array(
					'text'   => wfMessage( 'login' ) -> text(),
					'href'   => SpecialPage::getTitleFor( 'Login' )->getLocalURL(),
					'id'     => 'n-login',
					'active' => ''
				)
			)
		);
	}
	return true;
}

Fonctions d'analyse de la barre latérale

Bien que cela ne soit pas exactement recommandé, la barre latérale prend en charge les fonctions d’analyse (telles que ParserFunctions) à condition que le ** soit en dehors de la fonction d’analyse, et que la fonction d'analyse ne s'étend pas sur plusieurs lignes. Par exemple :

*Heading
**{{#ifeq:{{NAMESPACE}}|User|Page-to-link-to{{!}}text-to-show-on-user-page}}
**{{#ifeq:{{NAMESPACE}}|Talk|Another-Page-to-link-to{{!}}text-to-show-on-talk-page}}

fonctionne. Néanmoins ce qui suit ne fonctionnera pas parce que la fonction d'analyse étend les lignes multiples :

*Heading
{{#ifeq:1|1|
**foo{{!}}
bar
|
**baz{{!}}fred
}}
Avertissement Avertissement : Il y a un bogue en 1.18 où lorsqu'une ligne de MediaWiki:Sidebar contient des caractères pipe (| ) avant de développer les fonctions d’analyse (mais pas après), une exception est levée sur toutes les pages (bogue 33321). Si une telle construction est introduite accidentellement dans la barre latérale, elle oblige l'utilisateur à rétablir MediaWiki:Sidebar à l'aide de la touche API ou edit.php. Ceci est corrigé dans les versions ultérieures de MediaWiki

Résolution des problèmes

Modifications n'apparaissant pas

MediaWiki met automatiquement en cache le contenu de manière agressive lorsque c'est possible, ce qui entraîne souvent la persistance de la barre de navigation après les modifications. Purger la mémoire cache des pages affectées devrait corriger la situation. Pour effectuer une purge en masse de tous les caches à la fois, touchez le fichier LocalSettings.php ou tronquez la table objectcache de votre base de données (vous pouvez avoir à faire les deux).

Vous devez aussi avoir $wgUseDatabaseMessages initialisé à true.

Si vous êtes un utilisateur ou un administrateur moyen du wiki, vous ne pourrez pas faire les choses avancées ci-dessus pour que les modifications apparaissent. Si purger ne fonctionne pas non plus, vous pourrez parfois toujours voir les modifications CSS immédiatement dans l'aperçu (en particulier lorsque vous modifiez votre CSS personnel). Par exemple; changer la largeur de la barre latérale, le remplissage ou les marges. Les modifications peuvent toutefois prendre un certain temps après la sauvegarde. Si rien ne s'affiche alors, vous devrez peut-être contacter l'administrateur système du wiki global, ou la ferme de wikis.

Etiquettes de liens en minuscules

Si vos liens ne sont pas mis en majuscules comme vous l'espérez, essayez d'ajouter des espaces de chaque côté du caractère barre verticale; par exemple :

** http://www.example.com/download.php?file=44555 | Download

Des sections disparaissent ou affichent un contenu incohérent

Si une section n'affiche pas ou affiche un contenu inattendu, vérifiez que le texte de l'en-tête n'est pas le nom d'un message d'interface en recherchant Special:AllMessages. Si c'est le cas, utilisez un texte d'en-tête différent ou créez un nouveau message d'interface et utilisez-le.

Par exemple, si vous voulez utiliser « Sidebar » comme texte pour le titre, créez le message d'interface « MediaWiki:Sidebar-header » contenant simplement « Sidebar » . Puis utilisez * sidebar-header comme titre.

Les sections ne sont pas affichées s'il n'y a pas de liens de la forme ** cible | texte du lien (c'est à dire quand la cible a été oubliée).

Liens cassés après une mise à jour Special:Version

Cela se produira, par exemple, à chaque fois qu'il y aura de nouvelles traductions pour les éléments de la barre latérale de la langue de votre site. On pourrait ajouter de nouvelles pages de redirection à chaque fois, mais une meilleure solution serait d’utiliser ses propres noms d’éléments de la barre latérale au lieu d’essayer de garder une trace des traductions actuelles de MediaWiki.

Anciennes versions de MediaWiki

Si vous avez une version de développement 1.5 Beta, ou plus ancienne, il est encore possible dans certains cas de modifier la barre latérale :

Voir aussi

References