MediaWiki创建自定义属性后页面属性未显示问题咨询
常见遗漏排查点与修复步骤
以下排查项按出现概率从高到低排序,逐一验证即可定位问题:
- 首先核查属性赋值语法合规性
SMW对属性赋值的解析规则非常严格,以下写法都会直接导致属性不入库:- 日期类型属性
Has AR Date的赋值不符合SMW日期格式要求,正确格式为[[Has AR Date::YYYY-MM-DD]],使用点分隔日期、带中文日期后缀、嵌套模板生成日期值都会解析失败 - 属性值区域包含
]]、::等特殊解析字符时未用<nowiki />标签包裹,导致语法截断 - 赋值代码被写在
<noinclude>标签、被注释标签包裹,或位于模板调用的不传递参数区域 - 属性名拼写错误,包括空格、下划线、大小写不匹配(注意SMW属性名区分大小写,
Has AR Date和Has ar date是两个不同属性)
- 日期类型属性
- 核查LocalSettings.php配置项
多数自定义命名空间下的属性不显示问题都和配置缺失有关:- 确认
$smwgNamespacesWithSemanticLinks配置数组中,当前出问题页面所在的命名空间对应值为true,默认主命名空间需配置$smwgNamespacesWithSemanticLinks[NS_MAIN] = true;,自定义命名空间必须手动加入该数组才会开启语义解析 - 确认
$smwgEnabledSemanticData全局开关未被设为false,该开关关闭时全站不会存储任何语义属性 - 临时关闭全站缓存(包括文件缓存、Redis/Memcached对象缓存)测试,排除旧缓存未更新导致的显示异常
- 确认
- 核查维护脚本执行是否到位
常规的后台异步重建、不带参数的脚本执行经常会出现漏跑的情况:- 进入MediaWiki站点根目录,优先执行单页强制重建命令,定位单页问题:
php extensions/SemanticMediaWiki/maintenance/rebuildData.php -v -f --page="问题页面的完整标题" - 单页重建无效时执行全量强制重建,执行时加debug参数观察解析报错:
php extensions/SemanticMediaWiki/maintenance/rebuildData.php -v -f --debug - 执行
setupStore.php后必须配套执行一次全量rebuildData.php,仅执行表结构更新不会补全历史语义数据
- 进入MediaWiki站点根目录,优先执行单页强制重建命令,定位单页问题:
- 核查属性页本身的规则冲突
- 打开
Property:Has AR Date、Property:Has AR ID两个属性的详情页,检查是否配置了超出数据类型之外的约束规则:比如误加了允许值范围、正则匹配规则、特殊取值限制,导致当前页面赋值不符合规则被自动过滤 - 确认属性页没有设置会导致调用名不一致的显示标题,SMW属性调用必须使用属性的规范名称,使用自定义显示标题赋值不会生效
- 临时禁用所有非SMW核心的语义类扩展(比如自定义属性约束、特殊语义属性类扩展),排除扩展钩子拦截语义解析流程的问题
- 打开
快速验证方案
在问题页面的最顶部添加最简单的测试赋值代码
[[Has AR ID::test_smw_123]],保存后访问页面地址?action=purge强制刷新页面缓存,再查看属性列表:
- 如果测试属性正常显示,说明问题出在原有赋值的语法、格式合规性上
- 如果测试属性依然不显示,按上述配置、脚本、扩展冲突项逐一排查即可
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

