Comment obtenir l'URL de l'image d'espace réservé Magento2?


8

Comment obtenir l'URL de l'image d'espace réservé sur mon fichier modèle de page de liste de produits?

Réponses:


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

Sur Magento 2.2:

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

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

  • Obtenir l'URL de l'image d'espace réservé. Utilisateur comme paramètre: 'image', 'smal_image', 'swatch_image' ou 'thumbnail'.
    $placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');


Salut saurabh il y a un / manquant après "placeholder" lors de l'obtention de la source d'image. De plus, $ mediaUrl doit être au-dessus de la balise img, veuillez corriger.
aton1004

oui merci aton, je le savais mais il y a des problèmes de formatage qui expliquent pourquoi j'ai fait ça
Saurabh Taletiya

Je souhaite transmettre le chemin d'image d'espace réservé dans mon API, mais lorsque j'utilise getDefaultPlaceholderUrl (), il génère un chemin d'image comme: example.com/static/version1551260928/webapi_rest/_view/en_US/…
Gaurav Agrawal

6

Si vous vérifiez les paramètres de votre magasin, vous trouverez l'option des espaces réservés pour l'image du produit

Stores > Configuration > Catalog > Catalog > Product Image Placeholders

Vous pouvez appeler le get the value in block et appeler dans votre fichier modèle.

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

Dans votre fichier de modèle, appelez

$block->getPlaceholderImage();

3

Pour obtenir l'URL de l'image d'espace réservé sur le modèle de page de liste de produits, procédez comme suit:

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

3

Nous devrions jeter un oeil à la classe Magento Helper \Magento\Catalog\Helper\Image

Par exemple :

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

En bloc, utilisez la méthode suivante:

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

0

Si vous essayez de l'obtenir dans n'importe quel fichier de modèle. Vous aurez besoin de l'assistant d'image de Magento.\Magento\Catalog\Helper\Image::class

Vous pouvez obtenir une instance comme celle-ci en haut de n'importe quel fichier .phtml

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

et obtenir le chemin vers l'URL de l'image d'espace réservé comme ceci

$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.