Как вывести количество товаров к каждому бренду на странице бреды?

Забрался в views/product_features/view_all.tpl и хочу каждому бренду проставить количество брендовых товаров. Вижу id варианта характеристики бренд variant_id.

Возможно ли получить по id варианта количество товаров, которые его содержат? Залез в app/functions/fn.catalog.php, но прямо подходящей функции не нашел (или может плохо просмотрел). Искал что-нибудь вроде fn_get_products_by_variant_id =)))

И если я правильно понял - в smarty я могу передать в функцию из fn.catalog.php любой параметр таким образом: {$variant_id|fn_get_products_by_variant_id}. Или я ошибаюсь?

Можно использовать fn_get_products, добавив в $params feature_variants[23][]=123

где 23 - ID характеристики
123 - ID варианта

Но это функция сама по себе тяжелая

Да, так можно сделать, если напишите свою функцию

1 лайк

С точки зрения производительности действительно лучше писать отдельную функцию, где одним запросом из базы получится количество товаров для каждого бренда.

2 лайка

Спасибо за подсказки. Получилась функция:

function fn_my_changes_get_number_products_of_feature_variant($variant_id) {
    $variant_data = fn_get_product_feature_variant($variant_id);
    $feature_id = $variant_data['feature_id'];

    $number_products = count( db_get_array('SELECT * FROM ?:product_features_values WHERE feature_id = ?i AND variant_id = ?i', $feature_id, $variant_id) );

    return $number_products;
}

Функции вывожу в нужном месте внутри шаблона /design/themes/theme_name/templates/views/product_features/view_all.tpl с помощью smarty -
{$range.variant_id|fn_my_changes_get_number_products_of_feature_variant} внутри foreach разбирающего $ranges.

3 лайка