Domanda

I want to remove the default sort option from the category page.

I have tried the below code but is not working.

unset($options['position']);
unset($options['name']);
unset($options['price']);

Position sort option is removed but name and price is not removing.

È stato utile?

Soluzione

You can set Used for Sorting in Product Listing to No for the attributes which you want to remove from sorting options on PLP.

Magento Admin -> stores -> Attributes -> Products -> select Attribute -> Storefront Properties -> Used for Sorting in Product Listing -> set No -> Save Attribute

enter image description here

Altri suggerimenti

can be add a condition in theme templates file Magento_Catalog/templates/product/list/toolbar/sorter.phtml like

<select id="sorter" data-role="sorter" class="sorter-options">
    <?php foreach ($block->getAvailableOrders() as $_key => $_order) :?>
      <?php if ($_key != 'price' && $_key != 'name') : // remove "price" and "name"?>
        <option value="<?= $block->escapeHtmlAttr($_key) ?>"
            <?php if ($block->isOrderCurrent($_key)) :?>
                selected="selected"
            <?php endif; ?>
            >
            <?= $block->escapeHtml(__($_order)) ?>
        </option>
        <?php endif; ?>
    <?php endforeach; ?>
</select>

May be also good idea to use Plugin on catalog Config and unset Position with

public function afterGetAttributeUsedForSortByArray(Config $config, $result)
{
    if (is_array($result) && isset($result[Category::KEY_POSITION])) {
        unset($result[Category::KEY_POSITION]);
    }
    
    return $result;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top