文档 下载安装 问答 主机

获取相关产品,交叉销售产品和增销产品

可以使用相关产品,交叉销售产品和超额促销产品作为营销活动来促进在线销售。在查看商品的时候,相关产品具有相似功能的产品,超额促销产品是比当前商品更高版本的产品。那什么是交叉销售产品?是为了配合起来有更好的使用体验的产品。本文将介绍如何通过代码来获取这些产品。

概览

  • 第一步,在 MagePlaze_HelloWorld 中进行声明

  • 第二步,获取相关产品

  • 第三步,过去增销产品

  • 第四步,获取交叉销售产品

第一步,在 MagePlaze_HelloWorld 中进行声明

使用 MagePlaze_HelloWorld 模块中的一个块类(block class),然后在这个块类的构造函数中注入对象 \Magento\Framework\Registry

app/code/Mageplaza/HelloWorld/Block/HelloWorld.php

<?php
namespace Mageplaza\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');
    }    
    
}
?>

第二步,获取相关产品

在 HelloWorld 类上使用 Object Manager 。然后,可以调用当前产品的信息了,紧接着相关产品,交叉产品和超额促销产品就可以一个接一个的获取了。

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Mageplaza\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      
        }
    }    
   
}

第三步,获取超额促销产品

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Mageplaza\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 />';        
        }
    }
    
   
}

第四步,获取交叉销售产品

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Mageplaza\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 />';        
        }
    }
}

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: