如何在 magento 2.0 中获取原始大小的图像 url
How to get original size image url in magento 2.0
我是 Magento 2.0 的新手,我一直在努力寻找解决方案。我的第一个问题,我还没有弄清楚,如何达到特定的功能?因为我注意到很多人在 Magento 1.+ 中使用它们:
Mage::helper('cms/page')->
或
Mage::getModel('catalog/product_media_config')
(例如 Get original image url Magento (1.6.1.0))
但我无法在 Magento 2.0 中使用它们。如果这种用法在上一个版本中不再可用,我可以使用什么作为替代方法来实现功能?
至于另一个问题,我无法在 grid.phtml(目录列表)中获得原始尺寸的图像。以下是获取图片的方法:
<?php
echo $block->getImage($_item, $image)->getImageUrl();
echo $block->getImage($_item, $image)->getWidth();
echo $block->getImage($_item, $image)->getHeight();
?>
结果是这样的:
http://192.168.1.4/magento/pub/media/catalog/product/cache/1/small_image/240x300/beff4985b56e3afdbeabfc89641a4582/t/h/thumbnail_1.jpg240300
正如我上面提到的,我想要获得原始大小的图像 url 而不是 small_image。我希望我解释了我的问题。如果有人有任何想法,请告诉我。谢谢!
1) 直接写媒体目录路径快速解决
echo $block->getUrl().'pub/media/catalog/product' . $_product->getImage();
2) 使用 StoreManager class 对象获取媒体目录路径
namespace YourNamespace\YourModule\Block;
class YourModule extends \Magento\Framework\View\Element\Template
{
protected $_storeManager;
public function __construct(
\Magento\Store\Model\StoreManagerInterface $storeManager,
...
)
{
$this->_storeManager = $storeManager;
...
}
public function getMediaBaseUrl()
{
return $this->_storeManager
->getStore()
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}
}
然后在你模块的模板(.phtml
)文件中,你可以这样写:
echo $block->getMediaBaseUrl() . $_product->getImage();
使用以下函数获取特定商店的媒体库 url:
function getMediaBaseUrl() {
$om = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $om->get('Magento\Store\Model\StoreManagerInterface');
$currentStore = $storeManager->getStore();
return $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}
使用 getMediaBaseUrl() 函数我们可以在 Magento2 中找到图像 url:
echo $block->getMediaBaseUrl() .'catalog/product'. $_product->getImage();
我是 Magento 2.0 的新手,我一直在努力寻找解决方案。我的第一个问题,我还没有弄清楚,如何达到特定的功能?因为我注意到很多人在 Magento 1.+ 中使用它们:
Mage::helper('cms/page')->
或
Mage::getModel('catalog/product_media_config')
(例如 Get original image url Magento (1.6.1.0))
但我无法在 Magento 2.0 中使用它们。如果这种用法在上一个版本中不再可用,我可以使用什么作为替代方法来实现功能?
至于另一个问题,我无法在 grid.phtml(目录列表)中获得原始尺寸的图像。以下是获取图片的方法:
<?php
echo $block->getImage($_item, $image)->getImageUrl();
echo $block->getImage($_item, $image)->getWidth();
echo $block->getImage($_item, $image)->getHeight();
?>
结果是这样的:
http://192.168.1.4/magento/pub/media/catalog/product/cache/1/small_image/240x300/beff4985b56e3afdbeabfc89641a4582/t/h/thumbnail_1.jpg240300
正如我上面提到的,我想要获得原始大小的图像 url 而不是 small_image。我希望我解释了我的问题。如果有人有任何想法,请告诉我。谢谢!
1) 直接写媒体目录路径快速解决
echo $block->getUrl().'pub/media/catalog/product' . $_product->getImage();
2) 使用 StoreManager class 对象获取媒体目录路径
namespace YourNamespace\YourModule\Block;
class YourModule extends \Magento\Framework\View\Element\Template
{
protected $_storeManager;
public function __construct(
\Magento\Store\Model\StoreManagerInterface $storeManager,
...
)
{
$this->_storeManager = $storeManager;
...
}
public function getMediaBaseUrl()
{
return $this->_storeManager
->getStore()
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}
}
然后在你模块的模板(.phtml
)文件中,你可以这样写:
echo $block->getMediaBaseUrl() . $_product->getImage();
使用以下函数获取特定商店的媒体库 url:
function getMediaBaseUrl() {
$om = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $om->get('Magento\Store\Model\StoreManagerInterface');
$currentStore = $storeManager->getStore();
return $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}
使用 getMediaBaseUrl() 函数我们可以在 Magento2 中找到图像 url:
echo $block->getMediaBaseUrl() .'catalog/product'. $_product->getImage();