php - MediaWiki 自定义皮肤 : check if current page is main page

标签 php mediawiki mediawiki-extensions mediawiki-templates

我正在一个代码库上设置一堆不同语言的 mediawiki。到目前为止,大部分都在工作,但我想使用一个看起来与其他页面不同的主页。为此,我最初只是添加了一些仅适用于 main_page 类的 css 规则:

body .page-Main_Page { <rules> }

问题是,在其他语言中,主页的调用方式不同(并且类相应更改),所以我要么必须为所有可能的主页标题添加 css 规则(不会发生),要么在皮肤内部进行检查如果当前页面是主页,则向正文添加一个类。

不幸的是,没有办法检查它。我搜索过的大多数解决方案都是基于“主页”或设置您自己的标题。我想让皮肤自动检测标题。

到目前为止我想到的唯一解决方案是将 mediawiki 的变量作为主页 url 并将其与当前页面标题进行比较:

$mainurl = $this->data['nav_urls']['mainpage']['href'];
$ismain = $this->data['thispage'] == substr($mainurl,'6');

(['href'] 以/wiki/开头,因此偏移量为 6)

以后

<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">    

(当然还有更多的类(class),但你明白了)

但这给了我另一个问题。在西类牙语中,该页面称为 Página Principal。 data['thispage'] 没有问题,但是 ['href'] 保存为/wiki/P%C3%A1gina_Principal

所以...谁能告诉我怎么做 1. 以当前使用的语言查找“主页”的翻译或 2. 将 P%C3%A1gina_Principal 转换为 Página Principal(其他语言类似)或 3. 告诉我另一种方法来检查我是否在主页上?

最佳答案

其实还有更简单的方法:

if ($this->getSkin()->getTitle()->isMainPage())

返回一个 bool 值

关于php - MediaWiki 自定义皮肤 : check if current page is main page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592299/

相关文章:

php - 访问 MediaWiki 扩展

php - 如果检查选择查询的语句被忽略

php - 在 Codeigniter 1.7.3 中加载模型时出错

php - 使用AdWords API添加关键字时出现问题

php - 如何打印当前 URL 路径?

javascript - 如何在特定的 wiki 页面中添加脚本标签?

php - 来自 MySQL 的订单

php - 如何获取复杂的维基百科模板的结果?

security - 具有外部用户访问控制的 MediaWiki 文档