MediaWiki/FAQ

Материал из ЭНЭ
Перейти к: навигация, поиск

MediaWiki/FAQ

Методика обновления кодировки Backwards-compatible UTF-8 ->MySQL 4.1/5.0 UTF-8

MediaWiki 1.6.10
Mysql 5.0.45
  1. сохраняем все в sql -файл то есть делаем mysqldump --default-character-set=latin1 имя_базы >файло.sql это файло.sql содержит политически правильный и единственно верный utf8 без всяких извращений.
  2. редактируем файло.sql чем можем…(не вордом конечно) и меняем charset latin1 на charset utf8
  3. убеждаемся, что сделали именно mysqldump --default-character-set=latin1, а не экспрот в sql из phpMyAdmin’а (иначе плакали ваши денюжки русские названия-линки статей)
  4. .# заходим в phpMyAdmin (необязательно, но там лучше видно), дропаем (убиваем) имя_базы, создаем базу заново, при этом выбираем utf8_bin collation. И делаем import из файло.sql

Чтобы убедится, что utf8 заработал — идем в основную таблицу page и смотрим на первую запись. Должны увидеть текст «Заглавная страница» вместо непоймичего

  1. Идем в LocalSettings.php и меняем false на true
   # Experimental charset support for MySQL 4.1/5.0.
   ##$wgDBmysql5 = false;
   $wgDBmysql5 = true;

Как разрешить закачку файлов в других форматах

В LocalSettings.php добавляем:

:$wgFileExtensions[] = 'pdf';

для одного формата или

:$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'pdf', 'txt' );

для того, чтобы разрешить несколько дополнительных форматов.

Почему под OS/2 (eComStation) не работает закачка файлов

Пишет при попытке загрузить файл "Невозможно создать директорию «temp/b/be» или «Невозможно создать директорию „public/b/be“». При исследовании вопроса выясняется, что порт php не может создать каталог вида «F:\wiki/images/b/be»

Причина в файле \includes\GlobalFunctions.php, функция wfMkdirParents. Замените её на

function wfMkdirParents( $fullDir, $mode = null, $caller = null ) {
	global $wgDirectoryMode;
 
	if ( !is_null( $caller ) ) {
		wfDebug( "$caller: called wfMkdirParents($dir)" );
	}
 
	if( strval( $fullDir ) === '' || file_exists( $fullDir ) )
		return true;
 
	if ( is_null( $mode ) )
		$mode = $wgDirectoryMode;
 
	# Go back through the paths to find the first directory that exists
	$currentDir = $fullDir;
	$createList = array();
	while ( strval( $currentDir ) !== '' && !file_exists( $currentDir ) ) {
		# Strip trailing slashes
		$currentDir = rtrim( $currentDir, '/\\' );
 
		# Add to create list
		$createList[] = $currentDir;
 
		# Find next delimiter searching from the end
		$p = max( strrpos( $currentDir, '/' ), strrpos( $currentDir, '\\' ) );
		if ( $p === false ) {
			$currentDir = false;
		} else {
			$currentDir = substr( $currentDir, 0, $p );
		}
	}
	if ( count( $createList ) == 0 ) {
		# Directory specified already exists
		return true;
	} elseif ( $currentDir === false ) {
		# Went all the way back to root and it apparently doesn't exist
		wfDebugLog( 'mkdir', "Root doesn't exist?\n" );
		return false;
	}
	# Now go forward creating directories
	$createList = array_reverse( $createList );
 
	# Is the parent directory writable?
	if ( $currentDir === '' ) {
		$currentDir = '/';
	}
	if ( !is_writable( $currentDir ) ) {
		wfDebugLog( 'mkdir', "Not writable: $currentDir\n" );
		return false;
	}
 
	foreach ( $createList as $dir ) {
		# use chmod to override the umask, as suggested by the PHP manual
		if ( !mkdir( $dir, $mode ) || !chmod( $dir, $mode ) ) {
			wfDebugLog( 'mkdir', "Unable to create directory $dir\n" );
			return false;
		}
	}
	return true;
}

Как добавить мини-иконку (favicon)

В LocalSettings.php добавляем:

#минииконка
$wgFavicon="/favicon.ico";

Как изменить лого в левом верхнем углу

#лого в левом вехнем углу
$wgLogo  = "/images/logo.png";

Как запретить незарегистрированным участникам редактировать статьи

$wgEmailConfirmToEdit=true;

Просмотр по-прежнему возможен, кнопка «править» показывается, однако при попытке редактирования появится напоминание о необходимости подтвердить регистрацию.

Как сделать перенаправление для категории

