Togliere dal URL lista dei desideri?
-
16-10-2019 - |
Domanda
Sto cercando di creare un collegamento per rimuovere un elemento dalla lista dei desideri se è lì. L'URL sta tornando / lista dei desideri / index / remove anziché l'URL corretto, che da quello che ho visto on-line dovrebbe essere / lista dei desideri / index / rimuovere / item / [ID]. Cercando l'URL manualmente non funziona. Questo è il mio modo di ottenere l'URL di rimozione:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
Soluzione
In primo luogo, una panoramica di come funzionano liste dei desideri:
- Ogni lista dei desideri è memorizzato nel database con il proprio ID
- Ogni prodotto aggiunto a una wishlist viene assegnato un
wishlist_item_id
- Questo ID non è lo stesso del
product_id
Per questo motivo non si può semplicemente passare un ID del prodotto all'URL rimuovere perché in realtà è riferimento wishlist_item_id
del prodotto.
Questo spiega il motivo per cui si stanno ottenendo un URL vuoto ( "/ lista dei desideri / index / Rimuovi"), perché quando si passa nel prodotto che non ha la wishlist_item_id
necessario, è necessario recuperare questo in un modo diverso.
Per aggirare il problema, v'è un metodo in Mage_Wishlist_Model_Item
è possibile utilizzare per ottenere una lista dei desideri articolo per ID prodotto:
/** @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);
O il modo più breve:
$_wishlistItem = Mage::getModel('wishlist/item')->loadByProductWishlist(
$this->helper('wishlist')->getWishlist()->getId(),
$_product->getId(),
$_product->getStoreId()
);
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_wishlistItem);
Questo codice è stato testato in blocchi di tipo Mage_Catalog_Block_Product_List
e Mage_Catalog_Block_Product_View