User:Barrylb/Special pages outside Special namespace/ru
From MediaWiki.org
|
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 • Русский |
|---|