User interface 删除默认的不存在的页脚链接

User interface 删除默认的不存在的页脚链接,user-interface,mediawiki,User Interface,Mediawiki,我在本地网络上安装MediaWiki时遇到问题。我正在用德语使用MediaWiki。我的wiki中有几个页脚链接,它们抛出404错误。例如,在页脚中有一个链接Impressum(英文:免责声明)。它指向不存在的*NameOfMyWiki*:Impressum 当我转到MediaWiki:Disclaimers时,会出现一条免责声明,它应该位于*wgSitename*:Impressum后面的页面。我不认为我必须将免责声明链接指向MediaWiki:Disclaimers 另一个可能基于相同问题的

我在本地网络上安装MediaWiki时遇到问题。我正在用德语使用MediaWiki。我的wiki中有几个页脚链接,它们抛出404错误。例如,在页脚中有一个链接
Impressum
(英文:免责声明)。它指向不存在的
*NameOfMyWiki*:Impressum

当我转到
MediaWiki:Disclaimers
时,会出现一条免责声明,它应该位于
*wgSitename*:Impressum
后面的页面。我不认为我必须将免责声明链接指向
MediaWiki:Disclaimers

另一个可能基于相同问题的行为是,当用户页面仍然为空/尚未创建时(单击设置旁边右上角的链接),用户在其自己的用户页面上获得404。当另一个用户编辑第一个用户的用户页面时,第一个用户也可以访问和编辑该页面。但当它仍然为空/未定义时,则不会


我如何解决这个问题?

这些链接是您可能需要填写的占位符。提供它们是为了方便您填写新wiki的一些重要部分

有关完整列表,请参阅

实际上没有禁用它们的设置。

