User:Barrylb/Special pages outside Special namespace/ru

From MediaWiki.org
Jump to: navigation, search
MediaWiki Extension
Crystal Clear action run.png
Special pages outside Special namespace

Статус: unknown

Области применения Special page
Описание Можно лучше интегрировать служебные страницы со структурой сайта. Вместо адреса служебных страниц (такой как http://www.mysite.com/wiki/Служебная:Events/2006/07/21/Meeting) можно заставить их появляться по такой ссылке как http://www.mysite.com/wiki/Events/2006/07/21/Meeting.
Автор(ы) Barrylb
MediaWiki 1.6.7
Ссылка для скачивания no link
Параметры $wgIntegratedSpecialPages


Если у тебя есть функции на сайте, которые не подходят для Вики страниц часто приходится создавать служебные страницы, но было-бы красивее если-бы у страниц не было "Служебная:" в адресе.

Вот возможность создать служебные страницы с лучшей интеграцией в структуру сайта. Вместо адреса служебных страниц (такой как http://www.mysite.com/wiki/Служебная:Events/2006/07/21/Meeting) можно заставить их появляться по такой ссылке как http://www.mysite.com/wiki/Events/2006/07/21/Meeting.

Должно работать на МедияВики 1.6.7 и 1.7.1. Надо сделать слудующее:

  • Изменить includes/Wiki.php. Вставить перед initializeSpecialCases функцией:
function checkCustomSpecialpages(&$title, &$output) {
  global $wgTitle, $wgIntegratedSpecialPages;

  foreach ($wgIntegratedSpecialPages as $name => $specialname) {
        if ((strpos($title->getText(), $name.'/') === 0) || ($title->getText() == $name)) {
                if ($title->getText() == $name) {
                        $par = NULL;
                        $name = $title->getDBkey();
                }
                else {
                        $bits = split( "/", $title->getDBkey(), 2 );
                        $name = $bits[0];
                        if( !isset( $bits[1] ) ) {
                                $par = NULL;
                        } else {
                                $par = $bits[1];
                        }
                }                                       

                $page = SpecialPage::getPage( $name );
                if (!is_null( $page ) ) {
                        $wgTitle = Title::makeTitle( NS_SPECIAL, $name );
                        if (!is_null( $wgTitle )) {
                                if (!$wgTitle->userCanRead()) {
                                        $output->loginToUse();
                                        $output->output();
                                        exit;
                                }
                                else {
                                        $page->execute( $par );
                                        return true;
                                }
                        }
                }

        }
  }
  return false;
}
  • В initializeSpecialCases функции изменить вот это:
  else {
    /* No match to special cases */

вот на это:

 else if (!$this->checkCustomSpecialPages($title, $output)) {
    /* No match to special cases */
  • Потом в LocalSettings.php указать какие служебные страницы надо переместить по какому адресу; обычно имена совпадают, например:
  $wgIntegratedSpecialPages = array ('Events' => 'Events', 'Reports' => 'Reports');
Язык: English  • Русский
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox