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

时间:2012-03-02 11:04:22

标签: user-interface mediawiki

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

当我转到MediaWiki:Disclaimers时,会显示免责声明,这是应该在*wgSitename*:Impressum后面的页面。我认为我不打算将免责声明链接指向MediaWiki:Disclaimers

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

我该如何解决?

3 个答案:

答案 0 :(得分:9)

text of the footer links来自界面消息MediaWiki:PrivacyMediaWiki:AboutsiteMediaWiki:Disclaimers。要停用其中一个或多个链接,将相应的链接文字设置为单个连字符-)。

或者,从MediaWiki 1.17开始,您也可以通过defining a hook in your LocalSettings.php修改页脚。

聚苯乙烯。对于有兴趣一直到源的人来说,处理这些链接的代码在Skin::footerLink()方法中。通过将相应的消息设置为-来禁用各种界面功能的做法在MediaWiki中实际上非常常见(尽管不是通用的);由于历史原因,完全空白的消息有点奇怪,因此-通常用作“无价值”的替身。


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

  • 当MediaWiki看到指向不存在的页面的wikilink(导航菜单中的大多数,但不一定全部,链接也以相同的方式处理)时,它会创建所谓的{{3} }。这些链接的样式与普通链接的格式不同(通常它们是红色的,因此是名称),并指向一个看起来像redlink的网址,其参数为action=edit(使其成为一种特殊的编辑方式)链接)和redlink=1

  • 当用户点击此类链接时,MediaWiki会首先检查该页面是否同时未创建,如果尚未创建,则该用户是允许创建和编辑它:

    1. 如果页面存在,则只会将用户重定向到该页面的普通视图网址。

    2. 如果该页面不存在,并且不允许用户创建该页面,则它们也会被重定向到普通视图URL,然后返回HTTP 404状态代码和表示该页面的消息不存在。 (如果您单击上面的“喜欢这个”链接,将会发生这种情况,除非您恰好是维基百科上的管理员。)

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

看起来,出于某种原因,点击维基上自己用户页面链接的新用户点击上面的案例2而不是预期的案例3.这可能是like this one问题:特别是您应该检查维基上的普通登录用户(组user)是否具有createpage权限。

如果您想允许普通用户创建他们自己的用户页面,有很多方法可以做到这一点,但我所知道的只涉及安装user rights或编写您的拥有extension个钩子。如果你愿意,我可以给你一些如何做的例子,但需要一些编码。

答案 1 :(得分:0)

这些链接是您可能想要填写的占位符。它们是提供的,因此您可以轻松填写​​新Wiki的一些重要部分。

有关完整列表,请参阅http://www.mediawiki.org/wiki/Manual:Footer

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

答案 2 :(得分:0)

上面 Ilmari Karonen 提到的链接:

  

或者,从MediaWiki 1.17开始,您也可以修改页脚   defining a hook in your LocalSettings.php

...显示如何添加指向内置页脚链接列表的链接。它没有显示的是如何删除现有的内置页脚链接,这是原始问题。

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

大多数人不仅要删除内置的页脚链接,还要添加自己的页脚链接。本着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;
};

重要:请勿忘记按照说明操作并创建自己的网页和相应的MediaWiki重定向,否则您的链接可能无法显示或者可能已损坏。