【问题标题】:Magento 2 get filter listMagento 2 获取过滤器列表
【发布时间】:2022-06-13 21:20:29
【问题描述】:

我有 Magento 2.4.3

我想获取过滤器列表,因为我想将价格范围列表打印到我网站的其他部分。 (TopMenu.php)

我试过了:

  $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$stateFilter = $objectManager->create('\Magento\Catalog\Model\Layer\FilterList');
$selectedFilters = $stateFilter->getFilters();
foreach($selectedFilters as $filter){
    $html .=  $filter->getName(); 
    $html .=  $filter->getLabel(); 
}

但我得到这个错误:

 Cannot instantiate interface Magento\Catalog\Model\Layer\FilterableAttributeListInterface

我怎样才能得到我想要的?

【问题讨论】:

    标签: filter magento2


    【解决方案1】:

    我找到了这个解决方案:

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    
    $filterableAttributes = $objectManager->getInstance()->get(\Magento\Catalog\Model\Layer\Category\FilterableAttributeList::class);
    
    $layerResolver = $objectManager->getInstance()->get(\Magento\Catalog\Model\Layer\Resolver::class);
    $filterList = $objectManager->getInstance()->create(
        \Magento\Catalog\Model\Layer\FilterList::class,
            [
                'filterableAttributes' => $filterableAttributes
            ]
        );      
    
        $layer = $layerResolver->get();
        $filters = $filterList->getFilters($layer);
        $maxPrice = $layer->getProductCollection()->getMaxPrice();
        $minPrice = $layer->getProductCollection()->getMinPrice();  
    
        $i = 0;
        $filterAttrs = [];
        $html .= '<ul>';
    foreach($filters as $filter)
    {
        $values = [];
        $attr_code = (string)$filter->getRequestVar();
        $attr_label = (string)$filter->getName();
    
        if(strtolower($filter->getName())=='price')
        {
           
            $html .= (string)$filter->getName();
    
            $items = $filter->getItems(); 
            
                foreach($items as $item)
                {
                        $html .= '<li>';
                                $html .= '<a href="/onepage/?price='.$item->getValue().'">';
                                    $html .=$item->getLabel();
                                $html .= '</a>';
    
                        $html .= '</li>';
                }
        }
    
     
        
    
    }  
    $html .= '</ul>';
    

    【讨论】:

      猜你喜欢
      • 2018-02-26
      • 1970-01-01
      • 2011-09-12
      • 2021-10-29
      • 2017-04-02
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多