Question

For testing purpose, I'm writing my code in the following file.

app/design/frontend/Joemerino/base/Magento_Swatches/templates/product/layered/renderer.phtml

<?php
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $filterableAttributes = $objectManager->create('Magento\Catalog\Model\Layer\Resolver');
    $layer = $filterableAttributes->get();
    $activeFilters = $layer->getState()->getFilters();
    echo "<pre>";
    print_r($activeFilters);
    echo "</pre>";
?>

But it's empty even if two filters applied.

Was it helpful?

Solution

Please try the below code its working for me:

Below code will return the filters which are already applied to the category page or seach result page by customer, In magento you can say State

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$stateFilter = $objectManager->create('\Magento\LayeredNavigation\Block\Navigation\State');
$selectedFilters = $stateFilter->getActiveFilters();
foreach($selectedFilters as $filter){
    echo $filter->getName(); // Filter name like Color, Size etc
    echo $filter->getLabel(); // Filter value like Black, Blue, Small, Large etc
}
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top