Manual: Interfaz/Barra lateral

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 44% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎Taqbaylit • ‎português • ‎русский • ‎سرائیکی
Ejemplo de barra lateral

MediaWiki:Sidebar define la barra de navegación, la cual provee enlaces a la mayoría de los lugares en la wiki y suministra a los administradores del sitio un lugar para adicionar una colección constante de enlaces. Por ejemplo, la mayoría de las wikis enlazarán a la página de discusión de su comunidad y a algunas herramientas útiles.

Los skins Monobook y Vector colocan la barra de navegación arriba a la izquierda (top-right for right-to-left languages) junto a la barra de búsqueda y a la caja de herramientas, pero la ubicación puede ser diferente en otros skins. La barra lateral se oculta a los usuarios del sitio Mobile.


Personalizar la barra lateral

Para personalizar la MediaWiki:Sidebar en una wiki, usted primero necesita estar registrado con un usuario que tenga el permiso editinterface - Esto está habilitado por defecto para los administradores. (Para información sobre asignar un permiso a grupos o usuarios, ver Manual:User rights.)

Luego, use un enlace a una página en su wiki, pero reemplace el título de su página wiki (e.g. Main_Page) en la URL/barra de direcciones con MediaWiki:Sidebar y cargue esa página - Usted debería ver ahora el contenido de la barra lateral. (Usted puede usar la sintaxis //yourdomain/yourwiki/index.php?title=MediaWiki:Sidebar&action=edit si usted utiliza URLs largas.)

Si el contenido de la barra lateral ya ha sido modificado, usted simplemente puede dar clic sobre el enlace Edit o Edit source, de otra forma usted podría necesitar crear primero la página dando clic en Create o Create source.

Nota: Si usted tiene que crear una nueva página, se le presentará el contenido por defecto de la barra lateral en el editor. Para crear exitosamente una página MediaWiki:Sidebar, necesita cambiar el contenido antes de salvar.

A continuación se muestra un código de ejemplo para una barra lateral:

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

Este ejemplo mostrará la siguiente barra lateral:

Ejemplo de barra lateral

Encabezados

La barra de navegación puede estar dividida en secciones, cada una con su propio encabezado. El encabezado para cada sección es tomado desde la lista de elementos del primer nivel ("navigation" y "new heading" en el ejemplo de arriba).

Si este texto corresponde al nombre de un mensaje de la interfaz (Una página existente en ese título en la MediaWiki namespace), entonces el texto de esa página es usado como una etiqueta; de lo contrario, el título del encabezado se utiliza tal cual.


Enlaces

Los elementos del segundo nivel de la lista son enlaces ("mainpage|mainpage" en el ejemplo de arriba), donde el formato es:

** target|link text
objetivo
El enlace objetivo puede ser el nombre de un mensaje de interfaz (una página en el MediaWiki namespace) o una página wiki, o un enlace externo. En cualquier caso, el link puede ser interno, interwiki o externo. En algunos casos (tales como enlaces con el carácter "&"), un mensaje de interfaz es necesario. El enlace objetivo no puede ser dependiente del lenguaje de la interfaz configurada en las preferencias.
Algoritmo seguido:
  1. Llamar el texto objetivo.
  2. Si hay uno existente o un mensaje de interfaz por defecto con ese nombre, use el contenido de ese mensaje en vez del texto objetivo.
  3. Si la salida del paso anterior es una URL valida (comenzando con http:// u otro URL protocol), el enlace apuntará a esa URL.
  4. si no, se tratará como el enlace objetivo de un wikilink (enlazando a ese nombre de página o interwiki).
  5. En caso de que termine enlazando a '-', toda la entrada es removida de la barra lateral (eso es útil para remover una entrada en todos los lenguajes al cambiar el mensaje que tiene el enlace).


Ejemplos:
  • "** portal-url|portal" usa el texto de MediaWiki:Portal-url (el cual contiene "Project:Community portal").
  • "** Special:RecentChanges|Recent changes" enlace a Special:RecentChanges, ya que no hay un mensaje de interfaz con ese nombre.
  • "** w:Foo|Some interwiki page" enlaza a w:Foo por la misma razón.
  • "** http://www.mediawiki.org|MediaWiki home" enlaza a http://www.mediawiki.org por la misma razón.
enlace de texto
El enlace de texto puede ser el mismo de un mensaje de interfaz (página en el the MediaWiki namespace) o texto plano.
  • Si el enlace de texto es el nombre de un mensaje de interfaz existente o por defecto, el contenido de ese mensaje será usado. Mediawiki verificará las versiones localizadas; por ejemplo, si el lenguaje actual es fr (Frances) y el enlace de texto es el mensaje de interfaz "forum", este verificará "forum/fr" antes de usar "forum".
  • En cualquier caso, el enlace de texto es usado como destino.
  • Note que el enlace de texto no es opcional como los enlaces en una wiki normal. Si falta el enlace de texto, el elemento se omite.
Ejemplos:
  • ** Homepage|mainpage uses MediaWiki:Mainpage (which contains "MediaWiki").
  • ** Special:Recentchanges|Recent changes uses "Recent changes", since there is no interface message of that name.

Orden de los elementos

Por defecto, la barra lateral consiste de elementos en este orden: navegación, búsqueda, caja de herramienta, lenguajes. El orden puede ser cambiado (en MediaWiki 1.13+) adicionando las palabras claves especiales (SEARCH, TOOLBOX and LANGUAGES) a MediaWiki:Sidebar usando la sintaxis de encabezado. Por ejemplo, el siguiente código mueve la caja de búsqueda a la parte superior de la barra lateral:

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

Traducciones

Usted puede traducir las cadenas, la cual usted usa, editando las páginas de acuerdo al namespace en la MediaWiki .

Ejemplo: La cadena, la cual reemplazará el elemento llamado "mainpage", es tomado de MediaWiki:Mainpage. Para configurar/cambiar este texto para los usuarios, quienes despliegan su wiki en Alemán, puede colocar el texto de acuerdo a la página MediaWiki:Mainpage/de.

De esa manera usted puede fácilmente traducir esos textos a través de la interfaz de la MediaWiki.

Por favor tenga en cuenta que la MediaWiki usará por defecto el contenido de la página en la barra lateral ese idioma, el cual corresponde al idioma por defecto de su wiki. Así, si su wiki e.g. utiliza el Francés como idioma por defecto, edite MediaWiki:Mainpage/fr para mostrar una barra lateral modificada a todos los usuarios, quienes no han cambiado su configuración de idioma y para todos los usuarios anónimos.

Para traducciones más avanzadas, ver Help:Extension:Translate/Unstructured element translation.


Personalización avanzada

The sidebar can be fully customized by implementing JavaScript or Cascading Style Sheets, or by editing the PHP files directly. Before using these methods, note that:

  • JavaScript is fragile: it will not work for users with JavaScript disabled, and scripts frequently fail in different browsers or skins.
  • Editing the PHP files can easily cause unexpected errors, and your changes will be lost in the next update unless you manually change the new files.


Force UI-messages to follow content

Some pages should sometimes follow the content language, especially for multilingual sites. This can be controlled with the setting $wgForceUIMsgAsContentMsg. Each message overridden in this way must be explicitly given, for example to let the sidebar link to versions given by the content language for the main page and the portal page add the following to LocalSettings.php

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

Add or remove toolbox sections (JavaScript)

The toolbox, which appears under the search bar, is a dynamic element and cannot be easily customized without the use of skinning extensions (otherwise it requires programming in PHP.) If you still want to do so, you can copy skins/MonoBook.php, creating a new skin. You can then make a custom skin to generate these links in your preferred fashion.

Another JavaScript solution is below.

For this solution to work on the entire MediaWiki site, this script has to be copied to MediaWiki:Common.js (MediaWiki:Common.js is available for MediaWiki 1.9 +).

For this solution to work only for a specific user, add this script to Special:MyPage/common.js (or the JS page for the user's current skin, such as Special:MyPage/monobook.js).

Now simply configure which link should appear in which section. You also can remove some links if you want to.

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 ) {
		// let's just ignore what's happened
		return;
	}
}

function CustomizeModificationsOfSidebar() {
	// adds [[Special:CategoryTree|Special:CategoryTree]] to toolbox
	ModifySidebar( 'add', 'toolbox', 'CategoryTree', 'http://en.wikipedia.org/wiki/Special:CategoryTree' );
	// removes [[Special:Upload|Special:Upload]] from toolbox
	ModifySidebar( 'remove', 'toolbox', 'Upload file', 'http://en.wikipedia.org/wiki/Special:Upload' );
}

jQuery( CustomizeModificationsOfSidebar );
Usage
function CustomizeModificationsOfSidebar() has to be customized for adding or removing links in specific sections:
ModifySidebar( "action", "section", "name", "link" );
parameter value
action add to add a link; remove to remove a link
section navigation, toolbox, languages but also any other existing customized section; the given link will be added to or removed from this section
name contains the text of the link
link contains the URL of the link
restricting modifications to specific usergroups

If you want to restrict the modification of the links to a specific user group (e.g. bureaucrat), change

jQuery( CustomizeModificationsOfSidebar );

to

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

For restricting the modifications to IPs instead of a specific user group, use

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

Add or remove toolbox sections (PHP)

You can add in your file LocalSettings.php the hook described on this page. With this, you can modify via MediaWiki:Sidebar the links in the toolbox panel (remove some links, change their name) and add custom links (e.g. add the "Recent changes" link there instead of the navigation panel.


Make expanding/collapsing sidebar for all users (Monobook skin only)

If you use the Monobook skin and don't want to miss the expandable menu bar from e.g. Vector skin, paste the following code into MediaWiki:Monobook.js of your wiki.

/////////////////////////////////////////////////////////
// Code snippet to make your sidebar items expandable  //
// Use this code ONLY for the Monobook skin.           //
/////////////////////////////////////////////////////////

$( document ).ready( function() {
	// Set the default expanded items by their headline
	var defaultExpandItems = ['Navigation', 'Orga'];
	// Set the basic-name for the cookies, which save the current state of expanding
	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' );
	// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
	$.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' );
	// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
	$.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 );
	}
}

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

Sidebar width in Monobook skin (CSS)

You can change the width of your sidebar by adding the following CSS rules to your MediaWiki:Monobook.css, note that this is an article, not a file. This changes the width to 15em, the actions position and portlet width should be an em or so less, so I've set them to 14em in this example.

/* increase sidebar width */
#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; }

Sidebar width in Vector skin (CSS)

You can change the width of your sidebar by adding the following CSS rules to your MediaWiki:Vector.css. The standard width in vector skin is 10em. The following example changes the width to 12em:

/* increase Vector sidebar width */
div#mw-panel { width: 12em; }
div#footer, #mw-head-base, div#content { margin-left: 12em; }
#left-navigation { margin-left: 12em; }

Change sidebar content when logged in (PHP)

You can modify the sidebar using a hook. Create a small extension of your own, use Extension:HideSidebar or put the code directly into your LocalSettings.php file.

Some example code adding a 'navigation' sidebar block with a login link for logged out users.

Advertencia Advertencia: The sidebar's array is cached after this hook is run, if you use sidebar caching and do user specific things in this hook like something that only shows up when logged in or out it may end up cached and not look correctly for some users.
<?php
$wgHooks['SkinBuildSidebar'][] = 'lfHideSidebar';
function lfHideSidebar( $skin, &$bar ) {
	global $wgUser;
	// Hide sidebar for anonymous users
	if ( !$wgUser->isLoggedIn() ) {
		$bar = array(
			'navigation' => array(
				array(
					'text'   => wfMessage( 'login' ) -> text(),
					'href'   => SpecialPage::getTitleFor( 'Login' )->getLocalURL(),
					'id'     => 'n-login',
					'active' => ''
				)
			)
		);
	}
	return true;
}

Parser functions in sidebar

Although it is not exactly recommended, the sidebar does support parser functions (such as ParserFunctions), provided the ** is outside the parser function, and the parser function does not span multiple lines. For example:

*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}}

works. However the following would not work since the parser function spans multiple lines:

*Heading
{{#ifeq:1|1|
**foo{{!}}
bar
|
**baz{{!}}fred
}}
Advertencia Advertencia: There is a bug on 1.18 where if a line on MediaWiki:Sidebar contains pipe characters (| ) before expanding parser functions, but not after expanding parser functions, an exception is thrown on all pages (bug 33321). If such a construction is accidentally introduced to the sidebar, it forces the user to revert MediaWiki:Sidebar using the API or edit.php. This is fixed in later versions of MediaWiki

Troubleshooting

Changes not showing up

MediaWiki aggressively caches content if possible, which often causes the navigation bar to persist after changes. Purging the cache of affected pages should correct the situation. To perform a mass-purge of all caches at once, touch the LocalSettings.php file or truncate the objectcache table in your database (you may have to do both).

You also need to have $wgUseDatabaseMessages set to true.

If you are a user or average wiki admin, you will not be able to do the advanced stuff above to get changes to show up. If purging does not work either, you can sometimes still see CSS changes right away in preview (especially when changing your personal CSS). For example; changing the sidebar width, padding, or margins. Changes can take awhile to show up after saving though. If nothing shows up after awhile you may need to contact the overall wiki, or wiki farm, sysop.


Lowercase link labels

If your links are not being capitalized as intended, try adding spaces around the bar character; for example:

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

Sections disappear or show unexpected content

If a section does not display or displays unexpected content, check that the header text isn't the name of an interface message by searching Special:AllMessages. If it is, use a different header text, or create a new interface message and use it.

For example, if you want to use "Sidebar" as header text, create the interface message "MediaWiki:Sidebar-header" containing only "Sidebar". Then, use * sidebar-header as header.

Sections are not displayed if there are no links of the form ** target | link text (e.g. when the target was forgotten).


Broken links after updating Special:Version

This will happen e.g., each time there are newer translations for your site language's sidebar items. One could add new redirect pages each time, but a better solution would be to use one's own sidebar item names instead of trying to keep track of the current MediaWiki translations.


Ancient versions of MediaWiki

If you have a pre-release version of 1.5 Beta, or earlier, it is still possible in some cases to edit the sidebar:


See also