Шаблон модели продукта Magento, основанный на категории

Мы работаем над интернет-магазином Magento, который имеет две категории.

Мы хотели бы использовать шаблон представления продукта по умолчанию для первой категории и шаблон пользовательского вида продукта для второй категории.

Возможно ли это и как мы можем это достичь?

* РЕДАКТИРОВАТЬ - РЕШЕНИЕ *

Для тех, кто интересуется этим. Решение было намного проще, чем я думал.

Мне нужно было разместить этот фрагмент кода в разделе обновления пользовательского макета соответствующей категории, и мне пришлось установить для параметра "Применить к продуктам" значение "Да"

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

* РЕДАКТИРОВАТЬ * Я попытался добавить этот код в файл catalog.xml.

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

* РЕДАКТИРОВАТЬ * Я попытался добавить этот код в каталог .xml:

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

И этот код в разделе "Обновление пользовательского макета":

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

Я установил патч, но, к сожалению, результатов не удалось.

Ответ 1

Вы имели в виду список каталогов категорий? Затем вы можете попробовать "Custom Layout Update".

  • Каталог → Управление категориями
  • Выберите пользовательский макет из "Макет страницы"
  • Добавьте в "Custom Layout Update" следующее:
<reference name="product_list">
<action method="setTemplate">
    <template>catalog/product/custom-theme.phtml</template>
</action>
</reference>

Конечно, вы должны создать первый custom layout, вы можете взять ссылку из базы list.phtml

* РЕДАКТИРОВАТЬ * Если вы хотите настроить определенные продукты/категории, вы можете использовать custom layout handle. Рассмотрим следующие ссылки.

* РЕДАКТИРОВАТЬ * Сначала вы должны изменить метод CategoryController.php viewAction() из папки /app/code/core/Mage/Catalog/Controllers (как указано в примере Inchoo).

Затем вы должны сделать что-то вроде этого:

<CATEGORY_20>
<reference name="product.info">
            <action method="setTemplate"><template>catalog/product/custom-theme.phtml</template></action>
    </reference>
</CATEGORY_20>

* РЕДАКТИРОВАТЬ * У Magento есть ошибка об обновлении пользовательского макета, который является номером 7625. Они указали исправленную в следующей версии по Bug Track, но все еще есть проблема. Итак, Ingo Weseloh сделал патч, который вы можете найти по следующей ссылке.

Exanto Reclayup 7625

* РЕДАКТИРОВАТЬ *

Майкл, не могли бы вы попробовать это (это Алан Шторм sugestion)

<CATEGORY_20>
<reference name="product.info">
  <action method="setTemplate"><template>catalog/product/custom-theme.phtml</template></action>
  <action method="setIsHandle"><applied>1</applied></action>
</reference>

Ответ 2

$category_id = 14; // if you know static category then enter number

$catagory_model = Mage::getModel('catalog/category')->load($category_id); //where $category_id is the id of the category

$collection = Mage::getResourceModel('catalog/product_collection');

$collection->addCategoryFilter($catagory_model); //category filter

$collection->addAttributeToFilter('status',1); //only enabled product

$collection->addAttributeToSelect(array('name','url','small_image')); //add product attribute to be fetched

//$collection->getSelect()->order('rand()'); //uncomment to get products in random order     

$collection->addStoreFilter();          

if(!empty($collection))

{

        foreach ($collection as $_product):?>

        <a href="<?php echo $_product->getProductUrl();?>"><img src="<?php echo Mage::helper('catalog/image')->init($_product, 'small_image')->resize(197, 167); ?>" />   </a>  

 <?php   endforeach;

}else

    {

        echo 'No products exists';

}