貌似我好久没折腾MediaWiki了,这东西确实好用,不过小问题确实蛮多。除了那非智能的中文搜索,还有一堆小缺点滴。比如说这个:分类页面的首字母索引问题。
原始的MediaWiki分类页面是这样的。
怎么样,很挫吧,要是分类里有中文页面那就更挫了。。
于是乎我就像把这些首字母索引给去掉,其实方法挺简单,修改MediaWiki主目录下includes文件夹中的CategoryPage.php就行了。
Mediawiki分类页面中默认的文章列表有两种,一种是三列的,一种是单列的,分别对应CategoryPage.php文件中的columnList和shortList两个函数。把首字母索引给去掉的修改也很简单:
在columnList函数中把
$r .= “<h3>” . htmlspecialchars( $articles_start_char[$index] ) . “$cont_msg</h3>\n<ul>”;
替换成$r .= “<ul>”;
在shortList函数中把
//$r = ‘<h3>’ . htmlspecialchars( $articles_start_char[0] ) . “</h3>\n”;注释
掉然后把$r .= ‘<ul><li>’.$articles[0].’</li>’;替换成$r .= “”;
接着把
if ($articles_start_char[$index] != $articles_start_char[$index - 1])
{
$r .= “</ul><h3>” . htmlspecialchars( $articles_start_char[$index] ) . “</h3>\n<ul>”;
}注释掉就行了
把修改完的CategoryPage.php替换掉原来的,刷新页面,OK。顺便把原来的三列改成两列的模式。效果见下图,相比原来那肯定顺眼多了。
PS:
1.16版的MediaWiki修改方法类似
还是修改CategoryPage.php这个文件
在columnList函数中
注释掉第408-414行
然后在shortList函数中
把第439行和443-446行注释
然后将440行的
$r .= ‘<ul><li>’ . $articles[0] . ‘</li>’;
替换成
$r = ‘<ul><li>’ . $articles[0] . ‘</li>’;
附已修改好的1.16版的CategoryPage.php 下载

您好,感谢您的博文为我提供借鉴.但是您的文章中有一处小错误:
然后把$r .= ‘’.$articles[0].’’;替换成$r = ‘’.$articles[0].’’;
正确的应该是:
掉然后把$r .= ‘’.$articles[0].’’;替换成$r .= “”;
多谢指正,写完了就没好好检查。。
不好意思。
您好,我又回来了.您本页中贴的分类修改方法是基于1.9.3版本的吗?我刚将内部网络中一个mediawiki升级到1.16版本,在categorypage.php中就找不到columnlist函数中的以下语句了:
$r .= “” . htmlspecialchars( $articles_start_char[$index] ) . “$cont_msg\n”;
请教我该如何修改?谢谢
@wanght, 我用的MediaWiki版本是1.15的,博客中已经更新1.16版MediaWiki的修改方法,见文章里的最后部分。