Trong bài viết này tôi sẽ hướng dẫn các bạn cách để get product image url trong Magento 2.
Contents
1. Get product image url trong block
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?<em>php
</em>namespace VendorExtensionBlock;
use MagentoFrameworkViewElementTemplate;
use MagentoCatalogHelperImage;
use MagentoCatalogModelProductFactory;
use MagentoFrameworkViewElementTemplateContext;
class Extension extends Template
{
protected $imageHelper;
protected $productFactory;
public function __construct(Image $imageHelper, ProductFactory $productFactory, Context,)
{
$this->imageHelper = $imageHelper;
$this->productFactory = $productFactory;
}
public function getProductImageUrl($id)
{
try {
$product = $this->productFactory->create->load($id);
} catch (NoSuchEntityException $e) {
return ‘Data not found’;
}
$url = $this->imageHelper->init($product, ‘product_thumbnail_image’)->getUrl();
return $url;
}
}
|
2. Get product image url trực tiếp trong template
1
|
$this-><strong>helper</strong>(‘ MagentoCatalogHelperImage’)->init($product, ‘product_thumbnail_image’)->getUrl();
|
3. Get default Placeholder image url
Placeholder image được sử dụng khi các hình ảnh đang sử dụng bị lỗi hoặc không tìm thấy. Lúc đó bạn có thể xử lý để lấy ảnh mặc định khi cần thiết.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?php
namespace ViMagentoHelloWorldBlock;
<em>/**
* Class Placeholder
* </em><strong><em>@package </em></strong><em>ViMagentoHelloWorldBlock
*/
</em>class Placeholder extends MagentoFrameworkViewElementTemplate
{
<em>/**
* </em><strong><em>@var </em></strong><em>MagentoFrameworkViewAssetRepository
*/
</em>protected $assetRepository;
<em>/**
* </em><strong><em>@var </em></strong><em>MagentoCatalogHelperImageFactory
*/
</em>protected $helperImageFactory;
<em>/**
* Placeholder constructor.
* </em><strong><em>@param </em></strong><em>MagentoFrameworkViewElementTemplateContext $context
* </em><strong><em>@param </em></strong><em>MagentoFrameworkViewAssetRepository $assetRepository
* </em><strong><em>@param </em></strong><em>MagentoCatalogHelperImageFactory $helperImageFactory
* </em><strong><em>@param </em></strong><em>array $data
*/
</em>public function __construct(
MagentoFrameworkViewElementTemplateContext $context,
MagentoFrameworkViewAssetRepository $assetRepository,
MagentoCatalogHelperImageFactory $helperImageFactory,
array $data = []
) {
$this->assetRepository = $assetRepository;
$this->helperImageFactory = $helperImageFactory;
parent::<em>__construct</em>($context, $data);
}
<em>/**
* </em><strong><em>@return </em></strong><em>mixed
*/
</em>public function getPlaceHolderImage()
{
$imagePlaceholder = $this->helperImageFactory->create();
return $this->assetRepository->getUrl($imagePlaceholder->getPlaceholder(‘small_image’));
}
}
|
Sau đó trong template phtml bạn có thể get placeholder image url bằng cách gọi đến hàm bên trên:
1
2
3
4
|
<?php
$placeholderUrl = $block->getPlaceHolderImage();
?>
<img src=“<?php echo $placeholderUrl; ?>“ alt=“placeholder” />
|