Skip to the main content.
ICX-LOGO-1

 


 

Suscríbase ahora y obtenga Insights exclusivos!

Mejore las interacciones con sus clientes e impulse el éxito de su negocio.


1 minutos de lectura

Cómo interactuar con el wish list de un cliente en Magento 2

1 minutos de lectura

Cómo interactuar con el wish list de un cliente en Magento 2

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:

  • getCustomerId():  Obtiene el #id del cliente de la sesión actual. Este comportamiento se puede reemplazar según cómo se quiere seleccionar al cliente. 
  • isInWishlist($productId):  Averigua si el producto con el #id especificado se encuentra en el wishlist de deseos.
  • addProductToWishlist($productId):  Agrega el producto con el #id especificado a la lista de deseos del cliente.
  • removeProductFromWishlist($productId) Elimina el producto con el #id especificado de la lista de deseos del cliente.


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;


wish list del cliente en el frontend_Magento

O bien, utilizando como base el código de:

vendor/magento/module-wishlist/view/frontend/web/js/view/wishlist.js

define([
    '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
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();
?>

Espero que este artículo haya sido de utilidad para crear componentes que interactúan con la lista de deseos del cliente.

 

 

 

Content added to ICX Folder
Guardado por defecto Agregar Artículo Quitar Artículo

Guardar blog

Print-Icon Default Print-Icon Hover

Imprimir

Subscribe-Icon Default Subscribe-Icon Hover

Suscribirse

Start-Icon Default Start-Icon Hover

Comienza

CX Insights Recomendados Para Usted

Cómo crear una regla de precio de catálogo en Adobe Commerce.

Cómo crear una regla de precio de catálogo en Adobe Commerce.

Las reglas de precio son herramientas que vienen incorporadas en Adobe Commerce, la cual va permitir a los administradores de las tiendas ofrecer...

4 Beneficios de las listas de deseos en eCommerce

4 Beneficios de las listas de deseos en eCommerce

Las listas de deseos son una herramienta prácticamente ubicua en las plataformas de comercio electrónico. Esto se debe a que proporcionan muchas...

SUSCRIPCIÓN ICX
Suscríbete para recibir contenido exclusivo y actual de nuestros expertos. ¡No te lo pierdas!

¿Qué sigue?

¿ESTÁS LISTO?