¿Cómo crear un webservice en Magento 2?
Los webservices son mecanismos vitales para que dos o más sistemas se comuniquen, ya que permiten transferir información, ejecutar procedimientos o...
1 minutos de lectura
Por Christopher Liddell | 17/08/2022
1 minutos de lectura
Por Christopher Liddell | 17/08/2022
La lista de deseos del cliente es una herramienta importante para ofrecer una mejor experiencia de usuario, aumentar ventar y obtener más datos del cliente para poder modelar y analizar sus preferencias.
En Magento 2, se puede obtener y modificar el wish list del cliente en el backend de la siguiente manera:
<?php
namespace Imagineer\Wishlist\Helper;
use \Magento\Framework\App\Helper\AbstractHelper;
use \Magento\Framework\App\Helper\Context;
use \Magento\Customer\Model\Session;
use \Magento\Wishlist\Model\Wishlist;
use \Magento\Catalog\Api\ProductRepositoryInterface;
class WhishlistHelper extends AbstractHelper {
private $session;
private $wishlist;
private $productRepository;
/**
* @param \Magento\Framework\App\Helper\Context $context
* @param \Magento\Wishlist\Model\Wishlist $wishlistHelper
* @param \Magento\Customer\Model\Session $session
* @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
*/
public function __construct(
Context $context,
Wishlist $wishlist,
Session $session,
ProductRepositoryInterface $productRepository
) {
parent::__construct($context);
$this->wishlist = $wishlist;
$this->session = $session;
$this->productRepository = $productRepository;
}
public function getCustomerId(){
if(!$this->session->isLoggedIn()){
return false;
}
return $this->session->getCustomerId();
}
public function isInWishlist($productId){
$customerId = $this->getCustomerId();
if(!$customerId){
return false;
}
$wishlistCollection = $this->wishlist->loadByCustomerId($customerId)
->getItemCollection();
$inWishlist = false;
foreach ($wishlistCollection as $wishlist_item) {
if($wishlist_item->getProduct()->getId() == $productId){
$inWishlist = true;
break;
}
}
return $inWishlist;
}
public function addProductToWishlist($productId){
if(!$this->isInWishlist($productId)){
return false;
}
$product = $this->_productRepository->getById($productId);
if($product == null){
return false;
}
$wishlist = $this->wishlist->loadByCustomerId($customerId);
$wishlist->addNewItem($product);
$wishlist->save();
return true;
}
public function removeProductFromWishlist($productId){
if(!$this->isInWishlist($productId)){
return false;
}
$product = $this->_productRepository->getById($productId);
if($product == null){
return false;
}
$wishlist = $this->wishlist->loadByCustomerId($customerId);
$items = $wishlist->getItemCollection();
foreach ($items as $item) {
if ($item->getProductId() == $productId) {
$item->delete();
$wish->save();
}
}return true;
}
}
Las funciones en la clase anterior sirven para lo siguiente:
También es posible visualizar la información del wish list del cliente en el frontend con javascript de las siguientes maneras:var wishlist = JSON.parse(localStorage.getItem('mage-cache-storage')).wishlist;
var items = wishlist.items;
O bien, utilizando como base el código de:
vendor/magento/module-wishlist/view/frontend/web/js/view/wishlist.jsdefine([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData) {
'use strict';
return Component.extend({
initialize: function () {
this._super();
this.wishlist = customerData.get('wishlist');
}
});
});
Adicionalmente, si quieres crear un botón para agregar productos al wish list, puedes hacerlo en tu plantilla (ej: Magento_Catalog/templates/products/list/addto/wishlist.phtml
) con el siguiente código:
<?php
Espero que este artículo haya sido de utilidad para crear componentes que interactúan con la lista de deseos del cliente.
echo $block->getLayout()
->createBlock('Magento\Wishlist\Block\Catalog\Product\ProductList\Item\AddTo\Wishlist')
->setProduct($_product)
->setTemplate("Magento_Wishlist::catalog/product/list/addto/wishlist.phtml")->toHtml();
?>
Los webservices son mecanismos vitales para que dos o más sistemas se comuniquen, ya que permiten transferir información, ejecutar procedimientos o...
Cada instancia de Magento consiste de al menos dos sitios separados: el frontend, que permite a los clientes navegar, crear cuentas y comprar...
Magento es una plataforma de comercio electrónico que se utiliza para crear y gestionar tiendas en línea. Funciona para ayudarte a crear una...