¿Cómo obtener la imagen de marcador de posición url Magento2?

8

¿Cómo obtener la URL de la imagen del marcador de posición en mi archivo de plantilla de la página de listado de productos?

aton1004
fuente

Respuestas:

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

En Magento 2.2:

  • Obtener ayuda en bloque (phtml)
    $imageHelper = $this->helper(\Magento\Catalog\Helper\Image::class);

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

  • Obtener URL de imagen de marcador de posición. Usuario como parámetro: 'imagen', 'smal_image', 'swatch_image' o 'thumbnail'.
    $placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');

Saurabh Taletiya
fuente
Hola saurabh hay un / falta después del "marcador de posición" al obtener la fuente de la imagen. También $ mediaUrl debe estar por encima de la etiqueta img, corríjalo.
aton1004
Sí, gracias Aton, lo sabía, pero hay algunos problemas de formateo por los que hice eso.
Saurabh Taletiya
Quiero pasar la ruta de la imagen del marcador de posición en mi API, pero cuando uso getDefaultPlaceholderUrl () genera una ruta de imagen como: example.com/static/version1551260928/webapi_rest/_view/en_US/…
Gaurav Agrawal
6

Si verifica la configuración de su tienda, encontrará la opción de marcadores de posición de imagen de producto

Stores > Configuration > Catalog > Catalog > Product Image Placeholders

Puede llamar al obtener el valor en bloque y llamar a su archivo de plantilla.

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

En su archivo de plantilla Llame

$block->getPlaceholderImage();
Priyank
fuente
3

Para obtener la URL de la imagen del marcador de posición en la plantilla de la página de listado de productos, haga lo siguiente:

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

Deberíamos echar un vistazo a la clase Magento Helper \Magento\Catalog\Helper\Image

Por ejemplo :

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

En bloque, use el siguiente método:

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

Si está tratando de obtenerlo en cualquier archivo de plantilla. Necesitarás el ayudante de imagen de Magento.\Magento\Catalog\Helper\Image::class

Puede obtener una instancia como esta en la parte superior de cualquier archivo .phtml

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

y obtener el camino a la url de la imagen del marcador de posición como esta

$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')
León
fuente