我想在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)?
谢谢!
答案 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。