目录
介绍
您是否想知道如何增强Magento 2.2.2电子商务网站上的用户体验?向客户展示他们最近查看的产品可以显著提高参与度和转化率。本博客文章将指导您如何在Magento 2.2.2中以编程方式获取最近浏览的产品,为您提供可实施的步骤和见解,使此功能易于实现。
了解如何以编程方式获取最近浏览的产品可能非常有益,特别是当需要超出Magento默认功能的自定义功能时。阅读本文后,您将能够实现代码段以获取最近浏览的产品,并了解如何根据您的业务需求进行自定义。
我们将涵盖以下内容:
- 为什么显示最近浏览的产品很重要。
- 在Magento 2.2.2中获取最近浏览的产品的逐步过程。
- 解决常见问题。
开始吧!
为什么显示最近浏览的产品?
显示最近浏览的产品可以显著提高用户参与度和销售额。此功能作为用户对已经感兴趣的产品的提醒,使他们更容易重新访问并可能购买这些商品。以下是一些关键好处:
- 增强的用户体验:通过允许用户快速导航回最近浏览的产品,简化了购物流程。
- 增加的转化率:用户越多次看到一个产品,购买的可能性就越高。
- 个性化购物:提供个性化的购物体验能够提高客户满意度。
考虑到这些好处,将此功能集成到您的Magento商店中可能会改变游戏规则。
获取最近浏览产品的步骤
1. 要求和设置
在开始编码之前,请确保您具备以下先决条件:
- 安装并运行Magento 2.2.2。
- 基本了解Magento模块和模板文件。
- 访问Magento项目的文件系统以添加或修改文件。
2. 代码实现
要获取最近浏览的产品,您需要导入特定的类并使用Magento提供的预定义方法。下面是实现此功能的逐步指南:
a. 创建新块
首先,创建一个新的块文件,其中包含您的自定义代码。
// 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. 创建新的模板文件
创建一个新的模板文件以显示最近浏览的产品。
<!-- app/code/YourNamespace/YourModule/view/frontend/templates/recently_viewed.phtml -->
<?php
$products = $block->getRecentProducts();
?>
<div class="recently-viewed-products">
<h2>最近浏览的产品</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. 更新布局文件
最后,更新布局XML文件,将块添加到您想要的页面上。
<!-- 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. 自定义提示
您可以使用以下提示自定义最近浏览的产品的外观和功能:
-
调整产品数量:在
getRecentProducts方法中,修改$limit参数以显示更多或更少的产品。 - 样式:使用CSS来根据需要设计产品列表。这将提高用户界面的效果,使其更具视觉吸引力。
- 条件逻辑:在显示块之前,实施条件逻辑以检查用户会话或特定条件。
解决常见问题
尽管按照步骤操作,您可能会遇到一些问题。以下是如何解决常见问题的方法:
-
产品未显示:确保已禁用完整页面缓存或将自定义块配置为不可缓存:
<block class="YourNamespace\YourModule\Block\RecentlyViewed" cacheable="false" .../> - 依赖项注入错误:验证在块构造函数中是否正确注入了所有所需的依赖项。
-
Magento缓存:在进行任何配置更改后清除Magento缓存,以确保更新生效:
bin/magento cache:clean && bin/magento cache:flush
结论
在Magento 2.2.2中集成最近浏览的产品功能可以显著提高您的电子商务网站的用户体验和销售额。按照本指南中概述的步骤,您可以以编程方式获取和显示最近浏览的产品,为您的客户提供更个性化和吸引人的购物体验。
敬请关注更多有关优化和定制Magento商店以提升客户体验的见解和提示。
常见问题解答
Q1:最近浏览的产品可以缓存吗?
- 是的,但它可能不会始终反映实时数据。为了确保准确性,请将块设置为不可缓存。
Q2:如何限制显示的最近浏览产品数量?
- 在块类中的
getRecentProducts方法中修改$limit参数。
Q3:是否可以在多个页面上显示最近浏览的产品?
- 是的,通过将块添加到这些页面的相关布局XML文件中。
Q4:此功能是否需要其他扩展?
- 不需要,可以通过内置的Magento功能和自定义编码来实现,如本指南所述。
立即实现并见证您的Magento商店的用户互动和转化率的改善!