Настройка личной или корпоративной вики MediaWiki

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

Настройка личной или корпоративной вики MediaWiki — один из вариантов создания сайта для некоторой личности или предприятия, альтернативный существующим CMS. Достоинствами(плюсами) этого подхода являются:

  • Готовый веб-интерфейс дистанционного управления и дистанционного редактирования с использованием языка вики-разметки, известного всякому участнику Википедии или другой аналогичной вики. Для взаимодействия автора и читателя с сайтом годится любой современный браузер.
  • Популярный свободный открытый исходный код движка сайта и его открытая архитектура, благодаря которой существуют полторы тысячи готовых расширений, каждое из которых выполняет ту или иную сколько-нибудь необходимую функцию, так что во многих случаях расширение возможностей сайта не требует написания собственного кода (во всяком случае, с нуля).
  • Заложенные в движок механизмы масштабируемости проекта (например, Википедия распределяет нагрузку по сотням физических серверов). В частности, возможно использование серверов memcached для хранения популярных страниц в оперативной памяти.

Ниже рассматриваются отдельные типичные обстоятельства такой настройки.

Движок MediaWiki для работы нуждается в трёх поддерживающих его основах: в интерпретаторе языка PHP (на котором он написан), в базе данных (в которой станет хранить тексты страниц и служебную информацию), а также в вебсервере (который станет передавать движку запросы на обслуживание читателей, поступающие через Всемирную Паутину.

Настройка Apache Server[править | править код]

Официальное пособие(англ.) гласит, что большинство сайтов, действующих на основе MediaWiki, используют Apache Server в качестве своего вебсервера.

Конфигурация виртуального выделенного сервера[править | править код]

Распространённый вариант настройки вики предполагает, что для работы вики выделен отдельный виртуальный сервер (виртуальный хост) Apache, в корень (DocumentRoot) которого распаковывают движок MediaWiki.

Типичные строки файла конфигурации httpd.conf, описывающего настройку виртуального сервера Apache, предназначенного для работы MediaWiki, в случае системы Windows выглядит примерно нижеследующим образом:

<VirtualHost *>
    DocumentRoot "c:/каталогВики"
    ServerName имяВики.ru

    Alias /w "c:/каталогВики/index.php"
</VirtualHost>
<Directory "c:/каталогВики">
   Options FollowSymLinks
   AllowOverride All
   DirectoryIndex index.php

   Order allow,deny
   Allow from all
<LimitExcept GET POST>
   Deny from all
</LimitExcept>
</Directory>

В этом примере строка «c:/каталогВики» указана (именно для примера) вместо действительного пути к тому каталогу, в который будут скопированы файлы движка MediaWiki (обратите внимание: именно этот каталог указан в роли корня сайта — DocumentRoot в терминологии Apache Server), а «имяВики.ru» — вместо действительного адреса сайта во Всемирной Паутине.

Настройка в UNIX-подобных системах производится аналогично и отличается только формой записи путей (в которых будет отстутствовать буква диска).

Укорачивание адреса посредством псевдонима (alias)[править | править код]

Указанная выше директива Alias является частью официально рекомендуемой донастройки, целью которой является укорачивание адреса страниц, приводящее адреса вида «имяВики.ru/index.php/Имя_статьи» к виду «имяВики.ru/w/Имя_статьи».[1]

Чтобы укорачивание работало как надо, настоящего подкаталога «/w/» (внутри каталога вики) не должно существовать, а не то его имя не сможет служить псевдонимом (alias). К счастью, в движке MediaWiki такого подкаталога и не существует — главное и впредь не создать его случайно.

Вики на shared-хостинге[править | править код]

Иногда, в целях экономии средств, для работы вики приобретают не собственный сервер или виртуальный выделенный сервер (VDS, VPS), а готовый виртуальный сервер на разделяемом хостинге (так называемый «shared»), и тогда непосредственный доступ к настройкам виртуального сервера (предоставляемого поэтому в готовом виде), как правило, отсутствует.

В этих экономических обстоятельствах тот же самый виртуальный хост нередко наделяют целым рядом других функций и вебинтерфейсов, помимо вики, то есть выделенным этот хост не является и в обиходном смысле слова. Во избежание путаницы поэтому уместнее тогда движок MediaWiki распаковывать не в корень сайта, а в отдельный подкаталог (например, «/wiki/»), чтобы он не смешивался с другими файлами да скриптами сайта.

С 2011 года цены на услуги облачного хостинга настолько упали, что использование VDS экономически не целесообразно. Стоимость сервера с 256/512 Мб RAM и HDD 5 Гб составляет в среднем 250-350 руб/мес. Что для работы обычной вики более чем достаточно.

Укорачивание адреса посредством перенаправлений[править | править код]

Директива Alias на shared-хостингах недоступна, потому что она может указываться только в конфигурации сервера или виртуального хоста.[2] Укорачивание адреса достигается поэтому другими средствами, а именно помещением в файл .htaccess (лежащий в корне сайта) четырёх директив для Apache Server, настраивающих перенаправления:[3]

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

Первая из этих директив включает движок перенаправлений. (Следовательно, если по какой-то причине в конфигурации сервера Apache отключён модуль mod_rewrite, директивы не сработают — и неизбежна «ошибка 500».) Эта директива может ужé присутствовать в .htaccess, если на сайте ранее был настроен ряд других перенаправлений. (В этом случае уместно поставить директивы, относящиеся к вики, на следующих же строках за нею, чтобы они появлялись и срабатывали прежде, чем все остальные, ранее указанные в .htaccess, директивы RewriteRule.)

Вторая из этих директив скармливает имя статьи движку MediaWiki. Если в именах статей возможно появление специальных символов («&», «?», «#», «+», «/»), то для корректной работы вики уместно использовать Apache Server версии 2.2 (или новее), а эту директиву следует записать в несколько дополненном виде:[4]

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

Третья и четвёртая директивы обеспечивают попадание на заглавную страницу вики с адресов вида «http://имяСайта.Ru/w/» и «http://имяСайта.Ru/» соответственно. При этом символ «/» в конце адреса может отсутствовать, а в корне сайта и повторяться.

Соответственно, если движок вики не является основным скриптом сайта, если поддержка вики не является основной функцией сайта, то четвёртая директива не нужна, так как попадание на заглавную страницу вики с адресов вида «http://имяСайта.Ru/» не нужно (и даже может быть вредным).

Использовать файлы .htaccess следует осторожно т.к. при их использовании вебсервер будет искать их в КАЖДОМ каталоге вашего сайта. Если есть возможность (выделенный или облачный сервер) все выше приведённые настройки без изменений можно разместить в файле настроек сайта находящегося в папке /etc/apache2/sites-available/ (на Linux системах. Тамже необходимо указать опцию AllowOverride None - запрещающую Apache2 искать файлы .htaccess

Выбор версии PHP[править | править код]

Если для Вас приоритет стабильность, безопасность и совместимость с существующими расширениями, то необходимо выбирать PHP 5.3.х. (Актуально для вики размещенных в Интернете.)

Если для вас критична производительность или экономное расходование ресурсов сервера (например, у Вас облачный хостинг), необходимо выбирать PHP 5.4.11 и выше.

PHP 5.4.11 производительнее PHP 5.3.x примерно на 25-40%, примерно настолько же меньше расходует память. PHP 5.4 на январь 2013 года не поддерживается suhosin (расширение безопасности для PHP 5).

Настройка PHP[править | править код]

Если речь не идёт о приобретении ужé настроенного виртуального или выделенного сервера, то администратор сервера MediaWiki сталкивается с необходимостью самостоятельной настройки PHP.

Официальное пособие(англ.) гласит, что MediaWiki нуждается не только в самóм интерпретаторе языка PHP, но также и в трёх его расширениях:

  • Perl Compatible Regular Expressions,
  • Session,
  • Standard PHP Library.

Все они включены (задействовуются) в PHP по умолчанию.

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

Установка может происходить в соответствии со стандартными инструкциями на сайте PHP для UNIX или для Windows. Надобно помнить, однако, что вышеупомянутое укорачивание адреса требует того, чтобы PHP был установлен в качестве модуля (SAPI) к вебсерверу, а не как обработчик CGI.

Для упрощения последующего обновления (апгрейда) уместно устроить так, чтобы обновление сводилось к копированию новых файлов поверх старых, после чего не было бы нужды в дополнительном копировании и (или) переименовании файлов. Это касается, прежде всего, следующих обстоятельств:

Местонахождение SAPI-модуля[править | править код]

В конфигурации Apache Server должно быть указано точное местонахождение SAPI-модуля в виде пути, который ведёт к каталогу PHP. Например, если в Windows сервер Apache 2.2 имеет дело с PHP 5.x, то директива LoadModule в конфигурации Apache должна иметь вид:

LoadModule php5_module c:/php5/php5apache2_2.dll

Если же вместо этого SAPI-модуль копируется в папку к Apache (или в какое-нибудь другое место, в котором сервер найдёт его), тогда возникает риск позабыть о копировании после очередного апгрейда PHP, и SAPI-модуль останется необновлённым.

Местонахождение неродных расширений PHP[править | править код]

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

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

Естественно, именно переименованную библиотеку расширения следует внести в конфигурацию PHP.

Местонахождение файла конфигурации PHP[править | править код]

Уместно устроить так, чтоб системе (посредством переменной PHPRC в окружении системы) или хотя бы Apache Server (посредством директивы PHPIniDir) было сказано о местонахождении файла конфигурации (php.ini) — об этом упоминается в документации по PHP.(англ.) Там местонахождение указывается только как имя каталога, то есть без упоминания имени самогó файла.

В Windows также существует возможность прописать местонахождение этого файла в реестр Windows или поместить сам файл в каталог к Windows. Но этой возможности следует избегать: в дальнейшем можно натолкнуться на нехватку прав для изменения реестра или каталога системы.

Вместо этого в Windows можно поместить файл конфигурации php.ini в каталог PHP (где ужé лежат файлы php.ini-dist да php.ini-recommended, служащие его образцами), и тем невозбранно достигнуть желаемого.

Кроме того, Apache Server при запуске меняет свой каталог на корневой, так что php.ini может быть прочитан из корня.

Выбор базы данных[править | править код]

Выбор базы данных для MediaWiki происходит при первоначальной настройке движка вики администратором через веб-интерфейс.

Статья «Настройка личного вики-движка» в Викиреальности рекомендует не возёхаться с сервером баз данных (наподобие MySQL или PostgreSQL), а использовать бессерверную библиотеку SQLite.

Эта рекомендация в значительной мере справедлива: SQLite (та СУБД, которую чаще прочих устанавливают сейчас в мире), согласно её собственной документации, пригодна для употребления на сайтах с небольшой посещаемостью, причём «небольшими» считаются сайты, получающие менее 100 тысяч запросов в сутки. Большинство личных и даже корпоративных сайтов укладываются в это ограничение, которое к тому же не является жёстким.

У этого решения два достоинства:

  • Нет необходимости устанавливать и настраивать сервер баз данных.
  • Если возникнет необходимость создать страховочную копию базы данных (или перенести всю базу на другой сервер), то не обязательно будет получать и использовать SQL-дамп базы данных: достаточно будет скопировать файл базы (один-единственный .sqlite-файл), предварительно остановив вебсервер или хотя бы вики.

Следует отметить, что при работе вики в PHP 5.1.0 (и более новых версий) поддержка SQLite зависит от PDO. В конфигурации (php.ini) должны остаться не закомментированными следующие две строки:[5]

  • extension=php_pdo_sqlite.so (или extension=php_pdo_sqlite.dll в Windows)
  • extension=php_pdo.so (или extension=php_pdo.dll в Windows)

Отказ от eAccelerator при использовании SQLite[править | править код]

Использование SQLite совместно с тем ускорителем PHP, который называется eAccelerator, может вызывать глюки (особенно на виртуальном хосте). Соответственно, либо при первоначальной настройке движка MediaWiki следует избегать их одновременного указания, либо затем (в файле LocalSettings.php) следует директиву

$wgMainCacheType = CACHE_ACCEL;

заменить директивою

$wgMainCacheType = CACHE_NONE;

(по мере необходимости то же значение может понадобиться придать настройкам $wgMessageCacheType и $wgParserCacheType).

Настройки движка MediaWiki[править | править код]

Настройка личной или корпоративной вики предполагает помещение в файл настроек MediaWiki (то есть в файл LocalSettings.php) целого ряда отдельных настроек, которые перекрывают собою настройки, предлагаемые по умолчанию создателями движка MediaWiki.

Отключение анонимного редактирования и регистрации пользователей[править | править код]

В отличие от публичных вики-энциклопедий (таких, как «Википедия», «Традиция», «Викиреальность», «Антикопирайт», «Люркмор» и т. д.), личный или корпоративный сайт не может быть открыт для редактирования кем угодно из своих читателей.

Это обстоятельство приводит к необходимости запретить как анонимное редактирование, так и анонимную регистрацию новых пользователей. (Таким образом, единственными зарегистрированными пользователями являются создатели сайта, и только они имеют право редактировать статьи.)

# Prevent new user registrations except by sysops:
$wgGroupPermissions['*']['createaccount'] = false;
# Anonymous editing is forbidden:
$wgGroupPermissions['*']['edit'] = false;
# Anonymous users are forbidden to create pages:
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
$wgGroupPermissions['*']['writeapi']   = false;

Отключение демонстрации IP-адреса посетителя[править | править код]

Так как анонимы не являются участниками редактирования сайта, то их «имя участника» (то есть IP-адрес) можно не показывать. Малое число участников позволяет заодно отказаться и от кэширования бокового интерфейса ($wgEnableSidebarCache):

# Cache optimizations:
$wgEnableSidebarCache = false;
$wgShowIPinHeader     = false; # For non-logged in users

Загрузка файлов[править | править код]

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

Полезно также пересмотреть список запрещённых и разрешённых форматов файлов. В нашем примере добавляется дополнительное разрешённое расширение (для PDF) и запрещённое (для WMF).

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

# Enable uploads:
$wgEnableUploads = true;
# Add new allowed extension:
$wgFileExtensions[] = 'pdf';
# Add new forbidden extension:
$wgFileBlacklist[] = 'wmf';
# Warn if uploaded files are larger than this (in bytes):
$wgUploadSizeWarning = 1024 * 1024;
# Enable upload of external files
$wgAllowCopyUploads = true;
$wgGroupPermissions['user']['upload_by_url'] = true;

Донастройка укорачивания адреса[править | править код]

Если при настройке Apache Server были внесены описанные выше изменения, способствующие укорачиванию адресов статей вики, то тогда в настройки движка MediaWiki необходимо внести изменения, им соответствующие.

Если движок установлен в корне (DocumentRoot) вебсервера (например, выделенного сервера, на котором укорачивание адреса производилось посредством псевдонима), тогда необходимые настройки будут примерно следующими:

$wgScriptPath = "";        # Path from the root to script files
$wgArticlePath = "/w/$1";  # The new short path to articles
$wgUsePathInfo = true;     # This setting enables use of pretty URLs

Если движок установлен в подкаталоге /wiki») вебсервера (например, виртуального сервера, на котором укорачивание адреса производилось посредством перенаправлений), тогда необходимые настройки будут примерно следующими:

$wgScriptPath = "/wiki";   # Path from the root to script files
$wgArticlePath = "/w/$1";  # The new short path to articles
$wgUsePathInfo = true;     # This setting enables use of pretty URLs

Нетрудно видеть, что эта настройка MediaWiki зависит только от местонахождения файлов движка, а не от того, каким способом было достигнуто укорачивание адреса в настройках Apache Server.

Уместно сразу отметить, что на самом деле переменные $wgScriptPath и $wgUsePathInfo, как правило, автоматически принимают необходимые им значения при первоначальной настройке движка MediaWiki (совершающейся через веб-интерфейс конфигуратора): $wgScriptPath соответствует расположению файлов движка, а $wgUsePathInfo соответствует тому, даёт ли сервер прочесть переменную PATH_INFO (а ведь Apache Server всегда передаёт её SAPI-модулю PHP).

Стало быть, при настройке укороченных адресов, если она производится впервые (а не для перехода из какой-то другой схемы адресации), остаётся только проверить, приняли ли эти переменные именно вышеизложенные значения, после чего остаётся задать одно только необходимое значение переменной $wgArticlePath.

Смена значка и логотипа сайта[править | править код]

Путь к значку сайта вики уместно указать в явном виде и дать ему имя, отличающееся от «/favicon.ico», а не то он же будет показываться и на всех прочих страницах сайта (не только в вики).

# Favicon (site icon) change
$wgFavicon         = '/iconName.ico';

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

Установленный по умолчанию логотип располагается по адресу /skins/common/images/wiki.png относительно движка сайта (см., например, traditio.wiki/w/skins/common/images/wiki.png) и имеет размер 135×135 пикселов. Если новый логотип сайта имеет другие размеры, то может потребоваться донастройка CSS, чтобы элементы навигации (в левом столбце сайта) не наползали на логотип или, наоборот, не отстояли от него слишком далеко.

Отключение RSS-трансляций[править | править код]

Правки, происходящие на сайте, являются внутренним делом его авторов и выдают иногда грязное исподнее (исправление опечаток, оплошностей, и так далее). Их RSS-поток, предлагаемый для подписки в обычных вики, совершенно поэтому не пригоден для личных и корпоративных вики:

# We do not provide RSS of recentchanges
$wgFeed = false;

Отключение API или подключение всплывающих подсказок[править | править код]

В вики предусмотрен интерфейс для получения машиночитаемых данных, которым могут пользоваться внешние скрипты. Личный или корпоративный вики-сайт может отключить этот интерфейс, если его информация не скармливается внешним скриптам.

# We do not provide API
$wgEnableAPI = false;

От отключения API следует, однако, воздержаться, если планируется снабдить поле поиска всплывающими подсказками. Этот механизм полагается на работоспособность API. Помимо включённого API для его работы потребуются две настройки:

# Enable suggestions
$wgEnableOpenSearchSuggest = true;
$wgEnableMWSuggest = true;

Отключение настройки языка интерфейса[править | править код]

Язык интерфейса вики задаётся директивою $wgLanguageCode во время первоначальной настройки вики — так, для вики на русском языке она принимает значение

$wgLanguageCode = "ru";

Выгодно сделать так, чтобы зарегистрированные пользователи в настройках не могли переключить этот язык на другой для себя:

# Disable language selection
$wgHiddenPrefs[] = 'language';
# Disable variants as well
$wgHiddenPrefs[] = 'variant';
$wgHiddenPrefs[] = 'noconvertlink';

Выгода заключается в том, что тогда можно удалить все те файлы из каталога «/languages/messages» в движке MediaWiki, которые не имеют отношения к русскому или английскому языку — и такое удаление их неминуемо приводит к значительному (многократному) сокращению необходимого для вики дискового пространства.[6] Так, например, общий объём движка MediaWiki 1.16.5 составляет ≈48 477 килобайтов, из которых ≈38 525 килобайта могут быть этим способом стёрты.

Подключение учёта внешних ссылок[править | править код]

В обыкновенной (общедоступной) вики все внешние ссылки могут быть внесены случайными людьми (даже подчас анонимно) и потому рассматриваются как возможный SEO-спам, направленный на повышение цитируемости тех ресурсов, которые, быть может, не особенно заслуживают цитируемости. Поэтому на внешние ссылки накладывается атрибут nofollow[+?] (он указывает поисковым системам, что эти ссылки не надо учитывать при оценке цитируемости сайтов).

В личной или корпоративной вики этот атрибут не нужен, так как внешние ссылки в таких вики являются итогом взвешенного решения автора (или авторского коллектива) сайта вики:

# Credit external links
$wgNoFollowLinks = false;

Подбор расширений MediaWiki[править | править код]

Большим или малым подспорьем в работе личной или корпоративной вики могут стать некоторые расширения MediaWiki:

ParserFunctions[править | править код]

Позволяет использовать логические функции синтаксического анализатора.

Бесценный инструмент для создания сложных шаблонов.

Частично содержит также функции расширения StringFunctions, которые могут быть в нём включены. По умолчанию они отключены.

RegexParserFunctions[править | править код]

Позволяет использовать регулярные выражения для поиска и замены.

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

SyntaxHighlight GeSHi[править | править код]

Обеспечивает синтаксическую подсветку исходного кода на разных языках программирования и разметки.

Как правило, служит немалым подспорьем при просмотре исходного кода скриптов и стилей самой вики.

jQuery для MediaWiki[править | править код]

Создаёт возможность поддержки и обновления библиотеки jQuery (возможно, вместе с её плагинами) через интерфейс вики. Это позволяет вести отдельную историю версий jQuery и плагинов и быть на несколько шагов впереди той версии jQuery, которая поставляется с движком MediaWiki.

Выгода в том, что, как правило, новые версии jQuery бывают быстрее прежних и содержат новые полезные возможности.

Начиная от версии MediaWiki 1.18, вместо этого расширения следует использовать «Local jQuery».

EmbedVideo[править | править код]

Позволяет сделать вики мультимедийною, обеспечив её средствами для вставки видеороликов, звукозаписей, фотопанорам и слайдов.

Cite[править | править код]

Позволяет создавать сноски.

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

CustomNavBlocks[править | править код]

Позволяет помещать в навигационные блоки (в левом столбце страницы) не только простые ненумерованные списки гиперссылок, но также и изображения, нумерованные списки, вложенные списки, разделители, мультимедию и так далее.

Pchart4mw[править | править код]

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

Прекрасное средство для визуального сопоставления данных.

EmailAddressImage[править | править код]

Позволяет рисовать адреса e-mail в виде картинок.

Это расширение обеспечивает защиту публикуемого адреса e-mail от поисковых роботов, употребляемых спамерами и ещё не обученных распознаванию символов на картинках.

ImageMap[править | править код]

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

FileSystemListing[править | править код]

Отображает в вики содержимое некоторого каталога файловой системы.

Это расширение позволяет создать в личной или корпоративной вики MediaWiki страницу или раздел закачек.

(В сколько-нибудь общедоступных вики это расширение чревато утечкою данных: первый встречный может просмотреть и даже выкачать произвольный каталог с любого диска, доступного серверу вики.)

MathJax для MediaWiki[править | править код]

Обеспечивает возможность отображения математических формул в вики.

NoTOC[править | править код]

Установкою этого расширения отключается появление оглавлений (ключевое слово «__TOC__» может, однако, использоваться для вставки оглавлений вручную).

Это расширение пригождается в тех личных и корпоративных вики, дизайну которых противоречит вид стандартных для MediaWiki оглавлений.

NoTitle[править | править код]

Вводит новое «волшебное слово» «__NOTITLE__», отключающее появление основного заголовка страницы (а также других элементов подле заголовка — например, уведомления о произошедшем перенаправлении со страницы на страницу).

Poem[править | править код]

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

DocExport[править | править код]

Это малоизвестное расширение, автором которого является Стас Фомин, позволяет выкачать любую страницу вики в формате Microsoft Word (но всё равно на языке HTML).

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

CharInsert[править | править код]

Позволяет разместить под областью редактирования средство для вставки разнообразных символов.

Следует отметить, что той же цели можно достигнуть и вовсе без расширений MediaWiki, одними джаваскриптами.

InputBox[править | править код]

Автоматизирует создание целого ряда полей ввода (как поисковых, так и посвящённых созданию страниц вики и разделов в них — например, комментариев).

HTTP302Found[править | править код]

Если в вики стоит перенаправление с одной страницы на другую, это расширение позволяет сменить и адрес (в строке адреса) на новый, так как сообщает браузеру о необходимости перехода по перенаправлению (код 203 протокола HTTP), а не просто подсовывает ему другую страницу.

Иногда приносит пользу в SEO.

Настройка системных сообщений MediaWiki[править | править код]

Движок MediaWiki хранит в служебном пространстве имён «MediaWiki:…» ряд страниц, текст которых используется для формирования системных сообщений движка. Часть этих страниц может (а не то и должна) быть изменена в рамках настройки личной или корпоративной вики.

MediaWiki:Pagetitle[править | править код]

Это сообщение используется для формирования HTML-элемента <title>...</title> из названия отображаемой страницы. Содержимое этого элемента отображается браузерами в заголовках окон, в названиях закладок, и так далее.

По умолчанию это сообщение содержит текст $1 — {{SITENAME}}

Так как «волшебное слово» {{SITENAME}} содержит всего-навсего префикс пространства имён вики-проекта, то при настройке вики может оказаться необходимым вручную ввести более развёрнутый суффикс, содержащий полное имя владельца личной вики или полное название предприятия, обладающего корпоративною вики.

MediaWiki:Pagetitle-view-mainpage[править | править код]

Это сообщение похоже на предыдущее, но из него формируется содержимое HTML-элемента <title>...</title> для заглавной страницы сайта.

По умолчанию это сообщение содержит текст {{SITENAME}}

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

MediaWiki:Mainpage[править | править код]

В этом сообщении содержится название (заголовок верхнего уровня и последний элемент URLа) заглавной страницы сайта (то есть той, на которую читателя автоматически перебрасывает от корня сайта или после жмяка мышóю по логотипу вики в левом верхнем углу).

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

Если прежде наполнение заглавной страницы успело начаться по адресу «Заглавная страница», то необходимо вручную переименовать её, дав то же название, которое занесено в сообщение «MediaWiki:Mainpage» (ведь автоматически это переименование не случается). В противном случае по адресу «Заглавная страница» можно оставить стандартное автоматическое известие о том, что вики-движок MediaWiki успешно установлен, а разработку новой заглавной страницы начать с чистого листа.

MediaWiki:Noarticletext[править | править код]

Это сообщение выводится на месте отсутствующей страницы.

В обыкновенной вики это сообщение предлагает участнику проекта либо поискать упоминание названия страницы в других статьях, либо найти соответствующие записи журналов (например, в журнале удалений или переименований), или c нуля создать страницу с таким названием.

Понятно, что в личной или корпоративной вики простой читатель не может создавать страницы и не должен быть обременён знаниями о существовании журналов, притом естественный текст этого сообщения должен начинаться с извинений:

Извините, в настоящее время текст на данной странице отсутствует.

Вы можете [[Special:Search/{{PAGENAME}}|поискать упоминание её названия]] на других страницах сайта.

MediaWiki:Copyrightwarning и MediaWiki:Copyrightwarning2[править | править код]

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

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

<strong>ВНИМАНИЕ!</strong> Текст, внесённый вами в этом окне редактирования, после нажатия на кнопку «{{MediaWiki:savearticle}}» немедленно появится на сайте и будет виден его читателям.<br />Если вы не уверены в том, хорошо ли он будет там выглядеть, воспользуйтесь кнопкою «{{MediaWiki:showpreview}}» и оцените его сперва сами.

MediaWiki:Sidebar[править | править код]

Этим сообщением определяется содержание левого столбца страниц вики (то есть порядок навигационных блоков и текстовых ссылок в них).

Практически в любой личной или корпоративной вики формат навигации будет не таков, как в общедоступной и энциклопедической вики, так что это сообщение придётся переменить.

Если же для навигации необходимым окажется более сложная структура, чем простой одноуровневый ненумерованный список текстовых ссылок (например, если понадобится многоуровневый список, или нумерованный, или снабжённый разделителями, или с иллюстрациями, или с элементами Flash и прочей мультимедии), то простое изменение страницы «MediaWiki:Sidebar» не сгодится: понадобится расширение CustomNavBlocks и редактирование страницы «MediaWiki:CustomNavBlocks».

MediaWiki:Common.css и MediaWiki:Common.js[править | править код]

Эти два сообщения содержат стили и скрипты соответственно, которые подключаются к каждой из страниц вики.

Некоторые комплекты скриптов и (или) стилей, пригодные для употребления в личных и корпоративных вики MediaWiki, рассматриваются в следующем разделе.

Комплекты скриптов и стилей[править | править код]

importScript() и importStylesheet()[править | править код]

Скрипты importScript() и importStylesheet() предназначены для того, чтобы подключать к вики различные скрипты и стили по мере надобности. (Например, чтобы скрипты и стили для редактирования подкачивались только после перехода в режим редактирования.)

Без использования importScript() и importStylesheet() приходится помещать стили и скрипты непосредственно в файлы MediaWiki:Common.css и MediaWiki:Common.js, даже если в этом нет непосредственной нужды (например, простому читателю средства редактирования вряд ли понадобятся). Получается, что importScript() и importStylesheet() позволяют разгрузить common-файлы от излишнего кода — а значит, ускорить первоначальную загрузку вики (например, первое посещение заглавной страницы).

function importScript( page ) {
   if ( (page.charAt(0) === '/') || (page.indexOf('http:') === 0) ){
      // скрипт от корня движка MediaWiki или внешний
      var scriptURL = page;
   } else {
      // скрипт со страницы MediaWiki
      var scriptURL = wgScriptPath + '/index.php?title=' +
                      escape( page.replace( ' ', '_' ) ) +
                      '&action=raw&ctype=text/javascript&dontcountme=s';
   }
   if (document.getElementsByTagName){
      var scriptElem = document.createElement('script');
      scriptElem.setAttribute('src', scriptURL);
      scriptElem.setAttribute('type', 'text/javascript');
      document.getElementsByTagName('head')[0].appendChild(scriptElem);
   } else $('head').append('<s' + 'cript type="text/javascript" src="' + scriptURL + '" />');
}
 
function importStylesheet( page ) {
   if ( (page.charAt(0) === '/') || (page.indexOf('http:') === 0) ){
      // стиль от корня движка MediaWiki или внешний
      var sheetPath = page;
   } else {
      // стиль со страницы MediaWiki
      var sheetPath = wgScriptPath + '/index.php?title=' +
                      escape( page.replace( ' ', '_' ) ) +
                      '&action=raw&ctype=text/css&dontcountme=s';
   }
   if (document.createStyleSheet) {
      document.createStyleSheet(sheetPath); // Internet Explorer
   } else {
      $('head').append('<link rel="stylesheet" type="text/css" href="' + sheetPath + '" />');
   }
}

Вышеприведённая версия этих скриптов умеет подкачивать скрипты и стили тремя способами:

из вики (например, importScript('MediaWiki:Onlyifediting.js'))

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

по абсолютному адресу от корня сайта (например, importStylesheet('/w/leaflet/leaflet.css'))

Этот вариант используется для подгрузки скриптов и стилей, находящихся на сервере вики, но не хранимых в вики — например, скрипт Leaflet для работы шаблонов WikiLeaflet.

по абсолютному адресу от имени сайта (например, importStylesheet('http://fonts.googleapis.com/css?family=Cuprum'))

Этот вариант используется для подгрузки скриптов и стилей с других сайтов — например, для закачки шрифтов из хранилища Google Web Fonts.

Современные версии MediaWiki (1.16 и далее) содержат собственные версии скриптов импортирования, однако без поддержки браузера Internet Explorer (требующего createStyleSheet() для нормальной работоспособности). Кроме того, загрузка скрипта из вики и по адресу в них разнесена: существуют раздельно функции importScript() и importScriptURI(), importStylesheet() и importStylesheetURI().

Загрузка скриптов для редактирования[править | править код]

Feather.svg Этот раздел статьи ещё не написан.
Согласно замыслу одного из участников «Традиции», на этом месте должен располагаться отдельный раздел.
Вы можете помочь проекту, написав этот раздел.

См. также[править | править код]

Внешние ссылки[править | править код]

Примечания[править | править код]

  1. Эта инструкция по укорачиванию адреса взята из пособия mw:Manual:Short_URL#Recommended how-to guide (setup used on Wikipedia)(англ.) и преобразована к виду «имяВики.ru/w/Имя_статьи» вместо «имяВики.ru/wiki/Имя_статьи» с целью достижения большей краткости.
  2. См. соответствующий раздел(англ.) в документации по Apache Server.
  3. Эта инструкция по укорачиванию адреса взята из пособия mw:Manual:Short_URL/wiki/Page_title_--_no_root_access(англ.) и преобразована к виду «имяВики.ru/w/Имя_статьи» вместо «имяВики.ru/wiki/Имя_статьи» с целью достижения большей краткости.
  4. См. пособие mw:Manual:Short_URL/Ampersand_solution(англ.); там же приводится более сложный способ, позволяющий добиться корректной работы такой вики на более ранних версиях Apache Server.
  5. К сожалению, иногда даже вызов функции phpinfo() не может использоваться для проверки присутствия обеих этих строк в конфигурации: PHP со включённой поддержкою SQLite может обрушиться, если отсутствует поддержка PDO, особенно под Windows.
  6. Habrahabr user.gifMithgol: Как уменьшить движок MediaWiki раза в четыре (даже почти в пять) по объёму файлов