1

How to get the product by price range through object manager in phtml file. Like following

Get product where price is greater than 1 and less than 25

Abdullah Shahid
  • 329
  • 1
  • 4
  • 19

3 Answers3

2

Try it.

<?php

//$productId = 100;
$sku = "testsku";
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$prodCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');

$collection = $prodCollection->create()
            ->addAttributeToSelect('*')
            ->addAttributeToFilter('price', array('in' => range(1, 25)));
foreach ($collection as $product){
     echo 'Name =  '.$product->getName().'<br>';
     echo 'Id  =  '.$product->getId().'<br>';
     echo 'Sku  =  '.$product->getSku().'<br>';
     echo 'Image' =  '.$product->getImage().'<br>';
}  

?>
Ravindrasinh Zala
  • 2,125
  • 3
  • 14
  • 46
0

create a object of abstractProduct Block then call the getProductPrice method and pass product object as parameter. see below.

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$abstractProductBlock = $block->getLayout()->createBlock('\Magento\Catalog\Block\Product\AbstractProduct');

$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collection = $productCollection->create()
            ->addAttributeToSelect('*')
            ->addAttributeToSort('created_at', 'DESC')
            ->setPageSize(8)
            ->load();
?>
<div>
    <?php foreach ($collection as $product) :?>
        <div class="item-box">
            <a href="<?php echo $product->getProductUrl(); ?>" >
                <span class="imgbx">
                    <img src="<?php echo $abstractProductBlock->getImage($product, 'latest_collection_list')->getImageUrl(); ?>" alt="<?php echo $product->getName(); ?>" />
                </span>
                <h3><?php echo $product->getName(); ?></h3>
                <span class="hm-price"><?php echo $abstractProductBlock->getProductPrice($product) ?></span>
            </a>
        </div>
    <?php endforeach;  ?>
</div>
?>
Ashna
  • 518
  • 3
  • 16
0

Try this.

<?php

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$products = $objectManager->create("Magento\Catalog\Model\Product")->getCollection()
            ->addAttributeToFilter('price', array('in' => range(1, 25)));

foreach ($products as $product) {
    echo "<pre>";
    print_r($product->getData());
}
Dinesh Yadav
  • 6,447
  • 2
  • 23
  • 50