Làm cách nào để lấy url giữ chỗ hình ảnh Magento2?


8

Làm cách nào để lấy URL hình ảnh giữ chỗ trên tệp mẫu của trang danh sách sản phẩm?

Câu trả lời:


9
    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');


Xin chào saurabh có một / mất tích sau "giữ chỗ" trong khi lấy nguồn hình ảnh. Ngoài ra, $ mediaUrl phải ở trên thẻ img, vui lòng sửa lại.
aton1004

vâng cảm ơn aton, tôi biết nhưng có một số vấn đề hình thành rằng tại sao tôi làm điều đó.
Saurabh Taletiya

Tôi muốn vượt qua đường dẫn hình ảnh giữ chỗ trong API của mình, nhưng khi tôi sử dụng getDefaultPlaceholderUrl (), nó sẽ tạo đường dẫn hình ảnh như: example.com/static/version1551260928/webapi_rest/_view/en_US/ tựa
Gaurav Agrawal

6

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();

3

Để 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();

3

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'));
    }
}

2

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'));
}

0

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')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.