Страница 2 из 2

Добавлено: 27.01.2018, 15:40
korshunov
makki писал(а):Для справки: В клиентской части функция get_products задействована 8 раз. Из них, только 3 раза, полученная путем left join информация не задействована, если нам нужно вывести бренд во всех местах, где есть превью товара.

А что это значит - задействована СТОЛЬКО-ТО раз?
Как минимум два смысла можно вкладывать:
1. В коде вызов встречается СТОЛЬКО-ТО раз ИЛИ
2. При работе скриптов при формировании страницы такой-то вызов функции делается СТОЛЬКО-ТО раз.

Первый - чисто формальный, для оптимизации мало что значит. А вот второй - совсем другое дело...


А можете дать точный список мест с указанием, где информация задействована, где нет? Что-то мне кажется, маловато насчитано.
По моим сведениям, вызовы для клиентской части есть в 6 файлах view, 4 файлах api, в некоторых более одного раза.

Добавлено: 27.01.2018, 18:55
zyxer
А почему бы Вам а api/Products не раскомментить код

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

/*if (empty($this->all_brands)) {
    foreach ($this->brands->get_brands() as $b) {
        $this->all_brands[$b->id] = $b;
    }
}
if (!empty($this->all_brands)) {
    foreach ($products as $p) {
        if (isset($this->all_brands[$p->brand_id])) {
            $p->brand = $this->all_brands[$p->brand_id]->name;
            $p->brand_url = $this->all_brands[$p->brand_id]->url;
        }
    }
}*/


Он один раз вызовет get_brands() далее все вызовы get_products будут считывать бренды со свойства all_brands
А в дизайне уже проверять {if $product->brand}...{/if}
Но для бОльшей лаконичности, я бы обернул вышеуказанный код в if ($filter['extends_brand']){...} и уже в нужный вызов get_products передавал этот фильтр. Делать это для того, чтобы в админке get_brands() не вызывался.

Добавлено: 28.01.2018, 06:42
korshunov
zyxer писал(а):А почему бы Вам а api/Products не раскомментить код...

Все гениальное просто...

Добавлено: 14.05.2018, 19:13
siteapp
makki писал(а):
IvanovMARK писал(а):Будет развитие магазина? тогда и появятся вопросы.
Меня не надо убеждать, что важно, чтобы решение задач было насколько возможно оптимизировано и менее ресурсозатратно. Я с этим полностью согласен. Именно поэтому, я принял изначальное замечание korshunov и начал искать другие варианты. Также сам korshunov предложил свой вариант.
Безусловно, есть еще варианты решения и возможно они будут более оптимизированы. Но из всех предложенных вариантов, я считаю что 1-й вариан наиболее подходящий. Если нет, переубедите меня или предложите лучший вариант.
Для справки: В клиентской части функция get_products задействована 8 раз. Из них, только 3 раза, полученная путем left join информация не задействована, если нам нужно вывести бренд во всех местах, где есть превью товара.
а изображение тогда как бренда вывести?

Добавлено: 15.05.2018, 05:52
korshunov
Примерно так:
<img src="{$this->all_brands[$p->brand_id]->image|resize:200:200:false:$config->resized_brands_dir}" alt="{$this->all_brands[$p->brand_id]->name|escape}" />

Добавлено: 18.05.2018, 15:07
siteapp
korshunov писал(а):Примерно так:
<img src="{$this->all_brands[$p->brand_id]->image|resize:200:200:false:$config->resized_brands_dir}" alt="{$this->all_brands[$p->brand_id]->name|escape}" />
не хочет)

Добавлено: 18.05.2018, 15:19
korshunov
Может, кто-то что-то и не хочет. Но у меня этот код работает и выдает ожидаемый результат.

Добавлено: 27.09.2018, 19:32
антошенька
Спасибо большое! Всё работает. Парни, извините за глупый вопрос, а свойство (характеристику) товара конкретное именно в превью его карточки можно так вывести? Вот так не получилось вообще - viewtopic.php?f=9&t=384, хочется именно значение (features_value) вывести в превью товара, одного можно по id или всех, что легче.

Добавлено: 03.10.2019, 17:51
IvanIvanov
А как вывести название бренда в корзине?

Добавлено: 07.10.2019, 17:25
makki
IvanIvanov писал(а):А как вывести название бренда в корзине?
решение, предложенное выше zyxer, подойдет для вашей цели также