Сортировка товара в категории

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

zenlounge
zenlounge
Репутация: 0
Сообщения: 23
Зарегистрирован: 22.07.2022
С нами: 1 год 9 месяцев

Сообщение #1 zenlounge » 20.12.2023, 09:18

Приветствую.
Кто подскажет где править сортировку товаров в категории?
Нужно сделать, что бы по умолчанию сортировались товары по имени

В products_sort.tlp пробовал менять местами, без результата.

Спойлер

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

{if $products|count > 0}
    <div class="fn_ajax_buttons d-flex flex-wrap align-items-center products_sort">
        <span class="product_sort__title hidden-sm-down" data-language="products_sort_by">{$lang->products_sort_by}:</span>

        <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=='name'} active_up{elseif $sort=='name_desc'} active_down{/if}" value="{if $sort=='name'}{furl sort=name_desc page=null absolute=1}{else}{furl sort=name page=null absolute=1}{/if}">
                <span data-language="products_by_name">{$lang->products_by_name}</span>
                {include file="svg.tpl" svgId="sort_icon"}
            </button>
        </form>

        <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=='price'} active_up{elseif $sort=='price_desc'} active_down{/if}" value="{if $sort=='price'}{furl sort=price_desc page=null absolute=1}{else}{furl sort=price page=null absolute=1}{/if}">
                <span data-language="products_by_price">{$lang->products_by_price}</span>
                {include file="svg.tpl" svgId="sort_icon"}
            </button>
        </form>

        <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=='position'} active_up{/if} no_after" value="{furl sort=position page=null absolute=1}">
                <span data-language="products_by_default">{$lang->products_by_default}</span>
            </button>
        </form>

        <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=='rating'} active_up{elseif $sort=='rating_desc'} active_down{/if}" value="{if $sort=='rating'}{furl sort=rating_desc page=null absolute=1}{else}{furl sort=rating page=null absolute=1}{/if}">
                <span data-language="products_by_rating">{$lang->products_by_rating}</span>
                {include file="svg.tpl" svgId="sort_icon"}
            </button>
        </form>
    </div>
{/if}

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

Сообщение #2 Aleks » 22.12.2023, 06:11

Попробуйте отредактировать блок По названию (name) по аналогии с блоком По умолчанию (position).
И тогда блок position по аналогии с блоком name.

korshunov
korshunov
Репутация: 148
Сообщения: 1862
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #3 korshunov » 22.12.2023, 08:34

Aleks писал(а):Попробуйте отредактировать блок По названию (name) по аналогии с блоком По умолчанию (position).
И тогда блок position по аналогии с блоком name.

При открытии стандартной страницы категории сначала в контроллере ищутся товары (с учетом сортировки), а потом уже выводится через шаблон блок со ссылками на разные сортировки. Потому совет не даст нужного результата В ПРИНЦИПЕ.

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

Сообщение #4 Aleks » 22.12.2023, 11:19

Вы правы, господин korshunov. Мой совет, как ЧАСТНЫЙ СЛУЧАЙ не дает нужного результата.
Нужно, что-то еще. И здесь помогла Ваша подсказка о контроллере.
Идем в Okay\Controllers\CategoryController.php.
Строка в дефолте 110: $sortProducts = 'position' редактируем на $sortProducts = 'name';
И все работает. По умолчанию выводится сортировка товаров по названию. И сессия сохраняется.
Более того, при дефолтном products_sort.tpl (без предложенного мной редактирования)
при изменении только в CategoryController.php. тоже все работает гладко.
Какой вариант и как использовать рекомендовать не могу. Возможно достаточно второго варианта.

korshunov
korshunov
Репутация: 148
Сообщения: 1862
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #5 korshunov » 23.12.2023, 06:02

Не вижу в текущей версии 4.4.0 в указанном файле такой строки. Должно быть, Вы советуете по другой неизвестно какой версии.

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

Сообщение #6 Aleks » 23.12.2023, 21:13

4.2.1.
В запросе версия не была указана.
В 4.3.4 и 4.4.0 Okay\Helpers\CatalogHelper.php, предпоследняя текстовая строка в файле.
В 4.3.4 все заработало правильно при одной замене position на name.
В 4.4.0 не проверял.

zenlounge
zenlounge
Репутация: 0
Сообщения: 23
Зарегистрирован: 22.07.2022
С нами: 1 год 9 месяцев

Сообщение #7 zenlounge » 27.12.2023, 20:35

Aleks писал(а):4.2.1.
В запросе версия не была указана.
В 4.3.4 и 4.4.0 Okay\Helpers\CatalogHelper.php, предпоследняя текстовая строка в файле.
В 4.3.4 все заработало правильно при одной замене position на name.
В 4.4.0 не проверял.
Спасибо, нашел в Okay\Helpers\CatalogHelper.php



Всех с наступающими )


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

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

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