MediaWiki更新后皮肤报错:$this->html('headelement')被弃用,求替代方法
MediaWiki 1.39+ 皮肤
headelement弃用问题的解决办法 不需要完全重建皮肤,只需要替换触发错误的代码即可。
替代方案
将原来的:
$this->html( 'headelement' );
替换为以下代码:
// 输出DOCTYPE和html根标签 echo '<!DOCTYPE html>'; echo '<html lang="' . $this->data['pageLanguage'] . '" dir="' . $this->getSkin()->getTitle()->getPageViewLanguage()->getDir() . '">'; // 输出head部分 echo '<head>'; $this->getSkin()->outputHeader(); echo '</head>'; // 输出body标签开头(包含皮肤属性) echo '<body' . $this->getSkin()->getAttributes() . '>';
说明
MediaWiki 1.39开始弃用QuickTemplate::(get/html/text/haveData)传入headelement参数的用法,官方推荐直接拆分头部结构的输出:
- 手动输出DOCTYPE、html标签,结合你已经获取的
pageLanguage设置语言属性,同时补充文本方向dir属性(适配多语言排版) - 通过
$this->getSkin()->outputHeader()生成原来headelement包含的meta标签、页面标题、样式链接、脚本等核心头部内容 - 用
$this->getSkin()->getAttributes()获取body标签的必要属性(如皮肤类名等),保持皮肤原有样式的兼容性
这样修改后,既符合MediaWiki新版本的规范,又不需要重构整个皮肤。
内容的提问来源于stack exchange,提问作者bblackmoor
相关产品推荐
相关产品推荐

