Могу ли я сделать все ссылки строчными с помощью MediaWiki и использовать дефис вместо подчеркивания в качестве разделителя слов? - PullRequest
3 голосов
/ 19 марта 2010

Могу ли я сделать в MediaWiki ссылки строчными и использовать дефис вместо подчеркивания в качестве разделителя слов?

Вроде того, что WordPress или другие вики CMS делают.

Ответы [ 4 ]

2 голосов
/ 25 декабря 2013

Что ж, есть способ сделать это в основном пространстве имен , по крайней мере, чтобы отредактированные пользователем страницы имели URL-адреса, разделенные строчными буквами и разделенные дефисом.

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

For examples of this see [[making-mediawiki-links-lowercase|making mediawiki links lowercase]].

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

Но есть способ переписать только ссылку на ссылки. Сначала внесите два изменения в LocalSettings.php:

$wgCapitalLinks = False; # like mentioned above: make MW not capitalize the page titles
$wgHooks['LinkEnd'][] = "seoUrls"; # add a hook to rewrite the links
function seoUrls($dummy, Title $target, array $options, &$html, array &$attribs, &$ret) {
    $attribs = str_replace("_", "-", $attribs);
    return True;
}

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

Затем используйте CSS, чтобы скрыть (или изменить файл шаблона, чтобы удалить) обычный заголовок на тех страницах с пользовательским контентом. CSS будет что-то вроде:

.ns-0.action-view #firstHeading, /* main */
.ns-14.action-view #firstHeading /* categories */
{
    display: none
}

Вы делаете хотите оставить заголовок для страниц без какого-либо пользовательского контента, например, для редактирования и специальных страниц. Я обнаружил, что нужно скрыть только пространства имен 0 (основное) и 14 (категории).

Наконец, вместо заголовка, поставляемого Mediawiki, присвойте странице заголовок, добавив h1 в начало самого содержимого страницы.

Возможно, вы также захотите переписать все URL с подчеркиванием, чтобы они были также тире:

RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]

Проблемы

  • Обнаружение несуществующей страницы не совсем точно, потому что страницы, которые он ищет, имеют пробелы, а не тире. Однако, если вы удалили все старые страницы с пробелами в заголовке, это не будет проблемой.
  • Поскольку начальная буква теперь чувствительна к регистру, внутренние ссылки требуют переименования, когда они являются первым словом предложения.
  • Содержание и ссылки на встроенный раздел редактирования будут работать по-разному; теперь они запускаются на каждой странице из-за h1.

Преимущества

  • Вы можете делать заголовки как угодно. Мне нравится использовать страницы категорий, чтобы иметь контент, но мне не нравится заголовок "Category: Blah".
  • Вы также можете указывать в заголовке страницы недопустимые символы MediaWiki или символы, не входящие в ASCII, без использования URL-адреса.
1 голос
/ 19 марта 2010

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

0 голосов
/ 04 мая 2010

Чтобы сделать имя страницы строчной, используйте: Шаблон: Строчная . Добавьте {{Lowercase}} на любую страницу, чтобы изменить способ ее отображения.

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

0 голосов
/ 19 марта 2010

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

...