商品有多个规格,价格区间是 99 到 299,结构化数据用了 AggregateOffer 只写了 price,测试工具报 lowPrice 必填,富媒体展示一直不出现。
排查方向其实有限,先把可能性排一排。AggregateOffer 必须提供 lowPrice 和 priceCurrency;只写 price 会被当成单值,与 AggregateOffer 类型冲突;highPrice 可省略,但 lowPrice 不能省;多规格页面的 offers 被输出成数组,解析器只读了第一个。
第一件事是抓取页面里的 offers 结构
curl -s https://www.example.com/product/1024/ | findstr /i lowPrice
接着确认规格价格区间
SELECT MIN(price) AS low, MAX(price) AS high FROM sku_price WHERE product_id=1024;
补上 lowPrice 与 highPrice
echo json_encode(['lowPrice'=>99,'highPrice'=>299,'priceCurrency'=>'CNY']);
复验富媒体报告
curl -s https://www.example.com/product/1024/ | findstr /c:"AggregateOffer"
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
改完先别撤,确认这几项。补全区间字段后测试通过,一周后商品在搜索结果里带上了价格区间。
补一句。用 AggregateOffer 就别再写单个 price,两种字段混在一起,解析器只会挑一个读。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
