Câu trả lời:
use \Magento\Store\Model\StoreManager $storeManager
$this->storeManager = $storeManager;
$path =
catalog/placeholder/thumbnail_placeholder OR
catalog/placeholder/swatch_image_placeholder OR
catalog/placeholder/small_image_placeholder OR
catalog/placeholder/image_placeholder OR
public function getConfig($config_path)
{
return $this->storeManager->getStore()->getConfig($config_path);
}
<img src = $mediaUrl.'catalog/product/placeholder'.$this->getConfig($path) />
$mediaUrl = $this ->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
Trên Magento 2.2:
Nhận trợ giúp trong khối (phtml)
$imageHelper = $this->helper(\Magento\Catalog\Helper\Image::class);
Nhận trợ giúp toàn cầu
$imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);
Nhận Url hình ảnh giữ chỗ. Người dùng làm tham số: 'hình ảnh', 'smal_image', 'swatch_image' hoặc 'hình thu nhỏ'.
$placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');
Nếu bạn kiểm tra cài đặt cửa hàng của mình, bạn sẽ tìm thấy tùy chọn của chủ sở hữu hình ảnh Sản phẩm
Stores > Configuration > Catalog > Catalog > Product Image Placeholders
Bạn có thể gọi lấy giá trị trong khối và gọi trong tệp mẫu của bạn.
<?php
protected $_scopeConfig;
public function __construct
(
---
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
---
){
---
$this->_scopeConfig = $scopeConfig;
---
}
public function getPlaceholderImage(){
return $this->_scopeConfig->getValue('catalog/placeholder/image_placeholder'); // Base Image
$this->_scopeConfig->getValue('catalog/placeholder/small_image_placeholder'); // Small Image
$this->_scopeConfig->getValue('catalog/placeholder/swatch_image_placeholder'); // Swatch Image
$this->_scopeConfig->getValue('catalog/placeholder/thumbnail_placeholder'); // Thumbnail Image
}
Trong cuộc gọi tệp mẫu của bạn
$block->getPlaceholderImage();
Để lấy url hình ảnh giữ chỗ trên mẫu trang danh sách sản phẩm, hãy làm điều này:
$imageUrl = $block->getImage($block->getProduct(), 'category_page_grid')->getImageUrl();
Chúng ta nên xem lớp người trợ giúp Magento \Magento\Catalog\Helper\Image
Ví dụ :
<?php
namespace Vendor\Module\Helper;
use Magento\Catalog\Helper\ImageFactory as HelperFactory;
use Magento\Framework\View\Asset\Repository;
class Image
{
/**
* @var HelperFactory
*/
protected $helperFactory;
/**
* @var Repository
*/
protected $assetRepos;
/**
* Image constructor.
* @param HelperFactory $helperFactory
* @param Repository $repository
*/
public function __construct(
HelperFactory $helperFactory,
Repository $repository
) {
$this->assetRepos = $repository;
$this->helperFactory = $helperFactory;
}
/**
* Get image url
*
* @param $product
* @param $imageId
* @return mixed
*/
public function getImageUrl($product, $imageId = null)
{
/** @var \Magento\Catalog\Helper\Image $helper */
if ($imageId == null) {
$imageId = 'cart_page_product_thumbnail';
}
$helper = $this->helperFactory->create()
->init($product, $imageId);
return $helper->getUrl();
}
/**
* Get small place holder image
*
* @return string
*/
public function getPlaceHolderImage()
{
/** @var \Magento\Catalog\Helper\Image $helper */
$helper = $this->helperFactory->create();
return $this->assetRepos->getUrl($helper->getPlaceholder('small_image'));
}
}
Trong khối, sử dụng phương pháp sau:
public function getPlaceholderImage() {
return sprintf('<img src="%s"/>', $this->getViewFileUrl('Magento_Catalog::images/product/placeholder/thumbnail.jpg'));
}
Nếu bạn đang cố gắng để có được nó trong bất kỳ tập tin mẫu. Bạn sẽ cần người trợ giúp hình ảnh của Magento.\Magento\Catalog\Helper\Image::class
Bạn có thể lấy một ví dụ như thế này ở đầu bất kỳ tệp .phtml nào
$imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);
và nhận đường dẫn đến url hình ảnh giữ chỗ như thế này
$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')