0

我想在 Magento 中特定类别的所有产品页面上显示特定的 HTML 块。

例如:

类别 - 连衣裙、电话、gps 这些类别的 HTML 块:dress.phtml、phone.phtml、gps.phtml

在dress中的产品的所有页面上,都显示dress.phtml——礼服尺码表、颜色表、如何洗涤等。

在手机产品的所有页面上,都会显示phone.phtml - 电池保养,我们如何包装手机等。

在gps中的所有产品页面上,都会显示gps.phtml——GPS使用、安装等。

你明白了。我怎样才能在 Magento 中做到这一点?如何按产品类别在 catalog/product/view.phtml 中调用不同的 PHTML 文件(dress.phtml、phone.phtml 或 gps.phtml)?

谢谢!

4

2 回答 2

1

这可以通过对您的catalog/product/view.phtml文件和自定义主题的layout/local.xml文件进行一些修改来轻松实现。

让我们从修改 local.xml 开始。打开它并输入/复制并粘贴以下代码:

<catalog_product_view>
    <reference name="content">
        <reference name="product.info">
            <block type="catalog/product_view" name="product.dress" as="productDress" template="wherever/you/keep/dress.phtml" />
            <block type="catalog/product_view" name="product.phone" as="productPhone" template="wherever/you/keep/phone.phtml" />
            <block type="catalog/product_view" name="product.gps" as="productGps" template="wherever/you/keep/gps.phtml" />
        </reference>
    </reference>
</catalog_product_view>

我们通过修改 local.xml 所做的基本上是使您的新模板可用于product.info块中的catalog/product/view.phtml文件。块类型是 *catalog/product_view* 因此我们可以访问catalog/product/view.phtml中可用的所有相同信息和方法。然后我们可以在 view.phtml 中写一点代码来决定输出什么块

$_currentCategory = Mage::registry('current_category');
if ($_currentCategory->getId() == id of dress category) {
    echo $this->getChildHtml('productDress');
} elseif ($_currentCategory->getId() == id of phone category) {
    echo $this->getChildHtml('productPhone');
} elseif ($_currentCategory->getId() == id of gps category) {
    echo $this->getChildHtml('productGps');
}

我们在这里所做的只是检查产品的当前类别并输出相关的块。当然,您需要将“ _ __类别的 ID”替换为适当的类别 ID 值。如果您位于您想要查找的类别之一的子类别中,这将不起作用。例如,如果您的结构如下电话 > 配件 > 手机充电器产品,我们只会在手机充电器产品中找到最新的类别(配件)。还有其他方法可以找到分散在 Google 和 StackOverflow 中的父类别。

希望有帮助。不幸的是,我没有办法测试这段代码,但它应该可以工作。祝你好运!

于 2012-05-13T18:26:10.730 回答
0

$product->getCategoryIds() 可以为您提供产品所属的类别 ID。

于 2012-05-13T18:34:17.813 回答