Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Добрый день,

Подскажите, как вывести список брендов определённой категории. Нужно для меню категорий.

Ссылка на сообщение
Поделиться на другие сайты

По образцу того, как на странице категории в фильтре выводится список брендов. В частности, в view/ProductsView.php есть строки

		// Выбираем бренды, они нужны нам в шаблоне	
		if(!empty($category))
		{
			$brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1));
			$category->brands = $brands;		
		}

Ссылка на сообщение
Поделиться на другие сайты

А можно немного подробнее...

 

Необходимо сделать меню категорий примера:

 

Категория 1 -> Бренд 1 категории 1

                     -> Бренд 2 категории 1

                     -> Бренд 3 категории 1

 

Категория 2 -> Бренд 1 категории 2

                     -> Бренд 2 категории 2

                     -> Бренд 3 категории 2

 

и т.д.

Изменено пользователем Nikolas
Ссылка на сообщение
Поделиться на другие сайты

1. Сначала Вы написали "вывести список брендов определённой категории"

2. Теперь Вам надо, судя по примеру, по всем категориям. И еще неясно, как быть с иерархией категорий.

 

Подозреваю, постановка вопроса далеко не окончательная...

 

Если готовы оплачивать - обращайтесь.

Ссылка на сообщение
Поделиться на другие сайты

Поставновка вопроса следующая:

необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно.

Категория 1 -> Бренд 1 категории 1

                     -> Бренд 2 категории 1

                     -> Бренд 3 категории 1

                     -> Бренд 1 подкатегории категории 1

                     -> Бренд 2 подкатегории категории 1

                     -> Бренд 3 подкатегории категории 1

 

Категория 2 -> Бренд 1 категории 2

                     -> Бренд 2 категории 2

                     -> Бренд 3 категории 2

 

Какова цена вопроса?

Ссылка на сообщение
Поделиться на другие сайты

в 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}
Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

Во-первых, получение информации по брендам проводится отдельно для каждой категорий. Это означает НЕСКОЛЬКО отдельных запросов вместо одного.

Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка.

В-третьих,  ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже.

 

Итог:

1. Решение весьма нерациональное.

2. Решение просто неправильное.

 

Выглядит все это беспредельно непрофессионально.

Ссылка на сообщение
Поделиться на другие сайты

 

Во-вторых, эти запросы делаются для ВСЕХ категорий, в то время как результаты нужны лишь для категорий верхнего уровня. Это лишняя бесполезная нагрузка
 

если потом нужно будет разделить эти бренды по подкатегориям, то что вы хотите, работать не будет

 

 

В-третьих,  ищутся бренды без учета подкатегорий, что, видимо, совсем неправильно. Если, например, непосредственно в категориях верхнего уровня товаров нет, а они находятся в подкатегориях, то предложенный метод вообще не найдет ни одного бренда. Формально оно, может, и сделано по заданию, но практически - совсем негоже.

 

вы уже сделали платный вариант? тут уже все ждут

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

Если у Вас глаза протерты, то сравните свои картинки с заданием.

На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях.

В то время как по требования ТС подкатегории вообще показывать не надо.

 

ТС в #6 поставил вопрос очень даже четко:

Поставновка вопроса следующая:

необходимо выпадающее меню категорий (только один уровень) с выпадением списка брендов по каждой категории соответственно.

Категория 1 -> Бренд 1 категории 1

                     -> Бренд 2 категории 1

                     -> Бренд 3 категории 1

                     -> Бренд 1 подкатегории категории 1

                     -> Бренд 2 подкатегории категории 1

                     -> Бренд 3 подкатегории категории 1

 

Категория 2 -> Бренд 1 категории 2

                     -> Бренд 2 категории 2

                     -> Бренд 3 категории 2

 

Какова цена вопроса?

Ссылка на сообщение
Поделиться на другие сайты

Если у Вас глаза протерты, то сравните свои картинки с заданием.

На Ваших картинках в категории Бытовая техника брендов не видно, а видно в подкатегориях.

В то время как по требования ТС подкатегории вообще показывать не надо.

 

ТС в #6 поставил вопрос очень даже четко:

 

как вы же говорите, а если потом будет надо? вы сами то сначала пишите что "может, и сделано по заданию, но практически - совсем негоже" а теперь пишите что уже нужно по заданию четко. определитесь 

Ссылка на сообщение
Поделиться на другие сайты

Определился. Повторю для Ваших протертых глаз:

По написанному ТС в #6

1. В примере вывода видно только ОДИН уровень категорий.

2. В тексте сказано "выпадающее меню категорий (только один уровень)".

 

А у Вас на картинках СОВСЕМ НЕ ТАК...

Ссылка на сообщение
Поделиться на другие сайты

Определился. Повторю для Ваших протертых глаз:

По написанному ТС в #6

1. В примере вывода видно только ОДИН уровень категорий.

2. В тексте сказано "выпадающее меню категорий (только один уровень)".

 

А у Вас на картинках СОВСЕМ НЕ ТАК...

 

картинка была о том, что выводит для каждой категории бренды, я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно. к которому картинка ни при чем.

Ссылка на сообщение
Поделиться на другие сайты

картинка была о том, что выводит для каждой категории бренды

На картинке четко видно, что для категории Бытовая техника брендов НЕ выводится, а по заданию ТС они должны быть.

А не выводится потому, что Ваше решение для этой категории (на дефолтной базе Simpla) дает ПУСТОЙ массив бендов.

Так что выводит вовсе НЕ "для каждой категории", как Вы утверждаете.

я же выше привел код вывода брендов, который можно использовать в выводе категорий как угодно...

Использовать, конечно, можно, только результата, нужного ТС, не получится. Разве что "использовать", написав дополнительный скрипт.

И судя по тому, что Вы не спешите выложить полное правильное решение, скрипт этот не в одну строчку и не совсем прост...

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

 

в 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}

 

 

Спасибо, отличное решение ! 

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

 

в 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

 - и т.д.

 

нажимая родительский раздел Смартфоны, выводятся в конце бренды из этой категории, т.е. учитывая бренды товаров в этой категории.

 

Подскажите, пожалуйста

Ссылка на сообщение
Поделиться на другие сайты

Помогло решение 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}
Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

Подскажите пожалуйста, если хочу вывести какие бренды представлены в категории

к примеру: nike, adidas, puma

 

делаю вывод:

{foreach $products as $p}
{$p->brand}{if !$p@last}, {/if}
{/foreach}

 

но выводит количество бренда от количества товара

вот так: nike, nike, nike, nike, adidas, puma

 

как вывести нормально?

Ссылка на сообщение
Поделиться на другие сайты

Нормально так в шаблоне не получится в принципе, так как массив $products, вообще говоря, содержит не все товары категории.

 

Как правильно - можно увидеть в шаблоне products.tpl :

{* Фильтр по брендам *}
{if $category->brands}
...

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

Подскажите пожалуйста

{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)

Как сделать вывод без повторений?

Ссылка на сообщение
Поделиться на другие сайты
В 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)

Как сделать вывод без повторений?

Отфильтровать массив.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...