Von der Wunschliste URL entfernen?
-
16-10-2019 - |
Frage
Ich versuche, einen Link zu erstellen, um ein Element aus der Wunschliste zu entfernen, wenn er dort ist. Die URL kehrt/Wishlist/Index/Entfernen anstelle der richtigen URL zurück, die aus dem, was ich online gesehen habe,/Wunschliste/Index/entfernen/item/[id] sein sollte. Wenn Sie diese URL manuell ausprobieren, funktioniert es nicht. Dies ist meine Art, die URL zu entfernen:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
Lösung
Erstens ein Überblick darüber, wie Wishlists funktionieren:
- Jede Wunschliste wird in der Datenbank mit einer eigenen ID gespeichert
- Jedes Produkt, das einer Wunschliste hinzugefügt wurde, wird a zugewiesen a
wishlist_item_id
- Diese ID ist nicht dasselbe wie die
product_id
Aus diesem Grund können Sie nicht einfach eine Produkt -ID an die Entfernen -URL weitergeben, da sie tatsächlich auf das Produkt verweist wishlist_item_id
.
Dies erklärt, warum Sie eine leere URL erhalten ("/Wishlist/Index/entfernen"), denn wenn Sie das Produkt übergeben wishlist_item_id
, Sie müssen dies auf andere Weise abrufen.
Um dies zu umgehen, gibt es eine Methode in Mage_Wishlist_Model_Item
Sie können eine Wunschliste mit Produkt -ID erhalten:
/** @var $_wishlistHelper Mage_Wishlist_Helper_Data */
$_wishlistHelper = $this->helper('wishlist');
/** @var $_wishlist Mage_Wishlist_Model_Wishlist */
$_wishlist = $_wishlistHelper->getWishlist();
/** @var $_wishlistItem Mage_Wishlist_Model_Item */
$_wishlistItem = Mage::getModel('wishlist/item');
$_wishlistItem->loadByProductWishlist(
$_wishlist->getId(),
$_product->getId(),
$this->helper('core')->getStoreId()
);
$_wishlistRemoveUrl = $_wishlistHelper->getRemoveUrl($_wishlistItem);
Oder der kürzere Weg:
$_wishlistItem = Mage::getModel('wishlist/item')->loadByProductWishlist(
$this->helper('wishlist')->getWishlist()->getId(),
$_product->getId(),
$_product->getStoreId()
);
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_wishlistItem);
Dieser Code wurde in Typblöcken getestet Mage_Catalog_Block_Product_List
und Mage_Catalog_Block_Product_View