Коллекция продуктов Magento дешевле первоначальной цены

magento.stackexchange https://magento.stackexchange.com/questions/101345

Вопрос

Как получить специальную цену дешевле или нет

  <?php 

$categoryIds = array(469);//category id

$todayDate = date('m/d/y');
        $tomorrow = mktime(0, 0, 0, date('m'), date('d'), date('y'));
        $tomorrowDate = date('m/d/y', $tomorrow);

$collection = Mage::getModel('catalog/product')
                             ->getCollection()
                             ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
                             ->addMinimalPrice()->addFinalPrice()
                             ->addAttributeToSelect('*')
                             ->addAttributeToFilter('category_id', array('in' => $categoryIds))
                             ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))

                             ->addFinalPrice()

                   ->getSelect()
                   ->where('price_index.final_price < price_index.price')


                             ->addAttributeToFilter('special_to_date', array('or'=> array(
                                0 => array('date' => true, 'from' => $tomorrowDate))
                                ), 'left')




?>

Я хочу отобразить, если специальная цена меньше первоначальной цены, как это получить?

Это было полезно?

Решение

    $categoryIds = array(469);//category id



    $products = Mage::getResourceModel('catalog/product_collection')

->addCategoryFilter(Mage::getModel('catalog/category')->load($categoryIds));
$_productCollection = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter('entity_id', array('in' => $products->getAllIds()));;
$_productCollection->addAttributeToSelect(array(
                                   'image',
                                   'name',
                                   'short_description'
                   ))
                   ->addFieldToFilter('visibility', array(
                               Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
                               Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
                   )) 
                   ->addFinalPrice()

                   ->getSelect()
                   ->where('price_index.final_price < price_index.price')


                   print_r($_productCollection->getAllIds());
.

Другие советы

Добавь ->addMinimalPrice()->addFinalPrice() в коллекцию для получения цены.

Хорошая вещь, которую нужно сделать, - это использовать Mage_Catalog_Model_Layer занятие по подготовке ваших коллекций товаров.Повышает производительность (в отличие от простого использования подстановочного знака в addAttributeToSelect) и полностью подготавливает вашу коллекцию, точно так же, как это происходит в списках товаров общей категории.

Так, например, вы бы сделали что-то вроде этого:

$products = Mage::getModel('catalog/layer')
    ->setCurrentCategory(469)
    ->getProductCollection();

Насколько я знаю (не тестировал это прямо сейчас), он должен автоматически применять специальную цену и все, что вам нужно для создания списка товаров.Делать это самому - значит напрашиваться на неприятности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top