Nikolas Posted October 6, 2015 Report Share Posted October 6, 2015 Добрый день, Подскажите, как вывести список брендов определённой категории. Нужно для меню категорий. Quote Link to post Share on other sites
Kors Posted October 6, 2015 Report Share Posted October 6, 2015 По образцу того, как на странице категории в фильтре выводится список брендов. В частности, в view/ProductsView.php есть строки // Выбираем бренды, они нужны нам в шаблоне if(!empty($category)) { $brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1)); $category->brands = $brands; } Quote Link to post Share on other sites
Nikolas Posted October 6, 2015 Author Report Share Posted October 6, 2015 А в шаблоне как выводить, переменной $brands? Quote Link to post Share on other sites
Nikolas Posted October 7, 2015 Author Report Share Posted October 7, 2015 (edited) А можно немного подробнее... Необходимо сделать меню категорий примера: Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 и т.д. Edited October 7, 2015 by Nikolas Quote Link to post Share on other sites
Kors Posted October 7, 2015 Report Share Posted October 7, 2015 1. Сначала Вы написали "вывести список брендов определённой категории"2. Теперь Вам надо, судя по примеру, по всем категориям. И еще неясно, как быть с иерархией категорий. Подозреваю, постановка вопроса далеко не окончательная... Если готовы оплачивать - обращайтесь. Quote Link to post Share on other sites
Nikolas Posted October 8, 2015 Author Report Share Posted October 8, 2015 Поставновка вопроса следующая:необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно.Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 -> Бренд 1 подкатегории категории 1 -> Бренд 2 подкатегории категории 1 -> Бренд 3 подкатегории категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 Какова цена вопроса? Quote Link to post Share on other sites
mishanya Posted October 8, 2015 Report Share Posted October 8, 2015 (edited) в api/Categories.php перед строкой (215 строка) if(isset($pointers[$category->parent_id])) добавляем $category->brands = $this->brands->get_brands( array('category_id'=>$category->id) ); теперь в функции вывода категорий можете пользоваться массивом брендов $c->brands например так {if $c->brands} {foreach $c->brands as $b} <a {if $brand->id == $b->id}class="selected"{/if} href="brands/{$b->url}">{$b->name|escape}</a> {/foreach} {/if} Edited October 8, 2015 by mishanya Quote Link to post Share on other sites
Kors Posted October 8, 2015 Report Share Posted October 8, 2015 Во-первых, получение информации по брендам проводится отдельно для каждой категорий. Это означает НЕСКОЛЬКО отдельных запросов вместо одного.Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка.В-третьих, ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже. Итог:1. Решение весьма нерациональное.2. Решение просто неправильное. Выглядит все это беспредельно непрофессионально. Quote Link to post Share on other sites
mishanya Posted October 8, 2015 Report Share Posted October 8, 2015 (edited) Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка если потом нужно будет разделить эти бренды по подкатегориям, то что вы хотите, работать не будет В-третьих, ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже. вы уже сделали платный вариант? тут уже все ждут Edited October 8, 2015 by mishanya Quote Link to post Share on other sites
Kors Posted October 8, 2015 Report Share Posted October 8, 2015 Если у Вас глаза протерты, то сравните свои картинки с заданием. На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях. В то время как по требования ТС подкатегории вообще показывать не надо. ТС в #6 поставил вопрос очень даже четко:Поставновка вопроса следующая: необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно. Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 -> Бренд 1 подкатегории категории 1 -> Бренд 2 подкатегории категории 1 -> Бренд 3 подкатегории категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 Какова цена вопроса? Quote Link to post Share on other sites
mishanya Posted October 8, 2015 Report Share Posted October 8, 2015 Если у Вас глаза протерты, то сравните свои картинки с заданием.На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях.В то время как по требования ТС подкатегории вообще показывать не надо. ТС в #6 поставил вопрос очень даже четко: как вы же говорите, а если потом будет надо? вы сами то сначала пишите что "может, и сделано по заданию, но практически - совсем негоже" а теперь пишите что уже нужно по заданию четко. определитесь Quote Link to post Share on other sites
Kors Posted October 8, 2015 Report Share Posted October 8, 2015 Определился. Повторю для Ваших протертых глаз: По написанному ТС в #6 1. В примере вывода видно только ОДИН уровень категорий. 2. В тексте сказано "выпадающее меню категорий (только один уровень)". А у Вас на картинках СОВСЕМ НЕ ТАК... Quote Link to post Share on other sites
mishanya Posted October 8, 2015 Report Share Posted October 8, 2015 Определился. Повторю для Ваших протертых глаз:По написанному ТС в #61. В примере вывода видно только ОДИН уровень категорий.2. В тексте сказано "выпадающее меню категорий (только один уровень)". А у Вас на картинках СОВСЕМ НЕ ТАК... картинка была о том, что выводит для каждой категории бренды, я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно. к которому картинка ни при чем. Quote Link to post Share on other sites
Kors Posted October 8, 2015 Report Share Posted October 8, 2015 картинка была о том, что выводит для каждой категории брендыНа картинке четко видно, что для категории Бытовая техника брендов НЕ выводится, а по заданию ТС они должны быть. А не выводится потому, что Ваше решение для этой категории (на дефолтной базе Simpla) дает ПУСТОЙ массив бендов. Так что выводит вовсе НЕ "для каждой категории", как Вы утверждаете.я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно...Использовать, конечно, можно, только результата, нужного ТС, не получится. Разве что "использовать", написав дополнительный скрипт. И судя по тому, что Вы не спешите выложить полное правильное решение, скрипт этот не в одну строчку и не совсем прост... Quote Link to post Share on other sites
Suprun4uk Posted February 23, 2016 Report Share Posted February 23, 2016 в api/Categories.php перед строкой (215 строка) if(isset($pointers[$category->parent_id])) добавляем $category->brands = $this->brands->get_brands( array('category_id'=>$category->id) ); теперь в функции вывода категорий можете пользоваться массивом брендов $c->brands например так {if $c->brands} {foreach $c->brands as $b} <a {if $brand->id == $b->id}class="selected"{/if} href="brands/{$b->url}">{$b->name|escape}</a> {/foreach} {/if} Спасибо, отличное решение ! Quote Link to post Share on other sites
daramal Posted January 8, 2019 Report Share Posted January 8, 2019 в api/Categories.php перед строкой (215 строка) if(isset($pointers[$category->parent_id])) добавляем $category->brands = $this->brands->get_brands( array('category_id'=>$category->id) ); теперь в функции вывода категорий можете пользоваться массивом брендов $c->brands например так {if $c->brands} {foreach $c->brands as $b} <a {if $brand->id == $b->id}class="selected"{/if} href="brands/{$b->url}">{$b->name|escape}</a> {/foreach} {/if} Мишаня, а как вывести эти бренды в самой категории? то есть бренды родительской категории.Например у нас в каталоге есть: Смартфоны - Samsung - Apple - и т.д. нажимая родительский раздел Смартфоны, выводятся в конце бренды из этой категории, т.е. учитывая бренды товаров в этой категории. Подскажите, пожалуйста Quote Link to post Share on other sites
daramal Posted January 9, 2019 Report Share Posted January 9, 2019 Помогло решение yr4ik: http://forum.simplacms.ru/topic/12186-вывести-бренды-родительской-категории-в-подтк/?p=94827 {if $category} {$filter_brand = $category->path|reset} {api module=brands method=get_brands visible=1 category_id=$filter_brand->children var=category_brands} {foreach $category_brands as $b} {$b->name} {/foreach} {/if} Quote Link to post Share on other sites
n1c Posted June 22, 2020 Report Share Posted June 22, 2020 Подскажите пожалуйста, если хочу вывести какие бренды представлены в категориик примеру: nike, adidas, puma делаю вывод: {foreach $products as $p} {$p->brand}{if !$p@last}, {/if} {/foreach} но выводит количество бренда от количества товаравот так: nike, nike, nike, nike, adidas, puma как вывести нормально? Quote Link to post Share on other sites
phukortsin Posted June 22, 2020 Report Share Posted June 22, 2020 Нормально так в шаблоне не получится в принципе, так как массив $products, вообще говоря, содержит не все товары категории. Как правильно - можно увидеть в шаблоне products.tpl :{* Фильтр по брендам *}{if $category->brands}... Quote Link to post Share on other sites
get31 Posted January 26, 2022 Report Share Posted January 26, 2022 Подскажите пожалуйста {foreach $categories as $category} {if $category->brands} {foreach $category->brands as $b} {if !$b@first} {$b->name} {/if} {/foreach} {/if} {/foreach} делаю вывод брендов, но идут повторения (nike, adidas, puma, puma, saucony, adidas) Как сделать вывод без повторений? Quote Link to post Share on other sites
Noxter Posted January 27, 2022 Report Share Posted January 27, 2022 В 26.01.2022 в 16:33, get31 сказал: Подскажите пожалуйста {foreach $categories as $category} {if $category->brands} {foreach $category->brands as $b} {if !$b@first} {$b->name} {/if} {/foreach} {/if} {/foreach} делаю вывод брендов, но идут повторения (nike, adidas, puma, puma, saucony, adidas) Как сделать вывод без повторений? Отфильтровать массив. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.