문제

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 ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top