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.

Qué Ofrecemos

Impulsamos el crecimiento empresarial mejorando la eficiencia operativa mediante la optimización de procesos, la automatización inteligente y el control de costes. Nuestro enfoque impulsa la productividad, reduce los gastos y aumenta la rentabilidad con soluciones escalables y sostenibles.

 

Experiencia del Cliente

Diseñamos experiencias memorables centradas en el cliente que impulsan la fidelidad, mejoran la asistencia y optimizan cada etapa del viaje. Desde marcos de madurez y mapas de experiencia hasta programas de fidelización, diseño de servicios y análisis de feedback, ayudamos a las marcas a conectar profundamente con los usuarios y a crecer de forma sostenible.

Marketing y Ventas

Impulsamos estrategias de marketing y ventas que combinan tecnología, creatividad y análisis para acelerar el crecimiento. Desde el diseño de propuestas de valor y la automatización impulsada por IA hasta estrategias de inbound, ABM y habilitación de ventas, ayudamos a las empresas a atraer, convertir y retener clientes de forma eficaz y rentable.

Precios e Ingresos

Optimizamos los precios y los ingresos mediante estrategias basadas en datos y una planificación integrada. Desde la modelización de la rentabilidad y el análisis de márgenes hasta la gestión de la demanda y la previsión de ventas, ayudamos a maximizar el rendimiento financiero y la competitividad empresarial.

Transformación Digital

Aceleramos la transformación digital alineando estrategia, procesos y tecnología. Desde la definición del modelo operativo y la automatización inteligente hasta la implementación de CRM, inteligencia artificial y canales digitales, ayudamos a las organizaciones a adaptarse, escalar y liderar en entornos cambiantes y competitivos.

Eficiencia Operativa

Mejoramos la eficiencia operativa mediante la optimización de procesos, la automatización inteligente y el control de costes. Desde estrategias de reducción de costes y rediseño de procesos hasta RPA y análisis de valor, ayudamos a las empresas a impulsar la productividad, la agilidad y la rentabilidad sostenible.

Experiencia del Cliente

chevron-right-1

Marketing y Ventas

chevron-right-1

Precios e Ingresos

chevron-right-1

Transformación Digital

chevron-right-1

Eficiencia Operativa

chevron-right-1

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

Guía de como exportar/importar productos en Adobe Commerce

Guía de como exportar/importar productos en Adobe Commerce

Muchas veces puede llegar a ser incomodo y una perdida de tiempo añadir manualmente un gran numero de productos a una instalación de Magento.

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...

¿Cómo crear un webservice en Magento 2?

¿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...