Бренд в превью товара

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

korshunov
korshunov
Репутация: 55
Сообщения: 695
Зарегистрирован: 03.12.2015
С нами: 2 года 5 месяцев
Skype

Сообщение #21 korshunov » 27.01.2018, 15:40

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

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

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


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

zyxer
zyxer
Репутация: 11
Сообщения: 46
Зарегистрирован: 03.02.2016
С нами: 2 года 3 месяца

Сообщение #22 zyxer » 27.01.2018, 18:55

А почему бы Вам а 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() не вызывался.

korshunov
korshunov
Репутация: 55
Сообщения: 695
Зарегистрирован: 03.12.2015
С нами: 2 года 5 месяцев
Skype

Сообщение #23 korshunov » 28.01.2018, 06:42

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

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

siteapp M
siteapp M
Репутация: 2
Сообщения: 86
Зарегистрирован: 12.01.2016
С нами: 2 года 4 месяца

Сообщение #24 siteapp » 14.05.2018, 19:13

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

korshunov
korshunov
Репутация: 55
Сообщения: 695
Зарегистрирован: 03.12.2015
С нами: 2 года 5 месяцев
Skype

Сообщение #25 korshunov » 15.05.2018, 05:52

Примерно так:
<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}" />

siteapp M
siteapp M
Репутация: 2
Сообщения: 86
Зарегистрирован: 12.01.2016
С нами: 2 года 4 месяца

Сообщение #26 siteapp » 18.05.2018, 15:07

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}" />
не хочет)
:eh:

korshunov
korshunov
Репутация: 55
Сообщения: 695
Зарегистрирован: 03.12.2015
С нами: 2 года 5 месяцев
Skype

Сообщение #27 korshunov » 18.05.2018, 15:19

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


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

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


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

   

Вернуться в «Полезные решения для OkayCMS»

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

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