Magento 2是一款功能强大的电子商务平台,具有丰富的自定义和扩展功能。在前端开发或产品管理中,按可见性获取产品集合是一个常见的需求。本教程将教如何在Magento 2中按可见性获取产品集合,并提供示例代码来演示这一过程。

18.jpg

1步:创建Products.php块。

首先,需要创建一个名为Products.php的块,以便按可见性获取产品集合。以下是示例块的代码:

php

Copy code

<?php

namespace Example\HelloWorld\Block;

 

class Products extends \Magento\Framework\View\Element\Template

{    

    protected $productCollectionFactory;

    protected $productVisibility;

    protected $productStatus;

 

    public function __construct(

        \Magento\Framework\View\Element\Template\Context $context,        

        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,

        \Magento\Catalog\Model\Product\Attribute\Source\Status $productStatus,

        \Magento\Catalog\Model\Product\Visibility $productVisibility,

        array $data = []

    )

    {

        $this->productCollectionFactory = $productCollectionFactory;

        $this->productStatus = $productStatus;

        $this->productVisibility = $productVisibility;

        parent::__construct($context, $data);

    }

 

    public function getProductCollection()

    {

        $collection = $this->productCollectionFactory->create();

        $collection->addAttributeToFilter('status', ['in' => $this->productStatus->getVisibleStatusIds()]);

        $collection->setVisibility($this->productVisibility->getVisibleInSiteIds());

        return $collection;

    }

}

2步:插入phtml文件。

现在,已经在块中创建了产品集合,接下来,需要在phtml文件中调用该块并获取产品集合。以下是示例phtml文件的代码:

php

Copy code

<?php

$collection = $block->getProductCollection();

foreach ($collection as $_product) {

    echo $_product->getName() . ' - ' . $_product->getProductUrl() . '<br />';

}

?>

3步:刷新缓存和测试结果。

最后,为了完成按可见性获取产品集合过滤器,需要刷新Magento 2缓存以确保新的块和phtml文件生效。刷新缓存后,可以在前端页面上查看和测试结果。

总结:

按可见性获取产品集合是Magento 2开发中常见的任务之一,特别是在前端开发和产品管理中。通过使用上述示例代码,可以轻松地在Magento 2中按可见性获取产品集合,并在前端页面上显示这些产品。

(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)