簡體   English   中英

如何在Shopware 6 App中添加實體擴展?

[英]How to add entity extension in Shopware 6 App?

我想查詢某個Shopware app的商品listing中商品的分類,這樣就可以查詢到所有分類的customFields。 這甚至可以通過應用程序實現嗎?

我已經嘗試通過導航頁面加載。 當我覆蓋 box-standard.html.twig 並訪問產品時,我無法訪問那里的類別。

對於每個產品,我都想要類別擴展

在此處輸入圖像描述

如果我對你的問題的理解正確,那么你正試圖在店面邏輯的某個部分(如 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.categoriesbox-standard.html.twig模板中訪問類別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM