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.

有帮助吗?

解决方案

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

其他提示

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;
}
许可以下: CC-BY-SA归因
scroll top