Как проверить, является ли продукт новым в Magento?

Как проверить, является ли продукт новым в Magento 1.9.0.1?

Я старался:

    <?php if($_product->getNewProduct()) { ?>
...my HTML code...
<?php } ?>

но это не сработает. Что с этим не так?

2

Решение

Просто хочу сказать, что продукт is new depends on attribute от news_from_datе и news_to_date

$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
->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'))
)
)
->addAttributeToFilter('entity_id',$_product->getId())
->addAttributeToSort('news_from_date', 'desc')
->setPageSize(1)
->setCurPage(1);
if($count($collection)>0){
//new products
}
2

Другие решения

<?php

$current_date=M age::getModel( 'core/date')->date('Y-m-d');
$from_date = substr($_product->getNewsFromDate(), 0, 10);
$to_date = substr($_product->getNewsToDate(), 0, 10);
$new =  ($current_date >= $from_date && $current_date <=$ to_date) ||
($from_date=='' && $current_date <=$ to_date && $to_date !='' ) ||
($from_date !='' && $current_date>= $from_date && $to_date == '') ;
//echo $new; ?>

<?php if($new==1 ) { ?>
<label for="">
<?php echo $this->__('New') ?></label>
<?php } ?>

Код выше имеет 3 случая:

  1. с даты <= текущее время <= to_date — true -> $ new — true
  2. с неустановленной даты и текущего времени <= to_date — true -> $ new — true
  3. с даты <= текущее время и дата to_date не установлены — true -> $ new — true
2

Вы абсолютно НЕ должны конвертировать и проверять даты вручную, потому что это может вызвать проблемы с часовым поясом. Magento имеет встроенный метод isStoreDateInInterval() в Mage_Core_Model_Locale учебный класс. Таким образом, вы должны создать вспомогательный метод, который может выглядеть следующим образом

function isProductNew(Mage_Catalog_Model_Product $product)
{
$newsFromDate = $product->getNewsFromDate();
$newsToDate   = $product->getNewsToDate();
if (!$newsFromDate && !$newToDate) {
return false;
}
return Mage::app()->getLocale()
->isStoreDateInInterval($product->getStoreId(), $newsFromDate, $newsToDate);
}

Более подробную информацию вы можете найти здесь http://quicktips.ru/all/check-product-is-new/

2

К сожалению, вы не можете сделать это так просто. Не существует метода для проверки, является ли продукт новым.

Класс блока, который определен для нового продукта: Mage_Catalog_Block_Product_New и определяется в app\code\core\Mage\Catalog\Block\Product\New.php, Если вы посмотрите туда, то поймете, что не существует хорошего метода, который будет полезен для вашего использования.

Основным методом, который здесь определен, является новый метод сбора продуктов. Если вы посмотрите на этот метод, то есть на _getProductCollection()Вы можете видеть, что он использует дату начала и даты окончания (то есть мы устанавливаем для каждого продукта), чтобы сделать коллекцию. Таким образом, наилучший способ, которым вы можете достичь, — это проверить дату начала и дату окончания продукта, и она находится в пределах нашей желаемой даты, а затем выполнить коды внутри вашего if заявление. Будет кое-что похожее на это.

<?php
if (date("Y-m-d") >= substr($_product->getNewsFromDate(), 0, 10)
&& date("Y-m-d") <= substr($_product->getNewsToDate(), 0, 10)) {
//your code comes here
}
?>

Для получения дополнительной информации, вы можете использовать это нить

1

Я решил таким образом:

    <?php
$current_date = Mage::getModel('core/date')->date('Y-m-d');
$from_date = substr($_product->getNewsFromDate(), 0, 10);
$to_date = substr($_product->getNewsToDate(), 0, 10);

$new = ($current_date >= $from_date && $current_date <= $to_date) || ($from_date == '' && $current_date <= $to_date && $to_date != '') || ($from_date != '' && $current_date >= $from_date && $to_date == '') ;
?>

<?php if($new == 1) { ?>
<img src="...
<?php } ?>
1
По вопросам рекламы [email protected]