Сортировка товаров по номеру артикула

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

lvitalij
lvitalij
Репутация: 2
Сообщения: 27
Зарегистрирован: 14.12.2018
С нами: 5 лет 3 месяца

Сообщение #1 lvitalij » 14.01.2022, 15:13

Как добавить сортировку в списке товаров категории по номеру артикула sku? Кнопку-то добавить просто.
А где еще шаманить?

lvitalij
lvitalij
Репутация: 2
Сообщения: 27
Зарегистрирован: 14.12.2018
С нами: 5 лет 3 месяца

Сообщение #2 lvitalij » 19.01.2022, 18:49

Сам разобрался...
В файле ProductsEntity.php
надо добавить выборку артикулов

Код: Выделить всё

         // Добавляем выборку для сортировки по артикулу   
            case 'sku':
                $orderFields = [
                    "(SELECT pv.sku
                    FROM __variants pv
                    WHERE
                        p.id = pv.product_id
                        AND pv.position=(SELECT MIN(position)
                            FROM __variants
                            WHERE
                                product_id=p.id LIMIT 1
                        )
                    LIMIT 1) ASC",
                ];
                break;
            case 'sku_desc':
                $orderFields = [
                    "(SELECT pv.sku
                    FROM __variants pv
                    WHERE
                        p.id = pv.product_id
                        AND pv.position=(SELECT MIN(position)
                            FROM __variants
                            WHERE
                                product_id=p.id LIMIT 1
                        )
                    LIMIT 1) DESC",
                ];
                break;


и еще в файле FilterHelper.php добавить 'sku', 'sku_desc' для формирования урла сортировки

Код: Выделить всё

if (!in_array($currentSort, ['position', 'price', 'price_desc', 'name', 'name_desc', 'rating', 'rating_desc', 'sku', 'sku_desc'])) {
                    return ExtenderFacade::execute(__METHOD__, false, func_get_args());;
                }


надо сие модулем залепить наверное
Последний раз редактировалось lvitalij 23.01.2022, 11:27, всего редактировалось 2 раза.

Aleks
Aleks
Репутация: 56
Сообщения: 382
Зарегистрирован: 24.05.2021
С нами: 2 года 10 месяцев

Сообщение #3 Aleks » 20.01.2022, 11:19

Спасибо за решение. Скопируем, может когда пригодится. Ставлю + в репутацию.
И вопрос, условие сортировки: по возрастающей/убывающей или иное?

lvitalij
lvitalij
Репутация: 2
Сообщения: 27
Зарегистрирован: 14.12.2018
С нами: 5 лет 3 месяца

Сообщение #4 lvitalij » 23.01.2022, 11:25

обычное. возр - убыв... вроде)) вот здесь acorns.com.ua можно глянуть

lvitalij
lvitalij
Репутация: 2
Сообщения: 27
Зарегистрирован: 14.12.2018
С нами: 5 лет 3 месяца

Сообщение #5 lvitalij » 07.09.2022, 13:22

кнопка в файл products_sort.tpl добавляется кодом

Код: Выделить всё

        <form class="product_sort__form" method="post">
            <button type="submit" name="prg_seo_hide" class="d-inline-flex align-items-center product_sort__link {if $sort=='sku'} active_up{elseif $sort=='sku_desc'} active_down{/if}" value="{if $sort=='sku'}{furl sort=sku_desc page=null absolute=1}{else}{furl sort=sku page=null absolute=1}{/if}">
                <span data-language="products_by_sku">{$lang->products_by_sku}</span>
                {include file="svg.tpl" svgId="sort_icon"}
            </button>
        </form>         

и в переводах надо добавить переменную "products_by_sku"


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 25 гостей