プレースホルダー画像のURL Magento2を取得するにはどうすればよいですか?


8

商品リストページのテンプレートファイルでプレースホルダー画像のURLを取得するにはどうすればよいですか。

回答:


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

Magento 2.2の場合:

  • ブロックでヘルパーを取得(phtml)
    $imageHelper = $this->helper(\Magento\Catalog\Helper\Image::class);

  • ヘルパーを取得
    $imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);

  • プレースホルダー画像のURLを取得します。パラメータとしてのユーザー:「image」、「smal_image」、「swatch_image」、または「thumbnail」。
    $placeholderImageUrl = $imageHelper->getDefaultPlaceholderUrl('image');


こんにちはsaurabh画像のソースを取得中に「プレースホルダー」の後に/がありません。また、$ mediaUrlはimgタグの上にある必要があります。修正してください。
aton1004 2017年

はい、ありがとうaton、私は知っていましたが、なぜそれをしたのかといういくつかのフォーマットの問題があります。
Saurabh Taletiya 2017年

私は私のAPIでプレースホルダ画像のパスを渡したいが、私はgetDefaultPlaceholderUrl()を使用する場合、それは次のように画像のパスを生成します。 example.com/static/version1551260928/webapi_rest/_view/en_US/...
のGauravアグラワル

6

ストア設定を確認すると、商品画像プレースホルダーのオプションが表示されます

Stores > Configuration > Catalog > Catalog > Product Image Placeholders

ブロックで値を取得し、テンプレートファイルで呼び出すことができます。

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

テンプレートファイルの呼び出し

$block->getPlaceholderImage();

3

商品リストページテンプレートのプレースホルダー画像のURLを取得するには、次の操作を行います。

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

3

Magento Helperクラスを見てみましょう \Magento\Catalog\Helper\Image

例えば ​​:

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

ブロックでは、次のメソッドを使用します。

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

0

任意のテンプレートファイルで取得しようとしている場合。Magentoの画像ヘルパーが必要です。\Magento\Catalog\Helper\Image::class

このようなインスタンスは、.phtmlファイルの先頭で取得できます。

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

このようなプレースホルダー画像のURLへのパスを取得します

$imageHelper->getDefaultPlaceholderUrl('small_image')
$imageHelper->getDefaultPlaceholderUrl('image')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.