Как мне получить новые товары из каждой категории в Magento home?


Что у меня есть: У меня установлен Magento CE 1.8.1.0

Что мне нужно: Я хочу показать несколько последних продуктов для каждой категории у себя дома, как это было сделано в доме Instacart. Instacart store home

Как я представляю решение: Это представление очень похоже на представление, созданное списком новых продуктов, однако список новых продуктов не допускает фильтрации по категориям. Поэтому я бы хотел отредактировать New.php файл для принятия категории фильтрация.

Что я пробовал: Я попытался отредактировать копию New.php в каталоге [приложение/код/локальный/Маг/Каталог/Блок/Продукт], чтобы изменить функцию _beforeHtml, как показано в этом вопросе StackOverflow, а также обновить _beforeHtml и getCacheKeyInfo при создании новой функции поддержки getCategory, как предложено в этом вопросе StackExchange. Ни то, ни другое, похоже, не работает для меня, изменения в getCacheKeyInfo заставляют блок исчезнуть в то время как другие изменения игнорируют фильтр category_id в вызове блока.

Author: Community, 2014-06-27

2 answers

Создайте local.xml под app/design/frontend/yourpackage/yourtemplate/layout/local.xml код этого файла

< ?xml version="1.0"?>
<layout version="0.1.0">
 <cms_index_index>

       <reference name="content">
            <block type="core/template" name="my_default_home_page" template="cms/home.phtml"/>
        </reference>
    </cms_index_index>

</layout>

И создайте home.phtml в разделе приложение/дизайн/интерфейс/ваш пакет/ваша табличка/шаблон/cms и код этого файла ниже

Здесь код

$catgorcollection=Mage:getModel('catalog/category')->getCollection();
foreach($catgorcollection as $category ){

$todayStartOfDayDate  = Mage::app()->getLocale()->date()
            ->setTime('00:00:00')
            ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

        $todayEndOfDayDate  = Mage::app()->getLocale()->date()
            ->setTime('23:59:59')
            ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

        $collection = Mage::getResourceModel('catalog/product_collection'); 
        $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
    $collection
            ->addMinimalPrice()
            ->addFinalPrice()
            ->addTaxPercents()
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
            ->addUrlRewrite();
$collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter('news_from_date', array('or'=> array(
                0 => array('date' => true, 'to' => $todayEndOfDayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToFilter('news_to_date', array('or'=> array(
                0 => array('date' => true, 'from' => $todayStartOfDayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToFilter(
                array(
                    array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
                    array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
                    )
              )
            ->addAttributeToSort('news_from_date', 'desc')
            ->setPageSize(7)
            ->setCurPage(1);

$collection->addCategoryFilter($category);
}
 2
Author: Amit Bera, 2014-06-27 07:56:37

Первая копия new.php файл из app\code\core\Mage\Catalog\Block\Product\New.php чтобы app\code\local\Mage\Catalog\Block\Product\New.php

Теперь отредактируйте этот файл рядом со строкой 88

protected function _getProductCollection()
{
...............
// put  here code line is near 122 
$category = Mage::getModel('catalog/category')->load($this->getData('catagory_id'));
$collection->addCategoryFilter($category);
// code end
return $collection;
}

Теперь добавьте блок в cms домашней страницы {{тип блока="каталог/product_new" catagory_id="28" шаблон="каталог/продукт/новый.phtml"}} вот 28 мой идентификатор категории, поставьте несколько символов, как указано выше, и chanege catagory_id для разных категорий

Пожалуйста, проголосуйте

 0
Author: ankit, 2014-06-27 06:24:43