templates - Magento:基于属性集的模板

标签 templates magento attributes product

我想根据产品所属的属性集创建不同的产品 View : Magento 是否提供了一种方法来做到这一点?

- 更新-

我添加了以下 dan.codes 建议

$update->addHandle('PRODUCT_ATTRIBUTE_SET_ID_'.$product->getAttributeSetId());

到Mage_Catalog_ProductController(我复制了ProductController.php并将其放在local/Mage/Catalog/controllers/中)。

然后我将其添加到catalog.xml

<PRODUCT_ATTRIBUTE_SET_ID_9> // PRODUCT ID of Book Attribute Set
    <label>Catalog Product View (Book)</label>
    <reference name="product.info">
        <block type="catalog/product_view_type_book" name="product.info.book" as="product_type_data" template="catalog/product/view/attribute_set/book.phtml">
            <block type="core/text_list" name="product.info.book.extra" as="product_type_data_extra"/>
        </block>
    </reference>
</PRODUCT_ATTRIBUTE_SET_ID_9>

就在之后

<PRODUCT_TYPE_virtual translate="label" module="catalog">
    <label>Catalog Product View (Virtual)</label>
    <reference name="product.info">
        <block type="catalog/product_view_type_virtual" name="product.info.virtual" as="product_type_data" template="catalog/product/view/type/virtual.phtml">
            <block type="core/text_list" name="product.info.virtual.extra" as="product_type_data_extra"/>
        </block>
    </reference>
</PRODUCT_TYPE_virtual>

然后我创建了catalog/product/view/attribute_set/book.phtml,但它没有显示在我的产品 View 页面中。

- 更新 MAGENTO 1.5 -

我注意到处理程序更新已在最新的 Magento 版本中移动。

$update->addHandle('PRODUCT_TYPE_'.$product->getTypeId());
$update->addHandle('PRODUCT_'.$product->getId());

现在位于 Mage/Catalog/Helper/Product/View.php 中。
我已经测试过了,效果仍然很好!

最佳答案

不,不是,但您可以通过扩展 Mage_Catalog_ProductController 中的 _initProductLayout 方法来扩展功能,代码如下

    $update = $this->getLayout()->getUpdate();
    $update->addHandle('default');
    $this->addActionLayoutHandles();

    $update->addHandle('PRODUCT_TYPE_'.$product->getTypeId());
    $update->addHandle('PRODUCT_'.$product->getId());

您可以添加

$update->addHandle('PRODUCT_ATTRIBUTE_SET_ID_'.$product->getAttributeSetId());

然后在你的layout.xml中你可以有

<PRODUCT_ATTRIBUTE_SET_ID_IDHERE>
  <reference name="root">
            <action method="setTemplate"><template>template/path/here.html</template></action>
        </reference>
</PRODUCT_ATTRIBUTE_SET_ID_IDHERE>

关于templates - Magento:基于属性集的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735522/

相关文章:

c++ - 递归模板类型声明

c++ - 隐藏在类默认模板参数后面的方法中的默认模板参数

api - Magento : get shopping cart list

Magento Grid Container Block 未加载网格

c# - 从枚举属性获取枚举

C# 泛型方法值

Magento:如何在结帐页面更改送货方式标题?

c++ - 如何从 XML 文件中读取信息 C++

c++ - 如何在 ns3 中使用属性

c++ - 何时在 C++20 中使用约束实现模板