Bagaimana cara mendapatkan url gambar placeholder Magento2?

8

Bagaimana cara mendapatkan URL gambar placeholder di file templat halaman daftar produk saya?

aton1004
sumber

Jawaban:

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

Di Magento 2.2:

  • Dapatkan Pembantu di Blokir (phtml)
    $imageHelper = $this->helper(\Magento\Catalog\Helper\Image::class);

  • Dapatkan Helper Global
    $imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);

  • Dapatkan Url Gambar Placeholder. Pengguna sebagai parameter: 'gambar', 'smal_image', 'swatch_image' atau 'thumbnail'.
    $placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');

Saurabh Taletiya
sumber
Hai saurabh ada / hilang setelah "placeholder" saat mendapatkan sumber gambar. $ MediaUrl juga harus di atas tag img, mohon koreksi.
aton1004
ya terima kasih aton, saya tahu tetapi ada beberapa masalah pembentukan yang mengapa saya melakukan itu.
Saurabh Taletiya
Saya ingin melewati jalur gambar placeholder di API saya, tetapi ketika saya menggunakan getDefaultPlaceholderUrl () itu menghasilkan path gambar seperti: example.com/static/version1551260928/webapi_rest/_view/en_US/…
Gaurav Agrawal
6

Jika Anda memeriksa pengaturan toko Anda, Anda akan menemukan opsi pemegang tempat Gambar Produk

Stores > Configuration > Catalog > Catalog > Product Image Placeholders

Anda dapat memanggil get the value dalam blok dan memanggil dalam file template Anda.

<?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
}

Dalam Panggilan File Template Anda

$block->getPlaceholderImage();
Priyank
sumber
3

Untuk mendapatkan url gambar placeholder pada templat halaman daftar produk, lakukan ini:

$imageUrl = $block->getImage($block->getProduct(), 'category_page_grid')->getImageUrl();
Aaron Allen
sumber
3

Kita harus melihat kelas Helper Magento \Magento\Catalog\Helper\Image

Sebagai contoh :

<?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'));
    }
}
Khoa TruongDinh
sumber
2

Dalam blokir, gunakan metode berikut:

public function getPlaceholderImage() {
    return sprintf('<img src="%s"/>', $this->getViewFileUrl('Magento_Catalog::images/product/placeholder/thumbnail.jpg'));
}
vladPavlov
sumber
0

Jika Anda mencoba mendapatkannya di file template apa pun. Anda akan membutuhkan penolong gambar Magento.\Magento\Catalog\Helper\Image::class

Anda bisa mendapatkan contoh seperti ini di bagian atas file .phtml apa pun

$imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);

dan dapatkan path ke url gambar placeholder seperti ini

$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')
Leon
sumber