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