Nikolas Опубликовано 6 октября, 2015 Жалоба Поделиться Опубликовано 6 октября, 2015 Добрый день, Подскажите, как вывести список брендов определённой категории. Нужно для меню категорий. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 6 октября, 2015 Жалоба Поделиться Опубликовано 6 октября, 2015 По образцу того, как на странице категории в фильтре выводится список брендов. В частности, в view/ProductsView.php есть строки // Выбираем бренды, они нужны нам в шаблоне if(!empty($category)) { $brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1)); $category->brands = $brands; } Цитата Ссылка на сообщение Поделиться на другие сайты
Nikolas Опубликовано 6 октября, 2015 Автор Жалоба Поделиться Опубликовано 6 октября, 2015 А в шаблоне как выводить, переменной $brands? Цитата Ссылка на сообщение Поделиться на другие сайты
Nikolas Опубликовано 7 октября, 2015 Автор Жалоба Поделиться Опубликовано 7 октября, 2015 (изменено) А можно немного подробнее... Необходимо сделать меню категорий примера: Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 и т.д. Изменено 7 октября, 2015 пользователем Nikolas Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 7 октября, 2015 Жалоба Поделиться Опубликовано 7 октября, 2015 1. Сначала Вы написали "вывести список брендов определённой категории"2. Теперь Вам надо, судя по примеру, по всем категориям. И еще неясно, как быть с иерархией категорий. Подозреваю, постановка вопроса далеко не окончательная... Если готовы оплачивать - обращайтесь. Цитата Ссылка на сообщение Поделиться на другие сайты
Nikolas Опубликовано 8 октября, 2015 Автор Жалоба Поделиться Опубликовано 8 октября, 2015 Поставновка вопроса следующая:необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно.Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 -> Бренд 1 подкатегории категории 1 -> Бренд 2 подкатегории категории 1 -> Бренд 3 подкатегории категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 Какова цена вопроса? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 (изменено) в 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} Изменено 8 октября, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 Во-первых, получение информации по брендам проводится отдельно для каждой категорий. Это означает НЕСКОЛЬКО отдельных запросов вместо одного.Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка.В-третьих, ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже. Итог:1. Решение весьма нерациональное.2. Решение просто неправильное. Выглядит все это беспредельно непрофессионально. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 (изменено) Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка если потом нужно будет разделить эти бренды по подкатегориям, то что вы хотите, работать не будет В-третьих, ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже. вы уже сделали платный вариант? тут уже все ждут Изменено 8 октября, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 Если у Вас глаза протерты, то сравните свои картинки с заданием. На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях. В то время как по требования ТС подкатегории вообще показывать не надо. ТС в #6 поставил вопрос очень даже четко:Поставновка вопроса следующая: необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно. Категория 1 -> Бренд 1 категории 1 -> Бренд 2 категории 1 -> Бренд 3 категории 1 -> Бренд 1 подкатегории категории 1 -> Бренд 2 подкатегории категории 1 -> Бренд 3 подкатегории категории 1 Категория 2 -> Бренд 1 категории 2 -> Бренд 2 категории 2 -> Бренд 3 категории 2 Какова цена вопроса? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 Если у Вас глаза протерты, то сравните свои картинки с заданием.На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях.В то время как по требования ТС подкатегории вообще показывать не надо. ТС в #6 поставил вопрос очень даже четко: как вы же говорите, а если потом будет надо? вы сами то сначала пишите что "может, и сделано по заданию, но практически - совсем негоже" а теперь пишите что уже нужно по заданию четко. определитесь Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 Определился. Повторю для Ваших протертых глаз: По написанному ТС в #6 1. В примере вывода видно только ОДИН уровень категорий. 2. В тексте сказано "выпадающее меню категорий (только один уровень)". А у Вас на картинках СОВСЕМ НЕ ТАК... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 Определился. Повторю для Ваших протертых глаз:По написанному ТС в #61. В примере вывода видно только ОДИН уровень категорий.2. В тексте сказано "выпадающее меню категорий (только один уровень)". А у Вас на картинках СОВСЕМ НЕ ТАК... картинка была о том, что выводит для каждой категории бренды, я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно. к которому картинка ни при чем. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 октября, 2015 Жалоба Поделиться Опубликовано 8 октября, 2015 картинка была о том, что выводит для каждой категории брендыНа картинке четко видно, что для категории Бытовая техника брендов НЕ выводится, а по заданию ТС они должны быть. А не выводится потому, что Ваше решение для этой категории (на дефолтной базе Simpla) дает ПУСТОЙ массив бендов. Так что выводит вовсе НЕ "для каждой категории", как Вы утверждаете.я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно...Использовать, конечно, можно, только результата, нужного ТС, не получится. Разве что "использовать", написав дополнительный скрипт. И судя по тому, что Вы не спешите выложить полное правильное решение, скрипт этот не в одну строчку и не совсем прост... Цитата Ссылка на сообщение Поделиться на другие сайты
Suprun4uk Опубликовано 23 февраля, 2016 Жалоба Поделиться Опубликовано 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} Спасибо, отличное решение ! Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 8 января, 2019 Жалоба Поделиться Опубликовано 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 - и т.д. нажимая родительский раздел Смартфоны, выводятся в конце бренды из этой категории, т.е. учитывая бренды товаров в этой категории. Подскажите, пожалуйста Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 9 января, 2019 Жалоба Поделиться Опубликовано 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} Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 22 июня, 2020 Жалоба Поделиться Опубликовано 22 июня, 2020 Подскажите пожалуйста, если хочу вывести какие бренды представлены в категориик примеру: nike, adidas, puma делаю вывод: {foreach $products as $p} {$p->brand}{if !$p@last}, {/if} {/foreach} но выводит количество бренда от количества товаравот так: nike, nike, nike, nike, adidas, puma как вывести нормально? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 июня, 2020 Жалоба Поделиться Опубликовано 22 июня, 2020 Нормально так в шаблоне не получится в принципе, так как массив $products, вообще говоря, содержит не все товары категории. Как правильно - можно увидеть в шаблоне products.tpl :{* Фильтр по брендам *}{if $category->brands}... Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 26 января, 2022 Жалоба Поделиться Опубликовано 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) Как сделать вывод без повторений? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 27 января, 2022 Жалоба Поделиться Опубликовано 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) Как сделать вывод без повторений? Отфильтровать массив. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.