Страница 1 из 1
вывести характеристики товаров на products_content.tpl
Добавлено: 04.05.2021, 19:57
pavluk.k
Добрый день всем участникам сообщества.
Есть необходимость вывести характеристики товаров на шаблоне products_content.tpl.
Пробовал разные варианты, не получается. Есть мысли по этому поводу?
Добавлено спустя 2 минуты 2 секунды:
Добавлено: 05.05.2021, 05:23
korshunov
Поиск по форуму на фразу "свойства в списке товаров" дает довольно много информации, например,
viewtopic.php?f=9&t=1116&p=5607#p5607
Добавлено: 05.05.2021, 06:17
pavluk.k
Эти варианты были актуальны в 2019г. Я их пробовал. Сейчас, при другой версии, решений я не нашел.
Я также смотрел вот эту тему
viewtopic.php?f=9&t=1904&p=8407#p8407 там тоже тупик
Добавлено: 05.05.2021, 06:49
makki
продают такое дополнение на маркетплейс
Добавлено: 06.05.2021, 06:26
pavluk.k
Сам разобрался.
Это добавил в CategoryController:
$product = $productsEntity->find(['category_id' => $filter['category_id']]);
$product_s=[];
foreach ($product as $y) {
$product_s[] = $productsHelper->attachProductData($y);
}
$this->design->assign('prod', $product_s);
Это в шаблон:
{foreach $prod as $f}
{if $f->id == $product->id}
{foreach $f->features as $fa}
<div>{$fa->name}</div>
{foreach $fa->values as $fac}
<div>{$fac->value}</div>
{/foreach}
{/foreach}
{/if}
{/foreach}
Добавлено: 06.05.2021, 09:16
korshunov
Очень нерационально. По каждому товару в цикле будут выполняться 3 отдельных запроса к базе (варианты, изображения, свойства).
На страницах категорий очень вероятны тормоза. А если в категории много товаров, то кнопка ВСЕ может даже и положить сайт...
Добавлено: 06.05.2021, 11:51
pavluk.k
CMS 'сама по себе нерациональна
Добавлено: 06.05.2021, 16:40
korshunov
Конечно, в ней недостатков хватает, но таких ужасных все же нет...
Добавлено: 20.01.2023, 15:25
dabustard
Чтобы отобразить некоторые свойства товаров при наведении на них курсора на страницах категорий можно сделать так (для версии 4+):
В файле CategoryController.php, после строки
Код: Выделить всё
$products = $productsHelper->attachDescriptionByTemplate($products);
добавляем:
Код: Выделить всё
$products = $productsHelper->attachFeatures($products, ['id'=>[1,2,3,4]]);
где 1,2,3,4 - это id нужных свойств
В файле product_list.tpl, этот фрагмент
Код: Выделить всё
{if $product->annotation && $controller != "MainController"}
<div class="product_preview__annotation">
{$product->annotation}
</div>
{/if}
меняем на такой:
Код: Выделить всё
{if $product->features && $controller != "MainController"}
<div class="product_preview__annotation">
<ul>
{foreach $product->features as $f}
<li>{$f->name|escape}: <strong>{foreach $f->values as $value}{if $category && $f->url_in_product && $f->in_filter && $value->to_index}<a href="{url_generator route="category" url=$category->url}{if !$settings->category_routes_template_slash_end}/{/if}{$f->url}-{$value->translit}">{$value->value|escape}</a>{if !$value@last},{/if}{*todo генерация урла*}{else}{$value->value|escape}{if !$value@last},{/if}{/if}{/foreach}</strong></li>
{/foreach}
</ul>
</div>
{/if}