在magento中,如何针对不同的不同类别显示不同的list.phtml和view.phtml?

时间:2014-03-11 06:15:36

标签: php magento-1.7

我想为不同的类别展示不同的 list.phtml view.phtml

我的代码是:

<CATEGORY_4>
    <reference name="product_list">
    <action method="setTemplate"><name>catalog/product/list_new.phtml</name></action>
</reference>
</CATEGORY_4>

3 个答案:

答案 0 :(得分:6)

您的代码将帮助您针对不同类别使用不同的 list.phtml 。要为不同的类别产品使用不同的 view.phtml ,您必须设置不同的属性属性集并为不同的属性集分配不同的模板。检查此链接以了解如何操作 Magento: template based on attribute set

OR

如果类别页面和产品视图页面都使用相同的页面布局,例如:类别页面和产品视图页面使用1column.phtml页面布局,您可以使用不同的 list.phtml 和<对于不同类别的strong> view.phtml ,请按照以下步骤操作。

  1. 在管理面板中转到目录&gt;管理类别
  2. 选择要更改list.phtml
  3. 的类别
  4. 选择“自定义设计”标签。
  5. 将“使用父类别设置”设置为“否”,将“应用于产品”设置为“是”。
  6. 在“自定义布局更新”部分
  7. 中添加此项
      <reference name="product_list">
           <action method="setTemplate"><name>catalog/product/your-list-filename.phtml</name></action>
      </reference>
      <reference name="product.info">
            <action method="setTemplate"><template>catalog/product/your-view-filename.phtml</template></action>
      </reference>
    

    对要更改的所有类别重复此操作。

答案 1 :(得分:0)

感谢您的帖子。 我刚用过这个

<reference name="product.info">
    <action method="setTemplate"><template>catalog/product/your-view-filename.phtml</template> </action>
</reference>

它工作正常。但如果我在多个类别中设置一个产品,那么它就不会处理布局。它调用相同的文件“your-view-filename.phtml”。即使我从这两个类别中经历过。

答案 2 :(得分:0)

使用方法:

<reference name="product.info">
    <action method="setTemplate"><template>catalog/product/your-view-filename.phtml</template> </action>
</reference>

产品布局仅在您从已定义产品的类别页面访问产品时应用。例如,如果您从主页访问产品,则不会应用该产品。我所做的将布局应用于属于已定义类别的所有产品的方法是从Mage_Catalog_Model_Design重写函数getDesignSettings():

public function getDesignSettings($object)
{
    if ($object instanceof Mage_Catalog_Model_Product) {
        $customCat = 'XX';
        $productCats = $object->getAvailableInCategories();

        if (in_array($customCat, $productCats))
            $currentCategory = Mage::getModel('catalog/category')->load($customCat);
        else
            $currentCategory = $object->getCategory();
    } else {
        $currentCategory = $object;
    }

    $category = null;
    if ($currentCategory) {
        $category = $currentCategory->getParentDesignCategory($currentCategory);
    }

    if ($object instanceof Mage_Catalog_Model_Product) {
        if ($category && $category->getCustomApplyToProducts()) {
            return $this->_mergeSettings($this->_extractSettings($category), $this->_extractSettings($object));
        } else {
            return $this->_extractSettings($object);
        }
    } else {
         return $this->_extractSettings($category);
    }
}