Antworten:
Die von Ihnen angegebene Bild-URL ist in einem Magento-Shop nicht verfügbar. Ich nehme an, Sie wollten, dass es verschleiert wird, haben es aber unmöglich gemacht, darauf zu antworten.
Ich kann mir keinen Grund vorstellen, den Bildpfad zu dekonstruieren, wenn Sie nicht eine andere Website über das Web scrappen. Andernfalls hätten Sie direkten Zugriff auf das Produktmodell und könnten diese Informationen direkt abrufen.
Trotzdem anhand eines realen Beispiels. Z.B
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
/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
Beim Hochladen über den Magento-Administrator befindet sich das Originalbild unter
Das Abrufen der ursprünglichen URL ist also ziemlich einfach. Entfernen Sie einfach den Cache-Verzeichnispfad und den Hash.
Dh Löschencache/1/image/9df78eab33525d08d6e5fb8d27136e95/
So
/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
Wird
/media/catalog/product/m/e/me-d1_2.jpg
Beim Hochladen über Datenfluss / Import befindet sich das Originalbild in
/ media / import
Aber darüber hinaus würde es Rätselraten geben. Wie auch immer die Leute ihr Upload-DIR für den Import formatieren wollen, ist ihnen überlassen und das Unterverzeichnis, in dem sich die Bilder befinden, ist nicht wirklich relevant - da sie den relativen Pfad zum Bild beim Upload angeben.
($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,
Optionale Argumente, wenn ein Wasserzeichen vorhanden ist
$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()
md5(implode('_', $miscParams));
So zum Beispiel mit den Vorgaben
md5('non_no_no_not_ffffff_0_90')
Der md5
Hash könnte auf der gesamten Site gleich sein - für jedes Bild, aber Sie müssten herausfinden, welche Werte verwendet werden, um es zu generieren. Sie könnten es relativ leicht brachial erzwingen.
Dies ist der Standard-Magento-Wert für den Hash
9df78eab33525d08d6e5fb8d27136e95
Zuschreibungen: sonassi.com
Kurze Antwort - nein. Es gibt keine Methode, um das Basis-Image basierend auf der Cache-Image-URL zurückzugeben. Wenn Sie jedoch den Cache-Ordner und den Hash entfernen, sollten Sie in der Lage sein, die URL zu erkennen, z. B .:
http://www.mysite.com/media/catalog/product/cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/u/t/uti001_2.jpg
entferne alles nach dem Produkt bis zum Präfix trie (in diesem Fall entferne cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/
:
http://www.mysite.com/media/catalog/product/u/t/uti001_2.jpg
Vielleicht ist es jedoch besser, das Objektmodell zu verwenden:
$product = Mage::getModel('catalog/product')->load(42);
echo $product->getImage();
echo $product->getThumbnail();
Das funktioniert
$r = explode('/' ,$imagesCachePath);
unset($r[6]);
unset($r[7]);
unset($r[8]);
unset($r[9]);
$r = implode('/',$r);