I want need to show New label on new product in product list page.
Help me for the achieve this task.
How can it will Show in magento2 ?
Magento Stack Exchange is a question and answer site for users of the Magento e-Commerce platform. It only takes a minute to sign up.
Sign up to join this communityI want need to show New label on new product in product list page.
Help me for the achieve this task.
How can it will Show in magento2 ?
Propably the best option is to add new helper with following code:
<?php
namespace Vendor\Module\Helper;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Catalog\Model\Product as ModelProduct;
use Magento\Store\Model\Store;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
class HelperName extends \Magento\Framework\Url\Helper\Data
{
/**
* @var TimezoneInterface
*/
protected $localeDate;
public function __construct(
\Magento\Framework\App\Helper\Context $context,
TimezoneInterface $localeDate
) {
$this->localeDate = $localeDate;
parent::__construct($context);
}
public function isProductNew(ModelProduct $product)
{
$newsFromDate = $product->getNewsFromDate();
$newsToDate = $product->getNewsToDate();
if (!$newsFromDate && !$newsToDate) {
return false;
}
return $this->localeDate->isScopeDateInInterval(
$product->getStore(),
$newsFromDate,
$newsToDate
);
}
}
Then in .phtml file use this:
$helper = $this->helper('Vendor\Module\Helper\HelperName');
and in products foreach
:
<?php if($helper->isProductNew($_product)): ?>
Your label code here
<?php endif; ?>
\Magento\Framework\Url\Helper\Data
instead of \Magento\Framework\App\Helper\AbstractHelper
?
Feb 7, 2018 at 16:21
Create helper and add code.
<?php
namespace Vendor\Module\Helper;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
class Newlabel extends \Magento\Framework\Url\Helper\Data
{
/**
* @var TimezoneInterface
*/
protected $localeDate;
public function __construct(
TimezoneInterface $localeDate
) {
$this->localeDate = $localeDate;
}
public function isProductNew($product)
{
$newsFromDate = $product->getNewsFromDate();
$newsToDate = $product->getNewsToDate();
if (!$newsFromDate && !$newsToDate) {
return false;
}
return $this->localeDate->isScopeDateInInterval(
$product->getStore(),
$newsFromDate,
$newsToDate
);
}
}
Add below code to list.phtml file (in foreach)
<?php $helper = $this->helper('Vendor\Module\Helper\Newlabel'); ?>
<?php if($helper->isProductNew($_product)): ?>
<div class="new-lable">
<?php echo __('New'); ?>
</div>
<?php endif; ?>
And finally it will show NEW label in product list page. Working Great.