Шаблон просмотра товаров Magento на основе категории - PullRequest
11 голосов
/ 22 марта 2012

Мы работаем над интернет-магазином 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>

* РЕДАКТИРОВАТЬ * Я попытался добавить этот код в catalog.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>

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

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

Вы имели в виду список каталогов категорий? Тогда вы можете попробовать «Обновление пользовательского макета».

  • Каталог -> Управление категориями
  • Выберите пользовательский макет из «Макет страницы»
  • Добавьте следующее в «Обновление пользовательского макета»
<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 есть ошибка в обновлении Custom Layout Update с идентификатором проблемы 7625. Они были исправлены в следующем выпуске через Bug Track, но проблема остается. Итак, Ingo Weseloh сделал патч, который вы можете найти по следующей ссылке.

Повтор Exanto 7625

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

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

<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>

0 голосов
/ 10 апреля 2014
$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';

}              
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...