Vue Storefront:显示自定义属性过滤器的标签而不是选项 id

Vue Storefront: Display labels for custom attribute filter instead of option id

这几天我一直在努力弄清楚如何在类别页面上显示过滤器标签。如文档中所述,我在 config.products.defaultFilters[] 中添加了属性,过滤器已开始在那里显示。

我有 colorbrand 过滤器。对于滤色器,我已将颜色 ID 映射到 config.products.colorMappings 中的颜色名称,因此它在那里可以正确显示。但是对于品牌,我可以做同样的事情,但它是一个静态解决方案,所以每次管理员添加新品牌时,我都需要添加它的映射并重新构建店面。

我试过查看他们的论坛,但没有任何用处。我检查了 Vue Storefront vuex catalogcategory-next 商店的提示,但在那里找不到任何相关的东西。

brand_filter 下选项的标签应该是可读的,但它显示了品牌属性选项的 id

好的,在花了几天时间寻找这个问题的解决方案后,我终于从这个 answer 中得到了提示。

我正在使用主题 vsf-capybara,根据它的指南,我从 generate-local-config.js 生成了一个 local.json 并手动将配置从 local.json 合并到config/local.json 文件。在此之前,主配置文件中没有添加名为品牌或颜色的过滤器。

导致过滤器标签不正确的配置 属性 是 entities.attribute.loadByAttributeMetadata 并且设置为 true 我将其更改为 false 因为 core/module/catalog/CatalogModule 有一个动作attribute/list 需要调度以供应用程序使用。因此,如果 config/local.json 中的 entities.attribute.loadByAttributeMetadata 设置为 true,则不会调度此操作。以下是 CatalogModule 的摘录:

if (!config.entities.attribute.loadByAttributeMetadata) {
    await store.dispatch('attribute/list', { // loading attributes for application use
      filterValues: uniq([...config.products.defaultFilters, ...config.entities.productListWithChildren.includeFields])
    })
}