Magento产品页面上的选择性HTML块?

时间:2012-05-13 14:31:17

标签: magento

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

例如:

分类 - 礼服,手机,全球定位系统 这些类别的HTML块:dress.phtml,phone.phtml,gps.phtml

在礼服的所有产品页面上,显示dress.phtml - 礼服尺寸表,颜色表,如何洗涤等。

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

在gps的所有产品页面上,显示gps.phtml - GPS使用,安装等。

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

谢谢!

2 个答案:

答案 0 :(得分: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值。如果您处于您要查找的某个类别的子类别中,则此将无法工作。例如,如果您的结构如下 Phone&gt;配件&gt;手机充电器产品我们只会在手机充电器产品中找到最新类别(配件)。还有其他方法可以找到分散在Google和StackOverflow中的父类别。

希望有所帮助。遗憾的是,我没有办法测试这段代码,但它应该可行。祝你好运!

答案 1 :(得分:0)

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