Q: хочется одну категорию перенаправить на другую категорию (скажем, в статье вставляем категорию с коротким названием: «МСЭ», а редирект делаем на статью с длинным названием: «Источники:Малая советская энциклопедия»). Если в категорию «МСЭ» поставить

 #redirect [[Категория:Источники:Малая советская энциклопедия]]

или

 #redirect [[:Категория:Источники:Малая советская энциклопедия]]

то не один из вариантов не работает.

A: Обломись бабка. Это похоже уже фича. См. Template talk:Category redirect. Было обещано, что разработчики исправят, но пошел уже третий год…

Как удалить статью с «недопустимыми символами» в названии

Q: Создал статью с обратным слешем в названии (например, Тест \" тест \"‎ — Нмб Тест \" тест \"‎), при попытке просмотра просмотра веб-сервер выдает ошибку 404 «Not Found. The requested URL /index.php/Тест_\»_тест_\" was not found on this server." Как мне удалить эту страницу ?

A: Данный вопрос может возникнуть в случае использования на сервере операционных систем Windows или OS/2

Берем полный URL

http://wiki.laser.ru/index.php/%D0%A2%D0%B5%D1%81%D1%82_%5C%22_%D1%82%D0%B5%D1%81%D1%82_%5C%22

Добавляем после «index.php» текст ?title= (не забыть удалить / !), а в конец URL’ла — &action=delete

http://wiki.laser.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82_%5C%22_%D1%82%D0%B5%D1%81%D1%82_%5C%22&action=delete

Как совместить внутренний и внешний поиск

MediaWikiFaq 8.jpg

Q: Как совместить внутренний и внешний поиск, так, как это сделано в Википедии ?

A: В Википедии это сделано через использование javascript — скриптов MediaWiki:Search.js и MediaWiki:Common.jsЭНЭ — MediaWiki:Search.js и MediaWiki:Common.js). Следовательно, нужно, во-первых, разрешить использование javascript в браузере, во-вторых, создать Search.js, и в-третьих, отредактировать Common.js средствами MediaWiki.

В частности, в MediaWiki:Common.js следует добавить следующие строки:

//External search
if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search')
  importScript('MediaWiki:Search.js')

Как использовать ссылку на поиск гугля на произвольной странице

Q: Как использовать ссылку на поиск гугля на произвольной странице ?

А1 Вот так: пишем [[google:Собака]], получаем: google:Собака.

A2: установить расширение MediaWiki Extension:Google Custom Search Engine, после чего пишем:<Googlecoop></Googlecoop>, получаем

Как сделать оглавление без номеров

Оглавление без автоматически генерируемых номеров. Номера уже стоят в заголовках
Оглавление с автоматически генерируемыми номерами

Q: Как сделать оглавление страницы (Table of contents) без номеров ? При викификации стандартов, законов и других документов в оглавлении появлется некрасивое дублирование.

А: Использовать класс nonumtoc.
В тело статьи добавляем конструкцию

<div class="nonumtoc">__TOC__</div>

а в MediaWiki:Common.css

/* When <div class="nonumtoc"> is used on the table of contents,
   the ToC will display without numbers */
.nonumtoc .tocnumber { display:none; }
.nonumtoc #toc ul,
.nonumtoc .toc ul {
    line-height: 1.5em;
    list-style: none;
    margin: .3em 0 0;
    padding: 0;
}
.nonumtoc #toc ul ul, 
.nonumtoc .toc ul ul { 
    margin: 0 0 0 2em; 
}

Пример применения — смотри статью Лазерная безопасность.

Как сделать чтобы цвет фона таблицы совпадал с цветом фона страницы

Q: Как сделать чтобы цвет фона таблицы совпадал с цветом фона страницы ? Вопрос актуален для, например, пространства ЭНЭ ({{SITENAME}}), где для стандарного скина используется слегка голубоватый фон, в то время как для основного пространства фон белый. Таблицы с параметром border=0 обычно используются для форматирования текста с изображениями. Результат такого использования таблиц в пространстве {{SITENAME}} при несовпадении фонов страницы и таблицы получается отвратительным.

А: <Simetrical> {| style="background: transparent"

Примечание:Simetrical — имя пользователя на irc-канале #mediawiki

Как администратору создать нового пользователя

Q: Как администратору создать нового пользователя ?

А1: залогинившись администратором, зайти на специальную страницу Special:Userlogin/signup.

А2: нажать мышкой на Спецстраницы, найти раздел Представиться / Зарегистрироваться, нажать на Представиться или зарегистрироваться, увидеть текст «Нет учётной записи? Создайте учётную запись.» и перейти по ссылке «Создайте учётную запись» на Special:Userlogin/signup.

Ссылки