Вырезаем ненужный тормозящий функционал

Добрый день @cs-cart_team!
В result_ids для фильтров, к примеру в файле design/themes/responsive/templates/blocks/product_filters/original.tpl есть подстрока product_features_*, которая при отображении характеристик в списке товаров и отработке фильтров по аякс вызывает переинициализацию объектов, которое соответствует количеству товаров на странице. Необходимости в этом я так и не увидел.
Ниже результаты до и после исключения этих объектов(Магазин боевой с большим количеством модулей,разница до и после - порядка 1 секунды).



И собственно вопрос:

Используется ли product_features_* для чего-то или это пережиток прошлого и его можно смело убирать?

8 лайков

Попробовал вырезать - изменений не заметил. Всё работает. По производительности не могу сказать.

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

Добрый день.

Спасибо за обращение, да, действительно, нет необходимости в перезагрузке product_features_, мы исправим эту проблему в ближайшем релизе.

3 лайка

Добрый день.

Исправление войдет в 4.12.1.

Если хотите изменить прямо сейчас, то нужно в файлах:

design/themes/responsive/templates/blocks/product_filters/original.tpl
design/themes/responsive/templates/blocks/product_filters/selected_filters.tpl
design/themes/responsive/templates/blocks/product_filters/horizontal_filters.tpl

заменить:

    {$ajax_div_ids = "product_filters_*,products_search_*,category_products_*,product_features_*,breadcrumbs_*,currencies_*,languages_*,selected_filters_*"}

на:

    {$ajax_div_ids = "product_filters_*,selected_filters_*,products_search_*,category_products_*,currencies_*,languages_*"}
8 лайков

Супер, спасибо, реально быстрее стало.

2 лайка

Не все так гладко оказалось. При использовании фильтра на странице товаров бренда (если создан макет для product_features.view и в нем выведен фильтр) список товаров не обновляется после ajax-запроса, только после полной перезагрузки страницы.

Вернул в шаблоны product_features_* и фильтрация заработала нормально.

Можно внести костыль {if ($runtime.controller == "product_features" && $runtime.mode == "view")},product_features_*{/if}, конечно.

Но проще в templates/views/product_features/view.tpl изменить у блока product_features_ на category_products_.

у нас норм.
Макет есть. На странице бренда фильтра срабатывают без перезагрузки страницы.

Странно. Даже на dev.demo тестил – там сейчас такая проблема с фильтром имеется, если его вывести на product_features.view.

Вот пример: https://dev.demo.cs-cart.ru/stores/ddd1616d14e15034/apple/, список товаров не обновляется при применении фильтра.

1 лайк