Come ottenere l'URL dell'immagine segnaposto Magento2?


8

Come ottenere l'URL dell'immagine segnaposto sul mio file modello della pagina di elenco dei prodotti?

Risposte:


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

Su Magento 2.2:

  • Ottieni Helper in Block (phtml)
    $imageHelper = $this->helper(\Magento\Catalog\Helper\Image::class);

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

  • Ottieni URL immagine segnaposto. Utente come parametro: 'image', 'smal_image', 'swatch_image' o 'thumbnail'.
    $placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');


Salve saurabh, dopo aver ricevuto il "segnaposto" c'è un / mentre si ottiene la fonte dell'immagine. Anche $ mediaUrl dovrebbe essere sopra il tag img, per favore correggi.
aton1004,

si grazie aton, lo sapevo ma ci sono alcuni problemi di formulazione sul perché l'ho fatto.
Saurabh Taletiya,

Voglio passare il percorso dell'immagine segnaposto nella mia API, ma quando utilizzo getDefaultPlaceholderUrl () genera un percorso immagine come: example.com/static/version1551260928/webapi_rest/_view/en_US/…
Gaurav Agrawal

6

Se controlli le impostazioni del tuo negozio troverai l'opzione dei segnaposti Immagine prodotto

Stores > Configuration > Catalog > Catalog > Product Image Placeholders

Puoi chiamare il valore get in blocco e chiamare il tuo file modello.

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

Nella chiamata al file modello

$block->getPlaceholderImage();

3

Per ottenere l'URL dell'immagine segnaposto sul modello della pagina di elenco dei prodotti, procedere come segue:

$imageUrl = $block->getImage($block->getProduct(), 'category_page_grid')->getImageUrl();

3

Dovremmo dare un'occhiata alla classe Helper Magento \Magento\Catalog\Helper\Image

Per esempio :

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

Nel blocco, utilizzare il seguente metodo:

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

0

Se stai cercando di ottenerlo in qualsiasi file modello. Avrai bisogno dell'aiutante dell'immagine di Magento.\Magento\Catalog\Helper\Image::class

È possibile ottenere un'istanza come questa nella parte superiore di qualsiasi file .phtml

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

e ottieni il percorso dell'URL dell'immagine segnaposto in questo modo

$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.