报错是这么冒出来的。商品三个颜色变体共用一个 sku,页面里三个 Product 实体的 sku 完全相同。Google 把三个变体合并成一个,另外两个颜色的价格和库存全都不显示。
中间走过弯路,把「offers 里的 url 都写成主商品地址」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。变体没区分 sku,主表和子表用了同一个值。少数情况下是三个变体页面 URL 不同但 canonical 互指。
还有一种情况,商品系统导出时把 sku 字段截断。
第一件事是看页面里的 sku 与 offers
curl -s https://www.example.com/p/red | grep -o '"sku":"[^"]*"'
接着检查三个变体的 canonical
for c in red blue black; do curl -s https://www.example.com/p/$c | grep -i canonical; done
给每个变体写独立 sku
UPDATE sku SET code = CONCAT(parent_code, '-', color) WHERE parent_id = 1024;
等前面都确认过,再重
新
怎么算真的好了,看的是同一批现象。三个变体各自拿到独立 sku 和自引用后,报告里分成三组,另外两个颜色的价格重新出现在搜索结果里。
补一句。变体页各自独立的前提是 sku、URL、canonical 三者都不重复,缺一个就会被合并。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
