Как я могу заказать последние продукты в Magento? - PullRequest
3 голосов
/ 18 марта 2011

Я пытаюсь показать последние продукты в моем магазине magento.

Что такое недавний продукт?Он определяется по двум критериям:

  • create_at
  • news_from_date

Я бы хотел заказать мой товар без разницы между созданным_ат & новостью_от_даты, а не одним критериемпервый и второй после.

Есть идеи?

Я уже попробовал следующий код:

->addAttributeToSort('created_at, news_from_date', 'desc')

ИЛИ

->addAttributeToSort('news_from_date', 'desc')
->addAttributeToSort('created_at', 'desc')

ИЛИ

->addAttributeToSort(array('created_at' => 'desc', 'news_from_date' => 'desc'))

ИЛИ

->addAttributeToSort(array('created_at', 'news_from_date'), 'desc'))

Ответы [ 4 ]

1 голос
/ 18 марта 2011

В предложениях порядка SQL нет «ИЛИ», поэтому вам нужно найти способ свести проблему к одному столбцу. Следующее не проверено, но должно дать вам представление.

// Make sure the correct attributes are available with names we choose.
$products->addAttributeToSelect('created_at, news_from_date');

// Choose the LATEST date to sort as it is the most RECENT.
$products->addOrder('MAX(created_at, news_from_date)', 'desc');
0 голосов
/ 19 июня 2015

Лучше:

$_productCollection = $this->getLoadedProductCollection()->clear()->addAttributeToSort('created_at', 'DESC')->setPageSize(4);
0 голосов
/ 11 мая 2011

Я бы рекомендовал использовать news_from_date вместо даты создания. Это дает вам возможность создавать контент заблаговременно, но при публикации все равно отображается в правильном порядке.

0 голосов
/ 21 марта 2011

Вы можете заказать / отсортировать новейшие продукты одновременно по атрибутам create_at и news_from_date .

Вот код, позволяющий сделать это: -

$todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

$collection = Mage::getModel('catalog/product')
                ->getCollection()                   
                ->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
                ->addAttributeToFilter('news_to_date', array('or'=> array(
                    0 => array('date' => true, 'from' => $todayDate),
                    1 => array('is' => new Zend_Db_Expr('null')))
                ), 'left')
                ->addAttributeToSort('news_from_date', 'desc')
                ->addAttributeToSort('created_at', 'desc');

Спасибо.

...