Cómo obtener los productos vistos recientemente de forma programática en Magento 2.2.2

Tabla de contenido

  1. Introducción
  2. ¿Por qué mostrar productos vistos recientemente?
  3. Proceso paso a paso para recuperar los productos vistos recientemente
  4. Solución de problemas de problemas comunes
  5. Conclusión
  6. Preguntas frecuentes

Introducción

¿Alguna vez te has preguntado cómo mejorar la experiencia del usuario en tu sitio de comercio electrónico Magento 2.2.2? Mostrar a los clientes los productos que han visto recientemente puede mejorar significativamente la participación y las tasas de conversión. Esta publicación del blog te guiará sobre cómo recuperar los productos vistos recientemente de forma programática en Magento 2.2.2, brindándote pasos e información útil que facilitan la implementación de esta función.

Comprender cómo recuperar productos vistos recientemente de forma programática puede ser increíblemente beneficioso, especialmente cuando se necesita funcionalidad personalizada más allá de las capacidades predeterminadas de Magento. Al final de este artículo, podrás implementar fragmentos de código para obtener productos vistos recientemente y entender cómo esto se puede personalizar según las necesidades de tu negocio.

Abordaremos:

  1. Por qué mostrar productos vistos recientemente es importante.
  2. El proceso paso a paso para recuperar productos vistos recientemente en Magento 2.2.2.
  3. Resolución de problemas de problemas comunes.

¡Vamos!

¿Por qué mostrar productos vistos recientemente?

Mostrar productos vistos recientemente puede mejorar drásticamente la participación del usuario y aumentar las ventas. Esta función sirve como un recordatorio de los productos en los que los usuarios han mostrado interés, lo que les facilita volver a visitar y potencialmente comprar esos artículos. Aquí hay algunos beneficios clave:

  • Experiencia de usuario mejorada: Simplifica el proceso de compra al permitir a los usuarios navegar rápidamente entre los productos que han visto recientemente.
  • Aumento de las tasas de conversión: Cuantas más veces vea un usuario un producto, mayor será la probabilidad de que lo compre.
  • Compras personalizadas: Ofrecer una experiencia de compra personalizada aumenta la satisfacción del cliente.

Teniendo en cuenta estos beneficios, la integración de esta función en tu tienda de Magento puede marcar la diferencia.

Proceso paso a paso para recuperar productos vistos recientemente

1. Requisitos e instalación

Antes de profundizar en el código, asegúrate de cumplir con los siguientes requisitos previos:

  • Magento 2.2.2 instalado y en funcionamiento.
  • Comprensión básica de los archivos de módulos y plantillas de Magento.
  • Acceso al sistema de archivos del proyecto Magento para agregar o modificar archivos.

2. Implementación del código

Para recuperar productos vistos recientemente, debes importar ciertas clases y utilizar métodos predefinidos proporcionados por Magento. A continuación, se muestra una guía paso a paso para implementar esta función:

a. Crea un nuevo bloque

Primero, crea un nuevo archivo de bloque donde se colocará tu código personalizado.

// app/code/YourNamespace/YourModule/Block/RecentlyViewed.php

namespace YourNamespace\YourModule\Block;

use Magento\Catalog\Block\Product\AbstractProduct;
use Magento\Reports\Model\ResourceModel\Product\CollectionFactory as ReportCollectionFactory;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\Data\Helper\PostHelper;

class RecentlyViewed extends AbstractProduct
{
    protected $_reportCollectionFactory;
    protected $_productRepository;
    protected $_postDataHelper;
    protected $_customerSession;
    protected $_catalogSession;

    public function __construct(
        \Magento\Catalog\Block\Product\Context $context,
        ReportCollectionFactory $reportCollectionFactory,
        ProductRepositoryInterface $productRepository,
        PostHelper $postDataHelper,
        \Magento\Customer\Model\Session $customerSession,
        \Magento\Catalog\Model\Session $catalogSession,
        array $data = []
    ) {
        $this-> _reportCollectionFactory = $reportCollectionFactory;
        $this-> _productRepository = $productRepository;
        $this-> _postDataHelper = $postDataHelper;
        $this-> _customerSession = $customerSession;
        $this-> _catalogSession = $catalogSession;
        parent::__construct($context, $data);
    }

