在Magento 2中通过可见性获取产品集合过滤器

您可能已经知道,产品收集在Magento 2开发人员的每个项目中都扮演着至关重要的角色。在上一篇文章中,我向您展示了按类别进行产品收集的步骤,因此,在今天的文章中,我将指导您如何通过 Magento 2中的可见性获取产品收集过滤器

如何通过可见性获取产品集合过滤器

  • 第1步:创建Products.php块
  • 第2步:在phtml文件中插入
  • 第3步:刷新缓存和测试结果

第1步:创建Products.php块

要通过可见性获取产品集合过滤器,首先需要创建Products.php块。要创建它,请遵循此路径Mageplaza/HelloWorld/Block/Products.php

<?php
namespace Mageplaza\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文件中插入

在您的块中已经有一个集合之后,现在按照以下代码片段从块中获取Product集合: Mageplaza/HelloWorld/view/frontend/templates/product-list.phtml

$collection = $block->getProductCollection;
foreach ($collectionas $_product) {
    echo $_product->getName() . ' - ' . $_product->getProductUrl() . '<br />';
}

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

最后,为了完成通过可见性获取产品集合过滤器,让我们刷新缓存并测试结果。

结论

以上是三个步骤,可以帮助您通过可见性获取产品收集过滤器。我希望在管理产品系列时它对您有所帮助

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论