记录一下那天晚上的排查过程。面包屑在页面上显示正常,结构化数据校验却一直报层级缺失。实际输出的 BreadcrumbList 里只有第一项和最后一项,中间两层被模板里的条件判断吃掉了。

刚开始盯着「itemListElement 按数组键顺序输出,中间键被跳过」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。中间层渲染依赖分类是否存在子级,为空时整段不输出。少数情况下是层级用 ul 嵌套表达,抽取时只读到第一个 li。

另外,末项也带了链接,被判定为无效的自指环节。

取线上页面的 JSON-LD 看条目数

curl -s https://www.lu0.cn/1.html | grep -o '"position":[0-9]'

随后改成扁平数组逐项输出

中间层没有子级时仍然输出分类本身

curl -s https://www.lu0.cn/cat/ | grep -c 'BreadcrumbList'

末项去掉链接只留文本

别只看报错消失,验证要多做一步。校验工具显示三项齐全且 position 连续,必应结果里文章标题下重新出现三级路径。

补一句。层级缺失多半是渲染条件造成的,结构化数据要按数据本身输出,别跟着页面显示逻辑一起省略。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189