Question

I would like to remove the categories section on the layered navigation but do not see where they are called within layered navigation module.

Was it helpful?

Solution

Copy the following file:

/vendor/magento/theme-frontend-luma/Magento_LayeredNavigation/templates/layer/view.phtml

to your theme:

app/design/frontend/Vendor/Theme/Magento_LayeredNavigation/templates/layer/view.phtml

And put the Category condition like below:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

// @codingStandardsIgnoreFile

?>
<?php
/**
 * Category layered navigation
 *
 * @var $block \Magento\LayeredNavigation\Block\Navigation
 */
?>

<?php if ($block->canShowBlock()): ?>
    <div class="block filter">
        <div class="block-title filter-title">
            <strong><?= /* @escapeNotVerified */ __('Shop By') ?></strong>
        </div>

        <div class="block-content filter-content">
            <?= $block->getChildHtml('state') ?>

            <?php if ($block->getLayer()->getState()->getFilters()): ?>
                <div class="block-actions filter-actions">
                    <a href="<?= /* @escapeNotVerified */ $block->getClearUrl() ?>" class="action clear filter-clear"><span><?= /* @escapeNotVerified */ __('Clear All') ?></span></a>
                </div>
            <?php endif; ?>
            <?php $wrapOptions = false; ?>
            <?php foreach ($block->getFilters() as $filter): ?>
                <?php if (!$wrapOptions): ?>
                    <strong role="heading" aria-level="2" class="block-subtitle filter-subtitle"><?= /* @escapeNotVerified */ __('Shopping Options') ?></strong>
                    <dl class="filter-options" id="narrow-by-list">
                <?php $wrapOptions = true; endif; ?>
                    <?php if ($filter->getItemsCount() && $filter->getName() != 'Category'): ?>
                        <dt role="heading" aria-level="3" class="filter-options-title"><?= $block->escapeHtml(__($filter->getName())) ?></dt>
                        <dd class="filter-options-content"><?= /* @escapeNotVerified */ $block->getChildBlock('renderer')->render($filter) ?></dd>
                    <?php endif; ?>
            <?php endforeach; ?>
            <?php if ($wrapOptions): ?>
                </dl>
            <?php endif; ?>
        </div>
    </div>
<?php endif; ?>

Use the above content for your view.phtml file.

OTHER TIPS

The layered navigation categories are called in one of the core files as below:

/vendor/magento/module-layered-navigation/view/frontend/templates/layer/view.phtml

You need to override this file in your theme and then change the content of the file however you want.

Add below directory in your theme:

app/design/frontend/vendor_name/theme_name/Magento_LayeredNavigation/templates/layer

Then put above file view.phtml in this path.

In Magento 2.3.4:

  1. copy file vendor/magento/theme-frontend-luma/Magento_LayeredNavigation/templates/layer/view.phtml to /Magento_LayeredNavigation/templates/layer/view.phtml
  2. Find <?php if ($filter->getItemsCount()) : ?>
  3. Replace with <?php if ($filter->getItemsCount() && get_class($filter) != \Magento\CatalogSearch\Model\Layer\Filter\Category::class) : ?>

Checked with M2.4.1. There is a configuration here Store -> Configuration -> Catalog -> Catalog

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top