Magento 2 中的相关产品、追加销售产品和交叉销售产品是可用于营销活动以促进在线发展的产品类型。对于观看产品来说,相关产品是具有相似功能的产品,追加销售产品是比该产品更高版本的产品。交叉销售产品怎么样?它们是完美使用的配套产品。

相关产品是除了客户正在查看的商品之外还向客户展示的产品。

追加销售产品是指价格或质量高于他们正在查看的商品的产品。

交叉销售产品是客户正在关注的商品的相关或互补产品,目的是增加现有产品的价值。

每种类型的产品都可以放置在 Magento 2 商店中的不同位置。它们通常用于有效促进销售。

现在让我们详细了解如何在 Magento 2 中获取这些产品。

在 Magento 2 中获取相关产品、追加销售和交叉销售产品的 4 个步骤:

  • 第 1 步:声明Example_HelloWorld
  • 第 2 步:获取相关产品
  • 第 3 步:获取追加销售产品
  • 第 4 步:获取交叉销售产品

步骤一:在Mageplaza_HelloWorld区块中声明

您将使用 module 的块类,然后可能在模块的块类的构造函数中Example_HelloWorld注入 的对象。\Magento\Framework\Registry

app/code/Example/HelloWorld/Block/HelloWorld.php

<?php
namespace Example\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
    protected $_registry;
    
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,        
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {        
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }
    
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }
    
    public function getCurrentProduct()
    {        
        return $this->_registry->registry('current_product');
    }    
    
}
?>

在第2步中,您将申请Object Manager定制班级HelloWorld。通过这种方式,允许调用当前产品信息,则可以一一获取当前产品的相关产品、追加销售产品和交叉销售产品。

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Example\HelloWorld\Block\HelloWorld');
 
$currentProduct = $myBlock->getCurrentProduct();
 
if ($currentProduct = $myBlock->getCurrentProduct()) {
    $relatedProducts = $currentProduct->getRelatedProducts();
    
    if (!empty($relatedProducts)) {
        echo 'Related Products <br />';    
        foreach ($relatedProducts as $relatedProduct) {
            echo $relatedProduct->getSku() . '<br />';  
            echo $relatedProduct->getName(); //get name
            echo $relatedProduct->getPrice(); //get price
            echo $relatedProduct->getData(); //Show all attributes      
        }
    }    
   
}

第 3 步:获取追加销售产品

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Example\HelloWorld\Block\HelloWorld');
$currentProduct = $myBlock->getCurrentProduct();
 
if ($currentProduct = $myBlock->getCurrentProduct()) {
    $upSellProducts = $currentProduct->getUpSellProducts();

    if (!empty($upSellProducts)) {
        echo '<h3>UpSell Products</h3>';
        foreach ($upSellProducts as $upSellProduct) {
            echo $upSellProduct->getSku() . '<br />';        
        }
    }
}

第 4 步:获取交叉销售产品

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Example\HelloWorld\Block\HelloWorld');
$currentProduct = $myBlock->getCurrentProduct();
 
if ($currentProduct = $myBlock->getCurrentProduct()) {
    $crossSellProducts = $currentProduct->getCrossSellProducts();

    if (!empty($crossSellProduct)) {
        echo 'CrossSell Products <br />';
        foreach ($crossSellProducts as $crossSellProduct) {
            echo $crossSellProduct->getSku() . '<br />';        
        }
    }
}