Podany adres URL obrazu jest niemożliwy do uzyskania w sklepie Magento. Domyślam się, że chciałeś go zaciemnić, ale w ten sposób uniemożliwiłeś odpowiedź.
Nie mogę wymyślić żadnego powodu, aby usunąć ścieżkę obrazu, chyba że robisz przeglądanie stron internetowych innej witryny, w przeciwnym razie miałbyś bezpośredni dostęp do modelu produktu i mógłbyś pobrać te informacje bezpośrednio.
Niemniej jednak, używając prawdziwego przykładu. Na przykład
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-me1_2.jpg
De konstruowanie ścieżki obrazu pamięci podręcznej
/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
Lokalizowanie oryginalnego obrazu
W przypadku przesłania za pośrednictwem administratora Magento oryginalny obraz znajduje się pod adresem,
/media/catalog/product/m/e/me-d1_2.jpg
Tak więc uzyskanie oryginalnego adresu URL jest dość łatwe, wystarczy usunąć ścieżkę katalogu podręcznego i skrót.
To znaczy. Usunąćcache/1/image/9df78eab33525d08d6e5fb8d27136e95/
Więc
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
Staje się
/media/catalog/product/m/e/me-d1_2.jpg
W przypadku przesłania za pośrednictwem przepływu danych / importu oryginalny obraz znajduje się w
/ media / import
Ale poza tym będą domysły. Jednak ludzie chcą sformatować swój plik DIR do importu, tak naprawdę zależy od nich, a podkatalog, w którym znajdują się obrazy, naprawdę nie jest istotny - ponieważ zapewniają względną ścieżkę do obrazu podczas przesyłania.
Trochę o haszu 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,
Opcjonalne argumenty, jeśli istnieje znak wodny
$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()
md5(implode('_', $miscParams));
Na przykład z ustawieniami domyślnymi
md5('non_no_no_not_ffffff_0_90')
md5
Hash może być taka sama na całej stronie - dla każdego obrazu, ale trzeba by wymyślić wartości użyte do wygenerowania tego. Możesz brutalnie wymusić to stosunkowo łatwo.
Jest to domyślna wartość Magento dla skrótu
9df78eab33525d08d6e5fb8d27136e95
Uznanie autorstwa: sonassi.com
Krótka odpowiedź - nie. Nie ma metody zwrócenia obrazu podstawowego na podstawie adresu URL obrazu pamięci podręcznej. Jeśli jednak usuniesz folder pamięci podręcznej i skrót, powinieneś mieć możliwość intuicyjnego określenia adresu URL, np .:
usuń wszystko po produkcie aż do prefiksu trie (w tym przypadku usuń
cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/
:Być może jednak lepszym sposobem radzenia sobie z tym jest użycie modelu obiektowego:
źródło
To działa
źródło
W tym
list.phtml
, co działało dla mnie:źródło