Wie würde man ein Produktmodell in Magento laden, wenn die Produkt-ID nicht verfügbar ist und nur die URL des Produkts? Zum Beispiel möchte ich das Produktmodell von seiner freundlichen URL abrufen, z. B.
%Vor%Ich habe den folgenden Code in einem anderen Beitrag gefunden:
%Vor%aber es scheint nicht richtig zu funktionieren. Die Magento-Dokumentation fehlt in diesem Bereich sehr; weiß jemand, wie man das erreicht?
Hier ist eine alternative Lösung.
Verwenden Sie zuerst das URL-Rewrite-Modell, um die zu Ihrem Produkt passende Route zu finden:
%Vor%Dann können Sie getProductId () auf der Route aufrufen, um nach der ID des Produkts zu suchen:
%Vor%Schließlich, wenn Sie das Produktmodellobjekt selbst benötigen, ist es dann eine einfache Angelegenheit:
%Vor%Der Hauptunterschied zwischen den obigen und dem von Ihnen geposteten Codebeispiel ist der Aufruf von setStoreId. Je nachdem, in welchem Geschäft es sich befindet, kann dasselbe Produkt unterschiedliche URLs aufweisen. Daher muss die Routingkomponente über den entsprechenden Geschäftskontext verfügen, damit das anzuzeigende Produkt gefunden werden kann.
Der Vorteil gegenüber der Lösung von Zachary Schüßler ist, dass mit dem URL-Rewriter jedes Mal das richtige Produkt gefunden wird, wenn die nachfolgenden Teile der URL für verschiedene Produkte gleich sind (zB folder1 / my-product-name und folder2 / my -product-name sind verschiedene Produkte). Die Verwendung des URL-Rewriters funktioniert auch in Situationen, in denen "folder1 / my-product" auf verschiedene Produkte in verschiedenen Geschäften verweist. Dies kann für Ihre Umgebung gelten oder auch nicht.
Ich bin neugierig, warum Sie das tun müssen, da dies möglicherweise nicht die beste Lösung ist. Dies sollte mit der Methode addAttributeToFilter () für die Auflistung einfach sein:
%Vor%Tags und Links magento