Beim Erstellen einer Erweiterung für einen Magento-Webshop bin ich auf einige Probleme gestoßen. In meinem Bestreben, Code so schnell wie möglich zu erstellen, war ich nicht in der Lage, zwei Dinge herauszufinden.
Mein (relevanter) Code ist der folgende:
$rc = Mage::getResourceSingleton('catalog/product');
$productName = $rc->getAttributeRawValue($productId, 'name', Mage::app()->getStore());
$productPrice = $rc->getAttributeRawValue($productId, 'price', Mage::app()->getStore());
$productImage = $rc->getAttributeRawValue($productId, 'image', Mage::app()->getStore());
$productUrl = $rc->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
Die zwei Dinge, die ich nicht herausfinden kann, sind:
1) Wie rufe ich die Produkt-URL ab? url_key
gibt nicht immer die richtige URL an, da nicht alle Webshops kanonische URLs verwenden oder die Kategorie in der URL haben.
2) Wie kann ich das Produktbild mit einer festgelegten Breite / Höhe anstelle des Vollbilds erhalten? Die ->resize()
Funktion funktioniert in diesem Fall nicht, da sie eine URL zurückgibt. Hinzu kommt , dass ist es möglich , das zu bekommen Base Image
, Small Image
und Thumbnail
getrennt?
Mein Hauptziel ist es, den Code so schnell wie möglich zu halten. Ich habe nur eine Produkt-ID, da ich die Kinder eines Produkts durchschleife. Ich möchte nicht verwenden, ->load()
da dies viel mehr Ladezeit in Anspruch nimmt.
quelle
small_image
. Es scheint, dass die Größe der kleinen Bilder geändert wird, und es wird nicht die Größe der Variante ausgewählt. Irgendeine Idee, wie man das löst? Und haben Sie auch eine Lösung für die Produkt-URL?quelle
Versuchen Sie den folgenden Code, um die Bild-URL zu erhalten:
ODER
ODER
quelle
Auf $ products / $ product variable kann man nicht verzichten:
Für Produkt-URL:
// Sie können diese Methode nicht stoppen, indem Sie der URL ___store hinzufügen, auch wenn _store_to_url auf false gesetzt ist
** // Sie können diese Methode nicht stoppen, indem Sie der URL ___store hinzufügen, auch wenn _store_to_url auf false gesetzt wird // Hinweis: Im Abschnitt "using _ignore_category" finden Sie einen möglichen Fehler bei der Verwendung dieses Parameters. **
Für produkt Bild:
Wenn Sie möchten, dass die Bild-URL im Tag verwendet wird,
quelle
$product->getUrlPath();
schon, indem ich das bekommeurl_key
. Das ist also ohne die$product
Variable möglich. Das lässt mich glauben, dass es auch möglich sein sollte, das Produktbild abzurufen und seine Größe zu ändern, ohne das gesamte Produkt zu laden. (also keine Verwendung vonMage::getModel('catalog/product')->load($productId);
)Ich möchte dem Kommentar von mpaepper eine Codezeile hinzufügen, was meiner Meinung nach eine großartige Lösung in bestimmten Szenarien ist. Ich habe es in einer Schleife auf einer Seite verwendet, auf der ich kein Produktobjekt zum Laden des Bildes durch das Produktmodell hatte.
Wenn Sie kein Bild mit einem Produktobjekt laden möchten, können Sie den Ansatz mpaepper exlpains verwenden. Vergessen Sie nicht, das manuell erstellte Bild zu speichern, wenn Sie diese Lösung verwenden. Wenn Sie das Bildobjekt speichern, wird eine Cache-Datei erstellt, wie dies auch bei normalen Magento-Bildern der Fall ist.
Der vollständige Code sollte also sein:
quelle
Auf das Image des Produkts kann auf folgende Weise zugegriffen werden:
Um die Größe des Bildes zu ändern, können Sie dies hinzufügen:
So rufen Sie die Produkt-URL ab:
Hier ist $ _products das Produkt selbst und nicht die Produkt-ID.
quelle
$_products
Variable, da ich das Produkt dann vollständig laden müsste. Und das Laden aller Produkte, die ich durchlaufe, würde Ladezeiten von Sekunden verursachen, was zu viel ist.