如何在不破坏皮肤的情况下向MediaWiki网站添加水平顶部菜单栏?

时间:2016-05-25 18:05:02

标签: mediawiki menubar mediawiki-extensions

我希望我的MediaWiki网站(除了侧边栏之外,或者替代边栏)在网站顶部有一条链接栏,每页都可以看到。

要求

为了最大限度地减少将来的维护负担,我的要求是:

  1. 不对核心,扩展程序或皮肤代码进行任何修改。我不想维护项目分叉。

  2. 理想情况下,特权用户应该能够通过编辑特殊页面来编辑菜单栏中显示的链接,类似于MediaWiki:Sidebar控制常用侧边栏内容的方式。

  3. 我尝试过的解决方案

    • Topbar extension看起来是理想的解决方案,但它似乎不适用于最新的MediaWiki版本(如果感兴趣,请参阅my SO question #37423269了解详情。)

    • MegaMenu extension看起来很棒,但是有一个侵入式安装程序,违反了我上面的要求#1。它还需要编辑PHP文件来更改违反#2的链接。

    • Erudite皮肤很漂亮,内置支持顶级菜单栏。但在我的测试中,顶部菜单栏区域为空,侧栏在页脚底部的页面底部呈现。皮肤文档没有解释如何自定义顶部菜单栏内容。

    有什么明显的东西我在这里俯瞰吗?其他MediaWiki网站如何做到这一点?

1 个答案:

答案 0 :(得分:1)

在进一步深入研究Erudite皮肤之后,我了解到它的水平顶部菜单栏是从"导航" var objectID; //this is the ID I'm talking about in my question function clickedLoginButton(){ var script = document.createElement('script'); script.src = 'jquery-2.1.4.min.js'; script.type = 'text/javascript'; document.getElementsByTagName('head')[0].appendChild(script); var user = document.getElementById('username'); //inputted username var pass = document.getElementById('password'); //inputted password var passed = false; $.getJSON('data.json', function(data){ console.log("Length: " + data.length) i = 0; do{ console.log(data[i].login); if(user.value == data[i].login && pass.value == data[i].pass){ objectID = i; window.open("http://localhost/loggedIn.html", "_self", true); console.log("pass"); return; } i++; } while(i != data.length); if(passed == false){ window.open("http://localhost/loginFailed.html", "_self", true); objectID = 999999999; console.log("failed"); } });的一部分。 (我特别的问题是,我将该部分标记为大写为"导航"而不是全部小写为"导航";当我改变它时,我开始在顶部菜单中看到链接。 )

因此,对于那个皮肤,侧边栏可能看起来像:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script> //This is where I want to use the object ID
  var numPlayed;
  var numLazy;
  $.getJSON('data.json', function(data){
    var chartData = [
      {
        value: data[objectID].numStudents-data[objectID].numStudentsPlayed,
        color: "dimgray",
        highlight: "gray",
        label: "lazy"
      },
      {
        value:  data[objectID].numStudentsPlayed,
        color: "skyblue",
        highlight: "powderblue",
        label: "played"
      }
    ];
    var ctx = document.getElementById("pieCanvas").getContext("2d");
    var piechart = new Chart(ctx).Pie(chartData);
  });
</script>

菜单将呈现类似于:

Site using Erudite skin, with a top menu

我仍然有兴趣听听我是否遗漏了一些内置的MediaWiki功能,例如:使用Vector皮肤,或常用的扩展名。