Shopware 5 - 遍历所有属性

Shopware 5 - Looping through all attributes

你好,我需要一些关于购物软件的帮助。 我的问题可能很基本,但我无法完成。我想打印出一篇文章的属性。在 shopware 文档中,他们称它们为 {$sArticle.attr1} 直到 {$sArticle.attr20} 但它们也可以有不同的名称,所以我不能直接引用名称,而是我只想打印几个属性。

到目前为止,我知道所有属性都存储在 s_articles_attributes 数据库 table 中,我只想在列名包含 ='artikelattribut_'[=12 时打印出这些列=]

代码将在 frontend/detail/tabs 的 table 中实现 --> description.tpl

实际 table 已经使用 $sArticle.sProperties 并且代码如下所示:

{if $sArticle.sProperties}
            <div class="product--properties panel has--border">
                <table class="product--properties-table">
                    {foreach $sArticle.sProperties as $sProperty}
                        <tr class="product--properties-row">
                            {* Property label *}
                            {block name='frontend_detail_description_properties_label'}
                                <td class="product--properties-label is--bold">{$sProperty.name|escape}:</td>
                            {/block}

                            {* Property content *}
                            {block name='frontend_detail_description_properties_content'}
                                <td class="product--properties-value">{$sProperty.value|escape}</td>
                            {/block}
                        </tr>
                    {/foreach}


</table>
</div>
{/if}

问题是 $sArticle.sProperties 和 {$sArticle.attr1} 到 {$sArticle.attr20} 是不同的。我想要的只是第二个 {foreach} 循环抛出所有文章属性也许这个想法变得清晰:

{foreach $sArticle.attr FROM s_articles_attributes WHERE name contains='artikelattribut_'}

我希望有人能理解我的问题。感谢您的任何建议。 谢谢

首先,请记住,“属性”和“属性”在 Shopware 中的含义与您可能从其他商店系统中了解到的有所不同。

“属性”用于产品的特性,例如产品的味道或颜色。

Shopware 中的“属性”与通常意义上的属性没有任何关系。您可以为几乎每个实体找到这些 *_attributes 表,它们更像是自定义字段或列,您可以将它们添加到实体以使用自定义数据扩展它们。

现在回到你的问题。试试这个:

{foreach $sArticle.attributes.core->toArray() as $attributeName => $attribute}
    {$attributeName|var_dump}
    {$attribute|var_dump}
{/foreach}

有两种方法可以访问产品的属性。

  1. 所有属性都直接分配给 $sArticle 变量,您可以使用它们,正如您在文中所述。
  2. 属性也存储在 $sArticle.attributes 中,您可以在其中找到不同类型的属性。默认情况下,详细信息页面上的产品为 coremarketing。请注意,这些键的值是 Shopware\Bundle\StoreFrontBundle\Struct\Attribute 类型的对象。这就是为什么我们需要调用 toArray 方法来获取一个我们可以迭代的数组。