是否有任何给定缓存图像产品文件返回原始功能的功能?

例子 :

=>缓存URL:

{BASEURL}/media/catalog/product/cache/2/image/9df78eab33525d08d6e5fb8d27136e95/a/l/IMAGE.jpg

=>预期的结果:

BASEURL/media/catalog/product/a/l/IMAGE.jpg
有帮助吗?

解决方案

您给出的图像URL不可能使用Magento商店使用。 我猜您希望它被混淆,但是这样做使它无法回答。

除非您要网络剪接另一个网站,否则我无法想到任何理由去构造图像路径,否则,您将可以直接访问产品模型,并且可以直接获取此信息。

但是,使用一个真实示例。例如

/Media/catalog/product/cache/1/image/9df78eab335252508d6e5fb8d27136e95/m/e/e/me/me-d1_2.jpg

de构建缓存图像路径

/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
|___________________________|_|_____|________________________________|_|_|__________|
             |               |   |                  |                 | |     |
       Cache Directory       |   |                  |                 | |     |
Mage/Catalog/Model/Product/Media/Config.php         |                 | |     |
getBaseMediaPath()           |   |                  |                 | |     |
                             |   |                  |                 | |     |
                             |   |                  |                 | |     |
                          Store ID                  |                 | |     |
                          Mage::app()->getStore()->getId()            | |     |
                                 |                  |                 | |     |
                                 |                  |                 | |     |
                            Subdirectory            |                 | |     |
                            Mage/Catalog/Model/Product/Image.php      | |     |
                            getDestinationSubdir()  |                 | |     |
                                                    |                 | |     |
                                                    |                 | |     |
                                              MD5 of Image Params     | |     |
                                              See below               | |     |
                                              Mage/Catalog/Model/Product/Image.php
                                              Line +324               | |     |
                                                                      | |     |
                                                                      | |     |
                                                          First letter of Image Name
                                                                        |     |
                                                                        |     |
                                                          Second letter of Image Name
                                                                              |
                                                                              |
                                                                     Original Image Name

找到原始图像

如果通过Magento Admin上传, ,原始图像位于

/media/catalog/product/m/e/me-d1_2.jpg

因此,获取原始URL非常简单,只需删除高速缓存目录路径和哈希即可。

IE。消除 cache/1/image/9df78eab33525d08d6e5fb8d27136e95/

所以

/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg

变成

/media/catalog/product/m/e/me-d1_2.jpg

如果通过数据流/导入上传, ,原始图像位于

/媒体/导入

但是在那里将有猜测。但是,人们希望格式化其上载dir以导入实际上取决于它们,并且图像中的小主题确实不相关 - 因为它们在上传时提供了相对的路径。

关于MD5哈希的一些

($this->_keepAspectRatio  ? '' : 'non') . 'proportional',
($this->_keepFrame        ? '' : 'no')  . 'frame',
($this->_keepTransparency ? '' : 'no')  . 'transparency',
($this->_constrainOnly ? 'do' : 'not')  . 'constrainonly',
$this->_rgbToString($this->_backgroundColor),
'angle' . $this->_angle,
'quality' . $this->_quality,

如果有水印,可选的arg会

$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()

md5(implode('_', $miscParams));

因此,例如,默认

md5('non_no_no_not_ffffff_0_90')

md5 在整个站点上可能相同 - 对于每个图像,但是您需要找出用于生成它的值。您可以相对容易地施加强迫。

这是哈希的默认洋红色值

9df78eab33525d08d6e5fb8d27136e95

归因: sonassi.com

其他提示

简短答案 - 不。没有方法可以基于缓存图像URL返回基本图像。但是,如果删除了缓存文件夹,则应该能够直观URL,例如:

 http://www.mysite.com/media/catalog/product/cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/u/t/uti001_2.jpg

删除产品之后的所有内容,直到前缀trie(在这种情况下,删除 cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/:

 http://www.mysite.com/media/catalog/product/u/t/uti001_2.jpg

但是,处理此问题的更好方法是使用对象模型:

$product = Mage::getModel('catalog/product')->load(42);
echo $product->getImage();
echo $product->getThumbnail();

这有效

   $r = explode('/' ,$imagesCachePath);

   unset($r[6]);
   unset($r[7]);
   unset($r[8]);
   unset($r[9]);

   $r = implode('/',$r);

在里面 list.phtml, ,这对我有用:

echo Mage::getModel('catalog/product_media_config')->getMediaUrl( $_product->getSmallImage()); 
许可以下: CC-BY-SA归因
scroll top