    public function getRecentProducts($limit = 5)
    {
        $products = [];
        $collection = $this-> _reportCollectionFactory-> create()
            -> addAttributeToSelect(' * ')
            -> setPageSize($limit)
            -> setCurPage(1);

        foreach ($collection as $product) {
            $products [] = $this-> _productRepository-> getById($product-> getId());
        }
        return $products;
    }
}

b. Crea un nuevo archivo de plantilla

Crea un nuevo archivo de templeta para mostrar los productos vistos recientemente.

<!-- app/code/YourNamespace/YourModule/view/frontend/templates/recently_viewed.phtml -->

<?php
$products = $block-> getRecentProducts();
?>

<div class="recently-viewed-products">
    <h2>Productos vistos recientemente</h2>
    <ul>
        <?php foreach ($products as $product): ?>
            <li>
                <a href="<?= $product-> getProductUrl()?>">
                    <img src="<?= $block-> getImage($product, ' category_page_list' )-> getImageUrl()?>" alt="<?= $product-> getName()?>">
                    <p><?= $product-> getName()?></p>
                </a>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

c. Actualiza el archivo layout

Finalmente, actualiza el XML de diseño para agregar el bloque a la página deseada.

<!-- app/code/YourNamespace/YourModule/view/frontend/layout/catalog_product_view.xml -->

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = "urn: Magento: framework: View / Layout / etc / page_configuration.xsd">
 <body>
 <referenceContainer name = "content">
 <block class = "YourNamespace\YourModule\Block\RecentlyViewed" name = "recently.viewed.products" template = "YourNamespace_YourModule::recently_viewed.phtml"/ >
 </referenceContainer>
 </body>
</page>

3. Consejos de personalización

Puedes personalizar la apariencia y funcionalidad de los productos vistos recientemente usando los siguientes consejos:

  • Ajustar el número de productos: En el método getRecentProducts, modifica el parámetro $limit para mostrar más o menos productos.
  • Estilo: Utiliza CSS para estilizar la lista de productos según sea necesario. Esto mejorará la interfaz de usuario, haciéndola más atractiva visualmente.
  • Lógica condicional: Implementa lógica condicional para verificar las sesiones de los usuarios o condiciones específicas antes de mostrar el bloque.

Solución de problemas de problemas comunes

A pesar de seguir los pasos, podrías encontrar algunos problemas. Así es cómo solucionar los problemas comunes:

  • Productos que no se muestran: Asegúrate de que la caché de página completa esté desactivada o configura el bloque personalizado para que no se cachee:
    <block class="YourNamespace\YourModule\Block\RecentlyViewed" cacheable="false" .../>
    
  • Errores de inyección de dependencias: Verifica que se inyecten correctamente todas las dependencias requeridas en el constructor del bloque.
  • Caché de Magento: Limpia la caché de Magento después de realizar cambios de configuración para asegurarte de que se apliquen las actualizaciones:
    bin/magento cache:clean && bin/magento cache:flush
    

Conclusión

La integración de la función de productos vistos recientemente en Magento 2.2.2 puede mejorar significativamente la experiencia del usuario en tu sitio de comercio electrónico y aumentar las ventas. Siguiendo los pasos descritos en esta guía, puedes recuperar y mostrar de forma programática productos vistos recientemente, ofreciendo a tus clientes un viaje de compra más personalizado y atractivo.

Mantente atento a más información y consejos sobre optimización y personalización de tu tienda Magento para una experiencia de cliente enriquecida.

Preguntas frecuentes

P1: ¿Se puede guardar en caché productos vistos recientemente?

  • Si, pero puede que no siempre refleje datos en tiempo real. Para garantizar precisión, configura el bloque para que no se cachee.

P2: ¿Cómo puedo limitar el número de productos que se muestran como vistos recientemente?

  • Modifica el parámetro $limit en el método getRecentProducts dentro de la clase de bloque.

P3: ¿Es posible mostrar productos vistos recientemente en varias páginas?

  • Sí, agregando el bloque a los archivos XML de diseño relevantes de esas páginas.

P4: ¿Esta función requiere extensiones adicionales?

  • No, esto puede lograrse con funcionalidades incorporadas en Magento y programación personalizada según se describe en esta guía.

¡Implementa esto hoy mismo y observa una mejora en la interacción del usuario y las tasas de conversión en tu tienda Magento!