Перейти к содержимому


Фото
- - - - -

В фильтрах вывести древо категорий


  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 Des

Des
  • Пользователь
  • 117 сообщений
  • Дизайн, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 04.01.2019 - 00:22

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

Вот, ломаю голову, может кто подскажет, как реализовать.

 

Все дополнительные категории находятся в одной общей категории, думаю использовать данное решение:

http://forum.simplac...нных-категорий/



#2 phukortsin

phukortsin
  • Фрилансер
  • 793 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 04.01.2019 - 10:16

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



#3 Des

Des
  • Пользователь
  • 117 сообщений
  • Дизайн, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 04.01.2019 - 11:25

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

Спасибо.



#4 Des

Des
  • Пользователь
  • 117 сообщений
  • Дизайн, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 04.01.2019 - 11:39

		// Если задан бренд, выберем его из базы
		if (!empty($brand_url))
		{
			$brand = $this->brands->get_brand((string)$brand_url);
			if (empty($brand))
				return false;
			$this->design->assign('brand', $brand);
			$filter['brand_id'] = $brand->id;
		}

		// Выберем текущую категорию
		if (!empty($category_url))
		{
			$category = $this->categories->get_category((string)$category_url);
			if (empty($category) || (!$category->visible && empty($_SESSION['admin'])))
				return false;
			$this->design->assign('category', $category);
			$filter['category_id'] = $category->children;
		}
		

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

Я так понимаю, нужно по анологии с содержимым ProductsView.php делать, так как для брендов, только вместо брендов, выбирать дочерние категории, если они есть в категории с нужным нам ID.



#5 Des

Des
  • Пользователь
  • 117 сообщений
  • Дизайн, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 04.01.2019 - 15:13

<!-- Меню каталога -->
{if $products}
{if $categories_all[231]->subcategories}
            <ul>
				{foreach $categories_all[231]->subcategories as $c}
                     <li>
				<a href="catalog/{$c->url}"><span>{$c->name}</span></a>
                           {foreach $c->subcategories as $b}
                               <ul>
                                   <li>
                                    <a href="catalog/{$b->url}"><span>{$b->name}</span>
                        {api module="products" method="count_products" var="count" category_id={$b->id} visible=1}({$count})
                                    </a>
                                   </li>
                               </ul>
                            {/foreach}
                  	</li>
				{/foreach}
             </ul>

{/if}
{/if}               
<!-- Меню каталога (The End)-->  

Вот мы вывели два уровня подкатегорий категории с ID 231 в файле шаблона - products.tpl

 

Как я понимаю, теперь нужно выбрать все товары текущей категории и проверить, находятся ли они в любой из подкатегорий категории с ID 231, если находяться, записываем их в массив, который потом выводим по типу брендов.


Изменено: Des, 04.01.2019 - 15:15


#6 phukortsin

phukortsin
  • Фрилансер
  • 793 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 05.01.2019 - 12:54

Как я понимаю, теперь нужно выбрать все товары текущей категории и проверить, находятся ли они в любой из подкатегорий категории с ID 231, если находяться, записываем их в массив, который потом выводим по типу брендов.

 

Вообще-то стандартно Simpla так не работает.

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

 

Впрочем, дерзайте, может, и выйдет что полезное...






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых