Jump to content

Manuel:Interface/barre latérale/modifications

From mediawiki.org
This page is a translated version of the page Manual:Interface/Sidebar/Hacks and the translation is 100% complete.

But

This page lists hacks that used to be mentioned in Manual:Interface/Sidebar.

Modifier le contenu de la barre latérale après connexion (PHP)

In your LocalSettings.php file, use the SkinBuildSidebar hook to modify the sidebar. Use the following function to check for $wgUser->isLoggedIn() and call a different system message than sidebar.

$wgEnableSidebarCache = false;

$wgHooks['SkinBuildSidebar'][] = 'lfHideSidebar';
/**
 * Show a different sidebar for anonymous users.
 * based on https://www.mediawiki.org/wiki/Manual:Interface/Sidebar/Hacks
 *
 * $skin Skin object
 * $bar array Contains the array items, out of which the sidebar will be
created.
 * @return true
 */
function lfHideSidebar( $skin, &$bar ) {
  global $wgUser;
  // Hide sidebar for anonymous users
  if ( !$wgUser->isLoggedIn() ) {
    // Shows a special anonymous sidebar.
    $bar = array(
      // Returns the message text of that sidebar with only transformation done.
      // Setting array keys "text"; array keys "href" and "active" stay unset.
        'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->parse(),
        //'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->text(),
    );
  } else {
    // No changes, just display the sidebar as usual.
  }
  return true;
}

Then in your Wiki, go to MediaWiki:anon_sidebar and create your new sidebar.

Autoriser le balisage du wiki

Many people on Support Desk have been asking about how to put arbitrary wikitext into the sidebar. Take the code from the above example. The text() function will return your page content unescaped, only {{-transformation is done. Instead of using the text() function, you can use the parse() function. Your page content will then be fully parsed from wikitext to HTML. Instead of

	'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->text(),

use this:

	'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->parse(),

That will allow your sidebar article to be proper wikitext.

Contenu de MediaWiki:Anon_sidebar

In your sidebar, you will need to include the surrounding HTML tags to ensure the portlet is styled correctly. Your MediaWiki:Anon_Sidebar page content will need to look something like the following example after the change:

<div class="portal" role="navigation" id='p-support' aria-labelledby='p-support-label'>
<h3 id='p-navigation-label'>Navigation</h3>
<div class='body'>
*[[Main Page]]
*[[Community portal]]
*[{{fullurl:Special:Recentchanges}} Recent changes]
*[[Sandbox]]
*[[Help]]
</div>
</div>