来自接口消息
MediaWiki:Privacy
MediaWiki:Aboutsite
MediaWiki:Disclaimers
。要禁用一个或多个链接,将相应的链接文本设置为一个连字符(
-

或者,由于MediaWiki 1.17,您也可以通过修改页脚

另外,对于任何有兴趣一直到源代码的人来说,处理这些链接的代码都在方法中。在MediaWiki中,通过将相应的消息设置为
-
来禁用各种界面功能的做法实际上相当普遍(尽管不是通用的);由于历史原因,完全空白的消息会被视为有点奇怪,因此
-
通常被用作“无价值”的替代


编辑:我刚刚注意到您还问了第二个关于用户页面的问题。为了更好地回答这个问题,让我从描述MediaWiki应该如何处理不存在的页面开始:

  • 当MediaWiki看到指向不存在页面的Wiki链接(导航菜单中的大多数链接(但不一定全部链接)时,它会创建一个所谓的页面。这些链接的样式不同于普通链接(通常为红色,因此得名),并指向一个看起来像什么的URL,参数为
    action=edit
    (使其成为一种特殊的编辑链接)和
    redlink=1

  • 当用户单击此类链接时,MediaWiki首先检查页面是否在同一时间内未创建,如果未创建,则允许用户创建和编辑该页面:

  • 如果页面存在,用户只需重定向到页面的正常视图URL

  • 如果该页面不存在,并且不允许用户创建该页面,它们也会被重定向到普通视图URL,然后返回HTTP 404状态代码和一条消息,说明该页面不存在。(如果你点击上面的“喜欢这个”链接,就会发生这种情况,除非你碰巧是维基百科的管理员。)

  • 最后,如果页面不存在,但允许用户创建页面,MediaWiki将URL视为普通的编辑链接,并显示编辑表单

出于某种原因,新用户在您的wiki上单击指向其自己用户页面的链接时,似乎遇到了上述情况2,而不是预期的情况3。这可能是一个问题:特别是,您应该检查wiki上的正常登录用户(组
user
)是否具有
createpage
权限


如果你想让普通用户只创建他们自己的用户页面,有很多方法可以做到,但我所知道的只是安装一个钩子或编写自己的钩子。如果你愿意的话,我可以给你一些例子来说明如何做到这一点,但这需要一些编码。

上面Ilmari Karonen提到的链接:

或者,自MediaWiki 1.17以来,您还可以通过以下方式修改页脚:

…显示如何向内置页脚链接列表添加链接。它没有显示的是如何删除现有的内置页脚链接,这就是最初的问题所在

事实证明,这是对引用的钩子解决方案的简单添加。您只需要放弃模板数组中现有的页脚链接

大多数人不仅想删除内置的页脚链接,还想添加自己的页脚链接。本着StackOverflow的精神,这里有一个完整的示例解决方案,可以同时实现这两个功能(这来自现有的Wiki…)

这适用于mediawiki-1.29.2,但可能也适用于许多旧版本。将此代码放入LocalSettings.php文件(我将其放在底部),以删除现有的页脚链接并添加您自己的页脚链接:

# Remove all existing footer links and add my own
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # IMPORTANT:  this is the secret sauce - remove all existing footer links
        $tpl->data['footerlinks']['places'] = array();

        # To add new footer links to local wiki pages:
        #
        # 1) You MUST create your new pages in your (Main) namespace first, for example:
        #
        #       http://<your-site>/wiki/index.php/About_Us
        #       http://<your-site>/wiki/index.php/Contact_Us
        #       http://<your-site>/wiki/index.php/Disclaimer
        #       http://<your-site>/wiki/index.php/Download
        #       http://<your-site>/wiki/index.php/Privacy_Policy
        #
        # 2) You MUST then create each of these pages in your MediaWiki namespace:
        #
        #       http://<your-site>/wiki/index.php/MediaWiki:Aboutpage 
        #               - Insert 1 line, with "About Us" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Contactpage 
        #               - Insert 1 line, with "Contact Us" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Disclaimerpage 
        #               - Insert 1 line, with "Disclaimer" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Downloadpage 
        #               - Insert 1 line, with "Download" (no quotes)
        #       http://<your-site>/wiki/index.php/MediaWiki:Privacypage 
        #               - Insert 1 line, with "Privacy Policy" (no quotes)
        #
        # 3) Add new footer links like this:

        $tpl->set( 'aboutpage', $sk->footerLink( 'aboutpage', 'aboutpage' ) );
        $tpl->data['footerlinks']['places'][] = 'aboutpage';
        $tpl->set( 'contactpage', $sk->footerLink( 'contactpage', 'contactpage' ) );
        $tpl->data['footerlinks']['places'][] = 'contactpage';
        $tpl->set( 'disclaimerpage', $sk->footerLink( 'disclaimerpage', 'disclaimerpage' ) );
        $tpl->data['footerlinks']['places'][] = 'disclaimerpage';
        $tpl->set( 'downloadpage', $sk->footerLink( 'downloadpage', 'downloadpage' ) );
        $tpl->data['footerlinks']['places'][] = 'downloadpage';
        $tpl->set( 'privacypage', $sk->footerLink( 'privacypage', 'privacypage' ) );
        $tpl->data['footerlinks']['places'][] = 'privacypage';

        return true;
};
#删除所有现有页脚链接并添加我自己的页脚链接
$wgHooks['SkinTemplateOutputPageBeforeExec'][]=函数($sk,&$tpl){
#重要提示:这是秘诀-删除所有现有的页脚链接
$tpl->data['footerlinks']['places']=array();
#要将新页脚链接添加到本地wiki页面,请执行以下操作:
#
#1)必须首先在(主)命名空间中创建新页面,例如:
#
#       http:///wiki/index.php/About_Us
#       http:///wiki/index.php/Contact_Us
#       http:///wiki/index.php/Disclaimer
#       http:///wiki/index.php/Download
#       http:///wiki/index.php/Privacy_Policy
#
#2)然后必须在MediaWiki命名空间中创建以下每个页面:
#
#       http:///wiki/index.php/MediaWiki:Aboutpage 
#-插入1 li