I want to get image url of product showing ,on product description page in phtml file. any help ?
3 Answers
Try this
$product = $block->getProduct();
$imageUrl = $this->helper('Magento\Catalog\Helper\Image')
->init($product, 'product_base_image')
->constrainOnly(true)
->keepAspectRatio(true)
->keepTransparency(true)
->keepFrame(false)
->resize(150, 150)->getUrl();
-
thank you working fine. can I ask a small thing ? I want to show that image on a button click on pdp page aswell. I which I file code this ?– LearnerCommented Jan 18, 2018 at 9:27
use Magento\Catalog\Helper\Image;
/**
* Catalog Image Helper
*
* @var Image
*/
protected $imageHelper;
public function __construct(
Image $imageHelper
) {
$this->imageHelper = $imageHelper;
}
private function getAllSizeImages(ModelProduct $product, $imageFile)
{
return [
'large' => $this->imageHelper->init($product, 'product_page_image_large_no_frame')
->setImageFile($imageFile)
->getUrl(),
'medium' => $this->imageHelper->init($product, 'product_page_image_medium_no_frame')
->setImageFile($imageFile)
->getUrl(),
'small' => $this->imageHelper->init($product, 'product_page_image_small')
->setImageFile($imageFile)
->getUrl(),
];
}
-
1Down voted as it's recommended to not use the object manager directly - See magento.stackexchange.com/questions/117098/… for more info Commented Jan 18, 2018 at 9:50
-
This worked for me
// Step 1: In your custom or block class add a variable $_image
protected $_image;
// Step 2: Injecting a class ( Magento\Catalog\Helper\Image ) into constructor
public function __construct(
Magento\Catalog\Helper\Image $_image
) {
$this->_image = $_image;
}
// Step 3: Create a custom function
public function getProductImageUrl($product)
{
return $this->_image->init($product, 'product_base_image')->constrainOnly(FALSE)
->keepAspectRatio(TRUE)
->keepFrame(FALSE)
->getUrl();
}
and at last in your respective custom phtml call the getProductImageUrl
method in that pass respective $poduct
object.