2022-10-24 15:26:43 - 米境通跨境電商
MagentoProductImagesFullURLPathInsteadofCached
下面的代碼適用于具有圖像的產(chǎn)品,但是對(duì)于沒有圖像的產(chǎn)品,占位符小圖像不會(huì)顯示。
echoMage::getModel('catalog/product_media_config')->getMediaUrl($_product->getSmallImage());
相關(guān)討論
1
2
3
4
5
6
7
8
9
//getimagefullurl
echo$imageUrl=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$_product->getImage();
//getimageusingcustomsizewithurl
echo$imageCacheUrl=Mage::helper('catalog/image')->init($_product,'image')->resize(135,135);
?>
相關(guān)討論
影響您要執(zhí)行的操作的代碼是
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//file:app/code/core/Mag/Catalog/Helper/Image.php
//class:Mage_Catalog_Helper_Image
/**
*ReturnImageURL
*
*@returnstring
*/
publicfunction__toString()
{
try{
//...
}catch(Exception$e){
$url=Mage::getDesign()->getSkinUrl($this->getPlaceholder());
}
return$url;
}
有趣的一行是
1
$url=Mage::getDesign()->getSkinUrl($this->getPlaceholder());
因此在您的代碼中,您需要測(cè)試$_product->getSmallImage()的返回值,如果它為false或null,請(qǐng)改用Mage::getDesign()->getSkinUrl($this->getPlaceholder());。
您可能希望檢查$_product->getSmallImage()以查看未設(shè)置任何值時(shí)返回的內(nèi)容。
哦,我剛剛檢查了一下:getPlaceholder()是一個(gè)函數(shù),不是一個(gè)神奇的吸氣劑。這是函數(shù):
1
2
3
4
5
6
7
8
publicfunctiongetPlaceholder()
{
if(!$this->_placeholder){
$attr=$this->_getModel()->getDestinationSubdir();
$this->_placeholder='images/catalog/product/placeholder/'.$attr.'.jpg';
}
return$this->_placeholder;
}
所以您將不得不解開一些$this(提示$this->_getModel()是Mage::getModel('catalog/product_image'))
或者簡(jiǎn)而言之,只是回到默認(rèn)值:
echo($this->helper('catalog/image')->init($_product,'small_image'));
如果$_product->getSmallImage()不存在,則在您的phtml文件中為
。
根據(jù)您的評(píng)論進(jìn)行更新:
特別是在用于生成顯示可寫小圖像的HTML的.phtml文件中:
1
2
3
4
5
6
7
8
9
$testSmallImageExists=$_product->getSmallImage();
if($testSmallImageExists)
{
echoMage::getModel('catalog/product_media_config')->getMediaUrl($_product->getSmallImage());
}
else
{
echo($this->helper('catalog/image')->init($_product,'small_image'));
}