Retirer de la liste URL?
-
16-10-2019 - |
Question
Je suis en train de créer un lien pour supprimer un élément de la liste si elle est là. L'URL est de retour / liste / index / au lieu de supprimer l'URL correcte qui de ce que j'ai vu en ligne devrait être / liste / index / supprimer / article / [ID]. Essayer cette URL ne fonctionne pas manuellement. C'est ma façon d'obtenir l'URL de supprimer:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
La solution
Tout d'abord, un aperçu de la façon dont fonctionnent listes:
- Chaque liste est stockée dans la base de données avec son propre ID
- Chaque produit ajouté à une liste est attribué un
wishlist_item_id
- Cet ID n'est pas le même que le
product_id
Pour cette raison, vous ne pouvez pas passer seulement dans un ID de produit à l'URL de supprimer parce qu'il est en fait référence à la wishlist_item_id
du produit.
Ceci explique pourquoi vous obtenez une URL vide ( « / liste / index / supprimer »), parce que quand vous passez dans le produit, il n'a pas le wishlist_item_id
nécessaire, vous devez récupérer cela d'une manière différente.
Pour contourner ce problème, il existe une méthode en Mage_Wishlist_Model_Item
vous pouvez utiliser pour obtenir un article produit par liste ID:
/** @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);
Ou le chemin le plus court:
$_wishlistItem = Mage::getModel('wishlist/item')->loadByProductWishlist(
$this->helper('wishlist')->getWishlist()->getId(),
$_product->getId(),
$_product->getStoreId()
);
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_wishlistItem);
Ce code a été testé dans des blocs de type Mage_Catalog_Block_Product_List
et Mage_Catalog_Block_Product_View