Magento 2根据产品可见性获取集合
在今天的文章中,我将指导您如何在 Magento 2 中按可见性获取产品集合过滤器。
可见性是产品属性,而不是类别属性。有时,店主会希望将产品的可见性限制在特定的客户群中。
在本教程中,您将学习如何通过可见性通过 3 个步骤获取产品集合过滤器:
如何通过可见性获取产品集合过滤器
- 第 1 步:创建 Products.php 块
- 第 2 步:插入phtml文件
- 第 3 步:刷新缓存和测试结果
第 1 步:创建 Products.php 块
要按可见性获取产品集合过滤器,首先,您需要创建一个Products.php
块。为了创建它,请遵循以下路径Example/HelloWorld/Block/Products.php
<?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文件
在您的块中已有集合后,现在按照以下代码片段从块中获取产品集合:Example
/HelloWorld/view/frontend/templates/product-list.phtml
$collection = $block->getProductCollection;
foreach ($collectionas $_product) {
echo $_product->getName() . ' - ' . $_product->getProductUrl() . '<br />';
}
第 3 步:刷新缓存和测试结果
最后,为了完成通过可见性获取产品集合过滤器,让我们刷新缓存并测试结果。
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。