Вывод характеристик товара в превью

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

Василий
Василий
Репутация: 0
Сообщения: 7
Зарегистрирован: 20.04.2017
С нами: 6 лет 11 месяцев

Сообщение #1 Василий » 22.04.2017, 13:55

Хочу вывести несколько характеристик товара в предпросмотре карточки товара, так как вручную в анотации рутинно в каждом товаре прописывать.

в tiny_products.tpl

пытаюсь вывести

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

{foreach $product->features as $f}
   {$f->name}: {$f->value}
{/foreach}


но ничего не выводится, можете подсказать как вывести данные характеристики, желательно не все, а только те которые отображаются в фильтре, или если возможно чтобы подтянивалось по переменной по ID свойства и IDзначения с категории, чтобы можно было вывести 3-4 конкретные характеристики, а не целый список всех характеристик?

Пример:
3.png

trainracing M
Аватара
trainracing M
Возраст: 31
Репутация: 13
Сообщения: 121
Зарегистрирован: 07.10.2016
С нами: 7 лет 6 месяцев
Сайт

Сообщение #2 trainracing » 24.04.2017, 07:28

так

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

{foreach $product->features as $f}
{if $f->feature_id == '7' || $f->feature_id == '74' || $f->feature_id == '79' || $f->feature_id == '160'}
{$f->name}: {$f->value}
 
{/if}
{/foreach}

wolf
wolf
Репутация: 3
Сообщения: 27
Зарегистрирован: 27.01.2017
С нами: 7 лет 2 месяца

Сообщение #3 wolf » 26.10.2018, 09:13

trainracing писал(а):так

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

{foreach $product->features as $f}
{if $f->feature_id == '7' || $f->feature_id == '74' || $f->feature_id == '79' || $f->feature_id == '160'}
{$f->name}: {$f->value}
 
{/if}
{/foreach}
Так ничего в превью товара на главной странице не выводится. Такое решение действует только в карточке товара. Как же вывести отдельные характеристики в превью на главной и в разделах категорий???

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

Сообщение #4 korshunov » 26.10.2018, 10:33

Смотреть, как формируются данные в ProductView.php и действовать по аналогии в View.php в функциях, которые используются для главной...

wolf
wolf
Репутация: 3
Сообщения: 27
Зарегистрирован: 27.01.2017
С нами: 7 лет 2 месяца

Сообщение #5 wolf » 26.10.2018, 10:58

korshunov писал(а):Смотреть, как формируются данные в ProductView.php и действовать по аналогии в View.php в функциях, которые используются для главной...
Спасибо за информацию! Я так и делаю. Два дня уже этим вопросом занимаюсь, но ничего не получается.
Для вывода определенных характеристик в превью товара на главной использую файл MainView.php.
В нем использую для формирования данных:

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

$product->features = $this->features->get_product_options(array('product_id'=>$product->id));


А этот код использую в файле main.tpl

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

{foreach $product->features as $f}
{if $f->feature_id == '5' || $f->feature_id == '12' || $f->feature_id == '17'}
{$f->name}: {$f->value}
 
{/if}
{/foreach}


Но, увы, где-то не дорабатываю.

Добавлено спустя 3 часа 27 минут:
Вопрос решен! Кому интересно, обращайтесь в личку (абсолютно бесплатно)!

trainracing M
Аватара
trainracing M
Возраст: 31
Репутация: 13
Сообщения: 121
Зарегистрирован: 07.10.2016
С нами: 7 лет 6 месяцев
Сайт

Сообщение #6 trainracing » 29.10.2018, 13:40

В ProductsView.php находим:
КОД: ВЫДЕЛИТЬ ВСЁ

if(!empty($products))


и в конец первого цикла foreach($products as $product) добавляем строку:
КОД:

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

$product->features = $this->features->get_product_options(array('product_id'=>$product->id));



Должно получиться так:


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

foreach($products as $product) {
  $product->variants = array();
  $product->images = array();
  $product->properties = array();
  $product->features = $this->features->get_product_options(array('product_id'=>$product->id));
}


Затем в tiny_products.tpl, выводим где угодно:


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

{foreach $product->features as $f}
 {if $f->feature_id == 3}
   <div>{$f->value}</div>
 {/if}
{/foreach}

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

Сообщение #7 korshunov » 29.10.2018, 14:30

В решении с ходу видны две принципиальные нерациональности.
1. Для каждого товара делается отдельный запрос к базе. В то время как все нужное можно было бы получить одним запросом.
2. В шаблоне гоняется цикл по свойствам, в то время как реально нужно ОДНО свойство.

Очень затратное решение...


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

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


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

   

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

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

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