আমি কাস্টম পণ্য সংগ্রহের জন্য magento2 এ স্তরযুক্ত নেভিগেশন আনতে কাজ করছি। আমি ইতিমধ্যে কাস্টম পৃষ্ঠায় কাস্টম সংগ্রহ পাচ্ছি স্তরযুক্ত নেভিগেশন দেখানোর প্রয়োজন। এই ম্যাজেন্টো 1 সমাধানটি অভিযোজিত করার চেষ্টা করে কিন্তু আর পাওয়া যায়নি।
কোনও ধারণা আমি কীভাবে এটি ম্যাজেন্টো 2 এ অর্জন করতে পারি। আমি এ পর্যন্ত যা করেছি তা নীচের মত:
আমার কাস্টম পৃষ্ঠায় কাস্টম পণ্য তালিকার জন্য ক্যাটালগ তালিকার তালিকা ব্লক প্রসারিত।
class View extends \Magento\Catalog\Block\Product\ListProduct
{
public function __construct(
\Magento\Catalog\Block\Product\Context $context,
\Magento\Framework\Data\Helper\PostHelper $postDataHelper,
\Magento\Catalog\Model\Layer\Resolver $layerResolver,
CategoryRepositoryInterface $categoryRepository,
\Magento\Framework\Url\Helper\Data $urlHelper,
array $data = [],
\Custom\LayerNavigation\Model\Layer $testlayerobj
) {
parent::__construct($context,$postDataHelper,$layerResolver,
$categoryRepository,$urlHelper,$data);
$this->_coreRegistry = $context->getRegistry();
$this->_testlayer = $testlayerobj;
}
protected function _getProductCollection()
{
if ($this->_productCollection === null) {
$this->_productCollection = $this->getLayer()->getProductCollection();
}
return $this->_productCollection;
}
public function getLayer()
{
$layer = $this->_coreRegistry->registry('current_layer');
if ($layer) {
return $layer;
}
return $this->_testlayer;
}
}
লেআউট ফাইলে স্তরযুক্ত নেভিগেশনের জন্য মূল অনুসন্ধান ব্লকটি ব্যবহার করুন
<referenceContainer name="sidebar.main">
<block class="Magento\LayeredNavigation\Block\Navigation\Search" name="catalogsearch.leftnav" before="-" template="layer/view.phtml">
<block class="Magento\LayeredNavigation\Block\Navigation\State" name="catalogsearch.navigation.state" as="state" />
<block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="catalogsearch.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
</block>
</referenceContainer>
সংগ্রহটি সংশোধন করতে বর্ধিত কোর স্তর মডেল।
class Layer extends \Magento\Catalog\Model\Layer
{
public function __construct(
optionStoreFactory $optionstoreFactory,
Attrhelper $attrhelper,
productCollectionFactory $productCollectionFactory,
AttributevalueFactory $attributevalueFactory,
CategoryRepositoryInterface $categoryRepository,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\App\Request\Http $request,
\Magento\Framework\Registry $registry,
\Magento\Catalog\Model\Layer\Search\CollectionFilter $filter,
array $data = []
) {
$this->optionstoreFactory = $optionstoreFactory;
$this->attributevalueFactory = $attributevalueFactory;
$this->_attrhelper = $attrhelper;
$this->request = $request;
$this->productCollectionFactory = $productCollectionFactory;
$this->categoryRepository = $categoryRepository;
$this->_storeManager = $storeManager;
$this->filter = $filter;
$this->registry = $registry;
}
public function getProductCollection()
{
$attributevalue = $this->getAttributeValue(); //eg: Manufacturer Attribute details
$attr_code = $attributevalue->getAttributeCode();
$attr_option_value = $attributevalue->getOptionId();
$collection = $this->productCollectionFactory->create();
$store_id = $this->request->getParam('store_id');
$collection->addAttributeToSelect('*')
->addAttributeToFilter($attr_code , ['finset'=>$attr_option_value ])
->addAttributeToFilter('visibility','4')
->setStore($store_id)
->addFieldToFilter('status', array('eq' => 1))
->setOrder('id', 'DESC');
$this->prepareProductCollection($collection);
return $collection;
}
public function prepareProductCollection($collection)
{
$this->filter->filter($collection, $this->getCurrentCategory());
return $this;
}
public function getCurrentCategory()
{
$category = $this->registry->registry('current_category');
if ($category) {
$this->setData('current_category', $category);
} else {
$category = $this->categoryRepository->get($this->getCurrentStore()->getRootCategoryId());
$this->setData('current_category', $category);
}
return $category;
}
public function getCurrentStore()
{
return $this->_storeManager->getStore();
}
}
এখন পর্যন্ত আমি স্তর নেভিগেশন প্রদর্শিত হচ্ছে কিন্তু এটি আমার কাস্টম সংগ্রহের সাথে নির্দিষ্ট নয়। আমার ডিবাগিং অনুসারে সংগ্রহটি মূল বিভাগ থেকে পুরো ফিল্টার করা হয় (এতে পুরো পণ্য ক্যাটালগ থাকে) এবং এটি অনুসারে স্তরগুলি আনছে।