Jump to content

Recommended Posts

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

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

Link to post
Share on other sites

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

 

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

 

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

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

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

 

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

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

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

 

и т.д.

Edited by Nikolas
Link to post
Share on other sites

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

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

 

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

 

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

Link to post
Share on other sites

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

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

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

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

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

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

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

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

 

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

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

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

 

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

Link to post
Share on other sites

в 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 by mishanya
Link to post
Share on other sites

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

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

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

 

Итог:

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

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

 

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

Link to post
Share on other sites

 

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

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

 

 

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

 

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

Edited by mishanya
Link to post
Share on other sites

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

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

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

 

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

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

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

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

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

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

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

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

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

 

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

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

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

 

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

Link to post
Share on other sites

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

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

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

 

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

 

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

Link to post
Share on other sites

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

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

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

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

 

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

Link to post
Share on other sites

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

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

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

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

 

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

 

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

Link to post
Share on other sites

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

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

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

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

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

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

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

Link to post
Share on other sites
  • 4 months later...

 

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

 

 

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

Link to post
Share on other sites
  • 2 years later...

 

в 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

 - и т.д.

 

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

 

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

Link to post
Share on other sites

Помогло решение 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}
Link to post
Share on other sites
  • 1 year later...

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

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

 

делаю вывод:

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

 

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

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

 

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

Link to post
Share on other sites

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

 

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...