Hi Everyone!
I need to do some customization in layered navigation.
I require one checkbox beside all the filter options if we click on that checkbox then all the filters should be applied.
Like: If I click on checkbox of Type filter then all the filter option should be apply of Type.
Please see the attached screenshot
Can anyone help me with how I can achieve this requirement?
Hello @sagarnakrani
Copy the file vendor/magento/module-layered-navigation/view/frontend/templates/layer/filter.phtml to your custom theme:
app/design/frontend/<Vendor>/<Theme>/Magento_LayeredNavigation/templates/layer/filter.phtml
Add the "Select All" Checkbox in the Template
<div> <input type="checkbox" id="select-all-filters" /> <label for="select-all-filters">Select All</label> </div>
Then, modify the filter options to allow interaction with the "Select All" checkbox.
<ul> <?php foreach ($filterItems as $_item): ?> <li> <input type="checkbox" class="filter-option" data-url="<?= $_item->getUrl() ?>" /> <label><?= $_item->getLabel() ?> (<?= $_item->getCount() ?>)</label> </li> <?php endforeach; ?> </ul>
Include JavaScript to handle the "Select All" functionality and apply all filters when the checkbox is selected.
var config = { paths: { 'filter-select-all': 'js/filter-select-all' } };
Create a new JavaScript file, filter-select-all.js, in your theme
define([ 'jquery' ], function ($) { 'use strict'; $(document).ready(function () { $('#select-all-filters').on('change', function () { let allFilters = $('.filter-option'); if ($(this).is(':checked')) { allFilters.prop('checked', true); applyFilters(); } else { allFilters.prop('checked', false); } }); function applyFilters() { let filterUrls = []; $('.filter-option:checked').each(function () { filterUrls.push($(this).data('url')); }); if (filterUrls.length > 0) { window.location.href = filterUrls.join('&'); } } }); });
Hope it helps !
If you find our reply helpful, please give us kudos.
A Leading Magento Development Agency That Delivers Powerful Results, Innovation, and Secure Digital Transformation.
WebDesk Solution Support Team
Get a Free Quote | | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Thank You,
WebDesk Solution Support Team
Get a Free Quote | Email | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Location: 150 King St. W. Toronto, ON M5H 1J9