вывести характеристики товаров на products_content.tpl

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

pavluk.k
pavluk.k
Репутация: 1
Сообщения: 4
Зарегистрирован: 04.05.2021
С нами: 1 год 8 месяцев

Сообщение #1 pavluk.k » 04.05.2021, 19:57

Добрый день всем участникам сообщества.
Есть необходимость вывести характеристики товаров на шаблоне products_content.tpl.
Пробовал разные варианты, не получается. Есть мысли по этому поводу?

Добавлено спустя 2 минуты 2 секунды:

korshunov
korshunov
Репутация: 121
Сообщения: 1671
Зарегистрирован: 03.12.2015
С нами: 7 лет 1 месяц
Skype

Сообщение #2 korshunov » 05.05.2021, 05:23

Поиск по форуму на фразу "свойства в списке товаров" дает довольно много информации, например,
viewtopic.php?f=9&t=1116&p=5607#p5607

pavluk.k
pavluk.k
Репутация: 1
Сообщения: 4
Зарегистрирован: 04.05.2021
С нами: 1 год 8 месяцев

Сообщение #3 pavluk.k » 05.05.2021, 06:17

Эти варианты были актуальны в 2019г. Я их пробовал. Сейчас, при другой версии, решений я не нашел.
Я также смотрел вот эту тему viewtopic.php?f=9&t=1904&p=8407#p8407 там тоже тупик

makki M
makki M
Репутация: 195
Сообщения: 683
Зарегистрирован: 12.08.2016
С нами: 6 лет 5 месяцев
Откуда: Киев
Сайт

Сообщение #4 makki » 05.05.2021, 06:49

продают такое дополнение на маркетплейс
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

pavluk.k
pavluk.k
Репутация: 1
Сообщения: 4
Зарегистрирован: 04.05.2021
С нами: 1 год 8 месяцев

Сообщение #5 pavluk.k » 06.05.2021, 06:26

Сам разобрался.
Это добавил в 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}

korshunov
korshunov
Репутация: 121
Сообщения: 1671
Зарегистрирован: 03.12.2015
С нами: 7 лет 1 месяц
Skype

Сообщение #6 korshunov » 06.05.2021, 09:16

Очень нерационально. По каждому товару в цикле будут выполняться 3 отдельных запроса к базе (варианты, изображения, свойства).
На страницах категорий очень вероятны тормоза. А если в категории много товаров, то кнопка ВСЕ может даже и положить сайт...

pavluk.k
pavluk.k
Репутация: 1
Сообщения: 4
Зарегистрирован: 04.05.2021
С нами: 1 год 8 месяцев

Сообщение #7 pavluk.k » 06.05.2021, 11:51

CMS 'сама по себе нерациональна

korshunov
korshunov
Репутация: 121
Сообщения: 1671
Зарегистрирован: 03.12.2015
С нами: 7 лет 1 месяц
Skype

Сообщение #8 korshunov » 06.05.2021, 16:40

Конечно, в ней недостатков хватает, но таких ужасных все же нет...

dabustard
dabustard
Репутация: 4
Сообщения: 53
Зарегистрирован: 26.01.2018
С нами: 5 лет

Сообщение #9 dabustard » 20.01.2023, 15:25

Чтобы отобразить некоторые свойства товаров при наведении на них курсора на страницах категорий можно сделать так (для версии 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}


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

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


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

   

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

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

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