LocalSetting.php WIKI: различия между версиями

Материал из support.qbpro.ru
imported>Vix
imported>Vix
 
(не показаны 2 промежуточные версии этого же участника)
Строка 521: Строка 521:
Счётчики могут отображать на странице свою пиктограммку с некоторыми данными, а могут не отображать. Но в обоих случаях они будут отправлять статистику посещений на свой сервер, где её можно будет подробно изучить.
Счётчики могут отображать на странице свою пиктограммку с некоторыми данными, а могут не отображать. Но в обоих случаях они будут отправлять статистику посещений на свой сервер, где её можно будет подробно изучить.


Мы используем счётчик от [http://metrika.yandex.ru/add/ Яндекса]. Код его сохранён в файле <code>skins/counter_yandex.php</code>.
Мы используем счётчик от [http://metrika.yandex.ru/add/ Яндекса]. Код его сохранён в файле  
<code>skins/counter_yandex.php</code>.


Для добавления счётчика редактируем файл <code>skins/Vector.php</code>:
Для добавления счётчика редактируем файл <code>skins/Vector.php</code>:
 
< syntaxhighlight line enclose="div" highlight="13" lang=php>
<syntaxhighlight line enclose="div" highlight="13" lang=php>
  < !-- footer -->
  <!-- footer -->
  < div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
  <div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
  < ?php foreach( $this->getFooterLinks() as $category => $links ): ?>
  <?php foreach( $this->getFooterLinks() as $category => $links ): ?>
   < ul id="footer-<?php echo $category ?>">
   <ul id="footer-<?php echo $category ?>">
   < ?php foreach( $links as $link ): ?>
   <?php foreach( $links as $link ): ?>
     < li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
     <li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
   < ?php endforeach; ?>
   <?php endforeach; ?>
   < /ul>
   </ul>
  < ?php endforeach; ?>
  <?php endforeach; ?>
  < ?php $footericons = $this->getFooterIcons("icononly");
  <?php $footericons = $this->getFooterIcons("icononly");
  if ( count( $footericons ) > 0 ): ?>
  if ( count( $footericons ) > 0 ): ?>
   <ul id="footer-icons" class="noprint">
   < ul id="footer-icons" class="noprint">
   <li><?php include("counter_yandex.php"); ?></li> <!-- включение счётчика Яндекса -->
   '''< li><?php include("counter_yandex.php"); ?></li> < !-- включение счётчика Яндекса -->'''
  <?php foreach ( $footericons as $blockName => $footerIcons ): ?>
  < ?php foreach ( $footericons as $blockName => $footerIcons ): ?>
   <li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
   < li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
  <?php foreach ( $footerIcons as $icon ): ?>
  < ?php foreach ( $footerIcons as $icon ): ?>
     <?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
     < ?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
   
   
  <?php endforeach; ?>
  < ?php endforeach; ?>
   </li>
   < /li>
  <?php endforeach; ?>
  < ?php endforeach; ?>
   </ul>
   < /ul>
  <?php endif; ?>
  < ?php endif; ?>
  <div style="clear:both"></div>
  < div style="clear:both"></div>
  </div>
  < /div>
  <!-- /footer -->
  < !-- /footer -->
  </syntaxhighlight>
  < /syntaxhighlight>
 


После этого счётчик заработает, и должна стать видна его пиктограмма. Если же она не видна, то возможно её блокирует ваш браузер, его расширения или что-то ещё.
После этого счётчик заработает, и должна стать видна его пиктограмма. Если же она не видна, то возможно её блокирует ваш браузер, его расширения или что-то ещё.

Текущая версия от 23:26, 15 августа 2016

Установка MediaWiki

Установка крайне проста: скачиваем последнюю версию с официального сайта http://www.mediawiki.org и распаковываем в нужный каталог сайта (например /var/www/site/w/); далее настраиваем через веб-интерфейс. Точка входа http://domain.ru/w/config/

Подробно об установке можно узнать из официальной инструкции, и ещё одна здесь.

Вики движок лучше не размещать в корне сайта. Почему, кратко объяснено в спец. статье.

После установки хорошо бы ознакомиться с задачами администратора MediaWiki, где сказано что ещё можно Fredericksburg DUI lawyer доделать.

Как сделать (кратко)

Хорошие краткие инструкции (ЧаВО или FAQ) есть на официальном сайте MediaWiki как на русском языке, так и на английском.


Запрещаем редактирование не авторизованным пользователям:

$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;

Полный список прав см. в офф руководстве

Делаем ссылки короткими

По умолчанию ссылки выглядят так: http://domain.ru/wiki/index.php?title=article. Чтобы сделать их такими же короткими и наглядными, как в Википедии, есть много способов. Один из них - это добавить в LocalSettings.php:

$wgScriptPath   = "/w";  
$wgArticlePath  = "/wiki/$1";
$wgUsePathInfo  = true;

где $wgScriptPath - каталог установки вики-сайта, а $wgArticlePath - виртуальный каталог, который нужно будет указать в URL при обращении к статье, имя не должно совпадать с реальным каталогом.

Затем, в корневом каталоге сайта (т.е. рядом с каталогом "w") нужно создать файл .htaccess:

RewriteEngine On
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]

Для лучшего понимания этого кода можно подробней ознакомиться с синтаксисом дерективы RewriteRule.

Если на сервере установлено несклько виртуальных хостов, то нужно ещё добавить  настройку виртуального хоста в секцию <VirtualHost>:

AllowOverride All
RewriteEngine On
RewriteOptions Inherit

и подключить модуль rewrite, после чего перезагрузить apache. В Debian это делается следующим образом:

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
/etc/init.d/apache2 restart

Меняем права пользователей

Права пользователя можно поменять на Special:Userrights. Подробно описано в официальном руководстве.

Меняем пароль пользователя

Пароль любого пользователя можно поменять SQL командой:

UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';

Читайте подробней на официальном сайте.

Разрешаем включать страницы из других вики

Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр $wgEnableScaryTranscluding:

$wgEnableScaryTranscluding = true;
! В версии MediaWiki 1.16.2 при попытке подключить внешний шаблон {{WikiName:Template:TemplateName}} PHP выдаёт ошибку:
PHP Fatal error:  Cannot redeclare class HttpRequest in /local_path_to_site/w/includes/HttpFunctions.php on line 122
! В версии MediaWiki 1.16.4 ошибка выглядит так:
[Ошибка обращения к шаблону http://adminportal.coke.com/main/Template:TemplateName?action=render] 

Можно прочитать подбробней про включения (transclusion) вообще и про включения из других вики в частности.

Разрешаем загружать файлы

# Позволяем загружать файлы
$wgEnableUploads = true;

# Определяем макс. размер файла
$wgMaxUploadSize = 5000000; 

# Отключаем проверку расширения файла
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = false;

# Отключаем проверку MIME-типов
$wgVerifyMimeType = false;

Последние два параметра разрешают загружать все файлы (что не безопасно). Если их не указывать, то по умолчанию будут разрешены только изображения.

Чтобы самостоятельно задать тип файлов указываем:

$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'svg', 'pdf', 'doc', 'docx', 'xls', 'xlsx','ods','odg','odt');

Для того, чтобы файлы могли быть загруженными, должен быть настроен и сам PHP. Максимальный размер загружаемого файла задаётся в php.ini (напр. /etc/php5/apache2/php.ini) параметром upload_max_filesize. Т.е. одной установки $wgMaxUploadSize будет мало.


Подробней см. официальную документацию.

Добавляем классы таблиц

код для shared.css
/* -pm- as wikitable but without a table */
/*background and darker header background*/
table.standard {
    margin: 1em 1em 1em 0;
    border: 1px #aaa solid;
    border-collapse: collapse;
}
.standard th, .standard td {
    border: 1px #aaa solid;
    padding: 0.2em;
}
.standard th {
    background: #d2d2d2;
    text-align: center;
}
.standard caption {
    font-weight: bold;
}

/* -pm- as standart but with frame only */
table.frame {
    margin: 1em 1em 1em 0;
    border: 1px #aaa solid;
    border-collapse: collapse;
}
.frame th .frame td {
    padding: 0.2em;
}
.frame th {
    background: #d2d2d2;
    text-align: center;
}
.frame caption {
    font-weight: bold;
}

/* -pm- as standart but wide (100%) */
table.wide {
    margin: 1em 1em 1em 0;
    border: 1px #aaa solid;
    border-collapse: collapse;
    width: 100%;
}
.wide th, .wide td {
    border: 1px #aaa solid;
    padding: 0.2em;
}
.wide th {
    background: #d2d2d2;
    text-align: center;
}
.wide caption {
    font-weight: bold;
}

/* -pm- as wide but with frame only*/
table.wide-frame {
    margin: 1em 1em 1em 0;
    border: 1px #aaa solid;
    border-collapse: collapse;
    width: 100%;
}
.wide-frame th .wide-frame td {
    padding: 0.2em;
}
.wide-frame th {
    background: #d2d2d2;
    text-align: center;
}
.wide-frame caption {
    font-weight: bold;
}

По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.

  • Чтобы определить свои классы нужно отредактировать файл skins/common/shared.css. Вставьте в любое место приведённый справа код.


Пример классов таблиц:

вид
wikitable
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
standard
Заголовок 1 Заголовок 2
1 Ячейка 2 Ячейка
2 Ячейка 1 Ячейка
3 Ячейка 3 Ячейка
frame
Латиница Кириллица Цифры
D Г 3
E Щ 2
F Б 11


код
{| class="wikitable"
|-
!Заголовок 1||Заголовок 2 
|-
|Ячейка 1*1||Ячейка 2*1
|-
|Ячейка 1*2||Ячейка 2*2
|-
|Ячейка 1*3||Ячейка 2*3
|}
{| class="standard sortable"
|-
!Заголовок 1||Заголовок 2 
|-
| 1 Ячейка || 2 Ячейка
|-
| 2 Ячейка || 1 Ячейка 
|-
| 3 Ячейка || 3 Ячейка
|}
{| class="frame sortable"
|-
!Латиница||Кириллица||class="unsortable"|Цифры
|-
| D || Г || 3 
|-
| E || Щ || 2
|-
| F || Б || 11
|}
широкие
wide
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
wide-frame
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3

Скрываем большие и незначительные блоки текста

  • Начиная с 1.18 для всех элементов добавлен класс "mw-collapsible", который можно указать не только для таблиц, но и для любого текста. Подробней см. справку по редактированию
  • До версии 1.18 в официальной инструкции рекомендуется создать в вики страницы MediaWiki:Common.js и MediaWiki:Common.css Такое решение имеет свой плюс (при обновлении движка настройка останется) и минус (в случае вики фермы - страницу нужно будет создавать в каждой вики). Для вики фермы можно добавить код в конец следующих файлов в каталоге skins/common/:
    • код для Common.js добавил в ajax.js
    • код для Common.css добавил в shared.css

Пространство имён MediaWiki

С помощью этого пространства имён можно поменять многие элементы (тексты) интерфейса.

  • MediaWiki:Noarticletext - Этот текст появляется, если в адресной строке (URL) был передан параметр title на несуществующую страницу.

Например: http://ru.teopedia.org/w-hpb/index.php?title=Этой_страницы_нет

  • MediaWiki:Copyrightwarning, MediaWiki:Copyrightwarning2 - предупреждения об авторском праве под окнами редактирования
  • MediaWiki:Sitenotice - добавляет сообщение на каждую страницу выше заголовка
  • MediaWiki:Edittools - дополнительные инструменты для страницы редактирования (см. выше расширение CharInsert)

Пространство имён Special

  • Special:Allmessages - список системных сообщений

Добавление расширений

Этому посвящена статья MediaWiki/Расширения

Резервное копирование

Чтобы узнать, как скачать дампы базы данных со статьями Википедии, см. статью Википедии

Для создания собственного дампа локального сайта, использующего MediaWiki, есть подробная инструкция.

Если кратко, то полная резервная копия - это дамп из СУБД (у меня MySQL) в виде SQL выражений, а частичная в виде xml файла. Особенности последней в том, что она не зависит от структуры базы данных и может быть перенесена, например, на нувую версию MediaWiki с изменнённой структурой БД, но в xml не выгружаются информация о логинаx пользователей, журналы и метаданные изображений.

  • Для SQL дампа выполняем:
mysqldump -h $SERVER -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c \
| /bin/gzip -9 > ~/backup/wiki-$(date '+%a').sql.gz
параметры $USER, $PASSWORD и $DATABASE берём из LocalSettings.php
cat ./LocalSettings.php  | grep wgDB
параметр --default-character-set=$CHARSET нужен, если возникли проблемы с кодировкой (подробней см. статью выше)
параметр -h $SERVER нужен если подключаемся не через сокет, иначе получим ошибку:
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect


  • Для XML дампа используем скрипт dumpBackup.php, расположенный в каталоге maintenance:
php maintenance\dumpBackup.php --full > full.xml 

Список параметров dumpBackup.php можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.


Редактировние статей

Об этом можно подробно узнать из Справки по редактированию.

Поиск в Firefox по своей вики

В Firefox с помощью шаблона %s и "Краткого имени" (keyword) в закладке можно настроить быстрый доступ к любому сайту.

Отрываем Закладки - Управление закладками (Bookmark/Manage bookmarks), создаём отдельную папку для быстрого поиска, скажем "Быстрый поиск"; создаём новую закладку, где указываем:

  • Имя: Поиск по СисадминВики
  • Адрес: http://sysadminwiki.ru/wiki/%s
  • Краткое имя: св

Обратите внимание, что краткое имя может быть и на русском языке.

Теперь в адресной строке набираем: "св MediaWiki" и попадаем на эту страницу.

Если наберём просто "св", то попадём на начальную страницу сайта.

Уменьшение нагрузки

Полезно запретить поисковым роботам индексировать все служебные страницы, а ограничить их только статьями. Для этого редактируем файл robots.txt в корне сайта:

User-agent: *
Disallow: /w/

В случае вики семьи (фермы), в корневой каталог сайта кладём:

User-agent: *
Disallow: /w/
Disallow: /ru/w-
Disallow: /en/w-

а в языковые подкаталоги:

User-agent: *
Disallow: /w/
Disallow: /w-

Подробнее см. на официальном сайте

Почта

Разрешаем пересылку почты пользователям и устанавиваем ограничение на запрос напоминания пароля не чаще чем один в час.

## UPO means: this is also a user preference option
$wgEnableEmail      = true;
$wgEnableUserEmail  = true; # UPO
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
$wgPasswordReminderResendTime = 1;

$wgEmergencyContact = "user@domain.ru";
$wgPasswordSender = "wiki_admin@domain.ru";
$wgPasswordSenderName = "wiki администратор";

Чтобы задать особые настройки почтового сервера, с которого будут посылаться сообщения, определяем массив $wgSMTP.

$wgSMTP = array(
 'host'     => "mail.domain.ru", //could also be an IP address
 'IDHost'   => "domain.ru",
 'port'     => 25,
 'auth'     => false,
 'username' => "wiki_admin@domain.ru",
 'password' => "пароль"
);

Но в этом случае нам понадобиться установленный пакет Mail из репозитория PEAR. Ставится командой

pear install MAIL Net_SMTP

Если же не установлен сам PEAR, то в Debian этом можно сделать так:

apt-get install php-pear


Дополнительные настройки

  • Интервики (interwiki) - это ссылки, оформленные как внутренние ссылки с использованием специального префикса, но ведущие на страницы других проектов. Интервики-ссылки позволяют сделать ссылку на страницы других вики-проектов, например Википедии, Викиучебника, Викиновостей и т.д., или, к примеру, на разделы вашего вики-проекта на разных языках.
  • Tagline - можно изменить подпись "Материал из НазваниеВики".
  • Можно использовать "волшебные слова" (переключатели и переменные), например, для настройки отображение содержания, или вставки даты в определённом формате, или отображения статистики.
  • Можно изменить некоторые умолчальные настройки профиля пользователя переменной $wgDefaultUserOptions. Например, чтобы не показывать ссылку "Правка" для секций для незарегистрированных пользователей, нужно добавить в LocalSettings.php
$wgDefaultUserOptions ['editsection'] = 0;

См. также

В категории MediaWiki есть ещё несколько статей, которые помогут настроить движок соответсвенно нуждам.

Полезные ссылки

Документация:


Справочники:


Скины:


Описание движка MediaWiki:

Статья взята тут:MediaWiki

Установка счётчиков

Для установки счётчика надо включить его код в код каждой страницы вики, но вообще достаточно включить его лишь в код темы оформления (скина). Так как по умолчанию используется Vector, то рассмотрим на его примере.

Код счётчика лучше сохранить в файле с расширением .php и загрузить на сервер в каталог skins, после чего в файле темы оформления (Vector.php) надо будет включить в определённом месте имя этого файла. Не забывайте, что кодировка файла с кодом счётчика должна совпадать с кодировкой, используемой на вашем сайте, иначе вместо кириллицы будет отображаться кракозябра.

Счётчики могут отображать на странице свою пиктограммку с некоторыми данными, а могут не отображать. Но в обоих случаях они будут отправлять статистику посещений на свой сервер, где её можно будет подробно изучить.

Мы используем счётчик от Яндекса. Код его сохранён в файле

skins/counter_yandex.php.

Для добавления счётчика редактируем файл skins/Vector.php:

< syntaxhighlight line enclose="div" highlight="13" lang=php>
< !-- footer -->
< div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
< ?php foreach( $this->getFooterLinks() as $category => $links ): ?>
 < ul id="footer-<?php echo $category ?>">
  < ?php foreach( $links as $link ): ?>

< li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?> < ?php endforeach; ?> < /ul> < ?php endforeach; ?> < ?php $footericons = $this->getFooterIcons("icononly"); if ( count( $footericons ) > 0 ): ?> < ul id="footer-icons" class="noprint"> < li><?php include("counter_yandex.php"); ?> < !-- включение счётчика Яндекса --> < ?php foreach ( $footericons as $blockName => $footerIcons ): ?> < li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico"> < ?php foreach ( $footerIcons as $icon ): ?> < ?php echo $this->getSkin()->makeFooterIcon( $icon ); ?> < ?php endforeach; ?> < /li> < ?php endforeach; ?> < /ul> < ?php endif; ?> < div style="clear:both">

< /div>
< !-- /footer -->
< /syntaxhighlight>


После этого счётчик заработает, и должна стать видна его пиктограмма. Если же она не видна, то возможно её блокирует ваш браузер, его расширения или что-то ещё.