[英]How to add entity extension in Shopware 6 App?
如果我對你的問題的理解正確,那么你正試圖在店面邏輯的某個部分(如 Twig 模板)中訪問產品類別的自定義字段。
在我看來,您必須添加一個腳本,使您能夠查詢存儲庫中的類別及其自定義字段。 問題是, SalesChannelProductEntity
不會包含有關其所有類別的信息(僅SeoCategory
),因此您可能需要先查詢product_category
存儲庫。
一般來說,它會很復雜,但應該是可行的。
由於沒有為列表中的產品加載categories
關聯,您必須使用應用腳本獲取categories
。
如前所述,將腳本添加到navigation-page-loaded
掛鈎,即在Resources/scripts/navigation-page-loaded/category-loader.twig
:
{% set products = [] %}
{% if hook.page.cmsPage.type === 'product_list' %}
{% foreach hook.page.cmsPage.sections as section %}
{% foreach section.blocks as sectionBlock %}
{% if sectionBlock.type !== 'product-listing' %}
{% continue %}
{% endif %}
{% foreach sectionBlock.slots as slot %}
{% if slot.type !== 'product-listing' %}
{% continue %}
{% endif %}
{% foreach slot.data.listing.entities as product %}
{% set products = products|merge([product]) %}
{% endforeach %}
{% endforeach %}
{% endforeach %}
{% endforeach %}
{% endif %}
{% set categoryIds = products|reduce((carry, v) => carry|merge(v.categoryIds), []) %}
{% if categoryIds %}
{% set categories = services.repository.search('category', {'ids': categoryIds}) %}
{% foreach products as product %}
{% do product.addArrayExtension('myCategories', {
'categories': categories.entities.getList(product.categoryIds),
}) %}
{% endforeach %}
{% endif %}
我們首先提取所有產品,然后一次加載所有產品的類別,然后將類別分配回產品。
請注意,要讀取類別實體,您需要正確的權限,即在manifest.xml
中添加:
<permissions>
<read>category</read>
<read>category_translation</read>
</permissions>
現在您應該能夠使用product.extensions.myCategories.categories
在box-standard.html.twig
模板中訪問類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.