3

我可以将 MediaWiki 链接设为小写并使用连字符而不是下划线作为单词分隔符吗?

类似于WordPress 或其他 wiki CMS所做的事情。

4

4 回答 4

2

好吧,至少有一种方法可以在主命名空间中执行此操作,因此用户编辑的页面具有全小写/破折号分隔的 URL。

您首先手动强制您的页面为全小写和破折号分隔。最初的问题是您的内部链接现在必须在其中包含破折号,这消除了内部链接的标准纯语言样式并使它们几乎无法使用:

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

制作新的维基链接不再是添加一对双方括号;必须重写整个链接文本(并且可以选择用管道重命名以使其可读)。

但是有一种方法可以只重写链接上的 href。首先,对 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;
}

这会重写内部链接的 href 以使用破折号而不是下划线,同时保持锚的其余部分保持不变。

然后使用 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,它们现在在每个页面上都被触发。

优点

  • 您可以制作任何您想要的标题。我喜欢使用分类页面来有内容,但不喜欢“分类:Blah”的标题。
  • 您还可以让页面标题使用 mediawiki 非法或非 ASCII 字符,而无需使用 URL。
于 2013-12-25T06:37:01.247 回答
1

可以让 MediaWiki 使用破折号而不是下划线来指示空格。维基是怎么做的。但它需要对源代码进行多次编辑,通常不建议这样做。此外,不能保证没有错误。

于 2010-03-19T15:29:12.757 回答
0

看起来您可以使用此配置值调整链接案例设置。我找不到有关单词分隔符的任何信息。祝你好运。

于 2010-03-19T15:11:39.277 回答
0

要使页面名称小写,请使用:Template:Lowercase。添加{{Lowercase}}到任何页面以更改其显示方式。

无论如何,链接都可以使用小写字母——链接的第一个字母可以是大写或小写——它总是会链接到正确的页面。

于 2010-05-04T07:42:43.500 回答