Câu trả lời:
Không thể có URL hình ảnh mà bạn đã cung cấp với cửa hàng Magento. Tôi đoán bạn muốn nó bị xáo trộn, nhưng làm như vậy đã khiến nó không thể trả lời.
Tôi không thể nghĩ ra bất kỳ lý do nào để hủy cấu trúc đường dẫn hình ảnh trừ khi bạn đang lướt web một trang web khác, nếu không, bạn sẽ có quyền truy cập trực tiếp vào mô hình sản phẩm và có thể lấy thông tin này trực tiếp.
Tuy nhiên, bằng cách sử dụng một ví dụ thực tế. Ví dụ
/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
Nếu được tải lên thông qua quản trị viên Magento , hình ảnh gốc được đặt tại,
Vì vậy, nhận được URL ban đầu là khá dễ dàng, chỉ cần loại bỏ đường dẫn thư mục bộ đệm và băm.
I E. Tẩycache/1/image/9df78eab33525d08d6e5fb8d27136e95/
Vì thế
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
Trở thành
/media/catalog/product/m/e/me-d1_2.jpg
Nếu được tải lên qua dataflow / import , ảnh gốc nằm ở
/ phương tiện / nhập khẩu
Nhưng ngoài đó sẽ có phỏng đoán. Tuy nhiên, mọi người muốn định dạng tải lên TRỰC TIẾP của họ để nhập thực sự tùy thuộc vào họ và thư mục con hình ảnh thực sự không liên quan - vì chúng cung cấp đường dẫn tương đối đến hình ảnh khi tải lên.
($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,
Tùy chọn args nếu có hình mờ
$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()
md5(implode('_', $miscParams));
Vì vậy, ví dụ, với các mặc định
md5('non_no_no_not_ffffff_0_90')
Hàm md5
băm có thể giống nhau trên toàn bộ trang web - đối với mọi hình ảnh, nhưng bạn sẽ cần phải tìm ra các giá trị được sử dụng để tạo ra nó. Bạn có thể vũ phu nó tương đối dễ dàng.
Đây là giá trị Magento mặc định cho hàm băm
9df78eab33525d08d6e5fb8d27136e95
Các bản phân phối: sonassi.com
Câu trả lời ngắn - không. Không có phương pháp để trả về hình ảnh cơ sở dựa trên url hình ảnh bộ đệm. Tuy nhiên, nếu bạn xóa thư mục bộ đệm và hàm băm, bạn sẽ có thể xác định được URL sẽ là gì, ví dụ:
http://www.mysite.com/media/catalog/product/cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/u/t/uti001_2.jpg
xóa mọi thứ sau sản phẩm cho đến khi tiền tố trie (trong trường hợp này, xóa cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/
:
http://www.mysite.com/media/catalog/product/u/t/uti001_2.jpg
Tuy nhiên, có lẽ cách tốt hơn để xử lý vấn đề này là sử dụng mô hình đối tượng:
$product = Mage::getModel('catalog/product')->load(42);
echo $product->getImage();
echo $product->getThumbnail();
Những công việc này
$r = explode('/' ,$imagesCachePath);
unset($r[6]);
unset($r[7]);
unset($r[8]);
unset($r[9]);
$r = implode('/',$r);