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

Вывод подкатегорий в определенной категории


Перейти к решению Решено Kosjak76,

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

При просмотре товаров в одной конкретной категории хочу чтобы над фильтрами выводились подкатегории. Функция вывода категорий есть:

 

{* Рекурсивная функция вывода дерева категорий *}
			{function name=categories_tree}
			{if $categories}
			<ul class="closed">
			{foreach $categories as $c}
				{* Показываем только видимые категории *}
				{if $c->visible}
					<li>
						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name}">{/if}
						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a>

					</li>
				{/if}
			{/foreach}
			</ul>
			{/if}
			{/function}
			{categories_tree categories=$categories}

А вот допереть как выводить только подкатегории конкретной категории не могу...

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 64
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

Блин, да сколько можно-то?? Каждую неделю выкладывать?                         {foreach $categories as $c}                        {if in_array($category->id, $c->children) && $c->subc

  • 4 месяца спустя...

Появился еще вопрос:

 

 

На данный момент реализовал таким образом

{if $page->url=='products'} 
    {function name=categories_tree}
        <div id="catalog_menu">
             <h1>Каталог</h1>
                 <ul class="closed">
                 {foreach $categories as $c}
		 {if $c->visible}
		 <li>
		 <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a>
		 </li>
                 {/if}
                 {/foreach}
						</ul>
				</div>
			{/function}
		{categories_tree categories=$categories}
			{else}
				{if $category->subcategories}
				<div id="catalog_menu">
					<div id="subcat">
						<ul>
                                                 {foreach $category->subcategories as $c}
                                                 <li>
                                                 <a href="catalog/{$c->url}">{$c->name}
                                                 </a> ({$c->products_count})
                                                 </li>
							{/foreach}
						</ul>
					</div>
				</div>
{else}

                         	{/if}       
			{/if}

Заходишь в продукцию - показывает каталог, заходишь в категорию - показывает подкатегории. Но вот теперь задача - когда заходишь в подкатегорию надо чтобы оставалась менюшка подкатегорий. Кто знает как реализовать?

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

xipro:

Опубликовано 25.02.2014 - 12:24

Но вот теперь задача - когда заходишь в подкатегорию надо чтобы оставалась менюшка подкатегорий. Кто знает как реализовать?

 

cernos:

Опубликовано 14.03.2014 - 01:21
Чуть позже помогу, тоже реализовывать это буду. Но скорее всего придется ковырять исходники.

 

 

Удалось найти решение данного вопроса? Кто может подсказать или показать решение?!

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

Блин, да сколько можно-то??

Каждую неделю выкладывать?

                        {foreach $categories as $c}
                        {if in_array($category->id, $c->children) && $c->subcategories}
                           
                               
                                    {$c->name|escape}
                                   
                                        {foreach $c->subcategories as $cat}
                                        {/foreach}    
                                       
                                   
                                   
                               
                             {/if}
                             {/foreach}
    Вот рабочий вариант из шаблона, который в работе.
    Ссылка на сообщение
    Поделиться на другие сайты
    • 3 месяца спустя...

     

    Блин, да сколько можно-то??

    Каждую неделю выкладывать?

                            {foreach $categories as $c}
                            {if in_array($category->id, $c->children) && $c->subcategories}
                                <div class="col-md-12 col-xs-6">
                                    <div class="products-dropdown open-dropdown">
                                        <span><i class="icon-515" title="515"></i>{$c->name|escape}</span>
                                        <ul>
                                        {foreach $c->subcategories as $cat}
                                           <li><a {if $category->id == $cat->id}class="active"{/if} href="catalog/{$cat->url}" data-category="{$cat->id}">{$cat->name|escape}</a></li>
                                        {/foreach}    
                                        </ul>
                                    </div>
                                    <div class="clear"></div>
                                </div>
                             {/if}
                             {/foreach}
    Вот рабочий вариант из шаблона, который в работе.

    А можно так же только для трехуровневого меню???

    Ссылка на сообщение
    Поделиться на другие сайты
                                {foreach $categories as $c}

                                    {if in_array($category->id, $c->children) && $c->subcategories}

                                        <ul>

                                            {foreach $c->subcategories as $cat}

                                                {if !$cat->subcategories}

                                                    <li><a {if $category->id == $cat->id}class="active"{/if} href="catalog/{$cat->url}" data-category="{$cat->id}"><span>{$cat->name|escape}</span></a></li>

                                                {/if}

                                                {if in_array($category->id, $cat->children) && $cat->subcategories}

                                                    {foreach $cat->subcategories as $g}

                                                        <li><a {if $category->id == $g->id}class="active"{/if} href="catalog/{$g->url}" data-category="{$g->id}"><span>{$g->name|escape}</span></a></li>

                                                    {/foreach} 

                                                {/if}

                                            {/foreach}    

                                        </ul>

                                    {/if}                                

                                 {/foreach} на 3 уровня сделал так если кому то надо

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

    А зачем вам реально подкатегории? Если у вас как минимум два меню на борту?! Я в теме более 8 лет и скажу, что это только минус вашему юзабилити сайта. Ибо человеку-юзеру это нахер не надо. Делайте СДЛ, не извращайтесь.

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

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

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

    Нужно тогда выводить по АйДи категории

     

    Не совсем понимаю как это корректно сделать.Логику понимаю, что я выбриаю айди категории и если там есть активные подкатегории то вывести их. Только бы языком симплы ;) 

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

    Здравствуйте подскажите какое решение будет для Вывода подкатегорий с подкатегориями третьего уровня ? 

     

    поконкретнее где именно? если просто в категории, то так

    {function name=categories_sub}
    	{if $categories}
    		<ul>
    			{foreach $categories as $c}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_sub categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    		</ul>
    	{/if}
    {/function}
    {categories_sub categories=$category->subcategories}
    

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

    {$first_category = $category->path|first}
    {function name=categories_sub}
    	{if $categories}
    		<ul>
    			{foreach $categories as $c}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_sub categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    		</ul>
    	{/if}
    {/function}
    {categories_sub categories=$first_category->subcategories}
    
    Ссылка на сообщение
    Поделиться на другие сайты

     

    поконкретнее где именно? если просто в категории, то так

    {function name=categories_sub}
    	{if $categories}
    		<ul>
    			{foreach $categories as $c}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_sub categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    		</ul>
    	{/if}
    {/function}
    {categories_sub categories=$category->subcategories}
    

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

    {$first_category = $category->path|first}
    {function name=categories_sub}
    	{if $categories}
    		<ul>
    			{foreach $categories as $c}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_sub categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    		</ul>
    	{/if}
    {/function}
    {categories_sub categories=$first_category->subcategories}
    

     

    Спасибо огромное !!! это оно !

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

     

     

    Подскажите пожалуйста, по моей задумке выходит так:

     

    {if $category->subcategories}
    <!-- ТУТ Подкатегории -->
    {$first_category = $category->path|first}
    {function name=categories_sub}
    	{if $categories}
    		<ul>
    			{foreach $categories as $c}
    				{if $c->visible}
    					<li>
    						{if $c->image}{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{if $c->subcategories}
    							<!-- ТУТ Подкатегории 3-тьего уровня -->
    							{categories_sub categories=$c->subcategories}
    						{else}
    							<!-- ТУТ описание категории -->	
    							{$c->description|truncate:155:'...'}	
    						{/if}
    					</li>
    				{/if}
    			{/foreach}
    		</ul>
    	{/if}
    {/function}
    {categories_sub categories=$first_category->subcategories}
    
    {else}
    <!-- ТУТ ТОВАРЫ -->
    {/if}
    

    но при нажатии на родителя второго уровня которые включают в себя третий уровень, выходит не ( ТОВАРЫ ) а всё те же категории второго уровня, а при клике на категории второго уровня которые не включают в себя подкатегории третьего уровня отображаются ( Товары ) почему так выходит не подскажите ? 

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

    mishanya

     

     

    Подскажите пожалуйста, по моей задумке выходит так:

     

     

    но при нажатии на родителя второго уровня которые включают в себя третий уровень, выходит не ( ТОВАРЫ ) а всё те же категории второго уровня, а при клике на категории второго уровня которые не включают в себя подкатегории третьего уровня отображаются ( Товары ) почему так выходит не подскажите ? 

     

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

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

    можно ли сделать так что бы второй уровень не тянул условия первого уровня ? находясь на главной странице я выпираю категорию (бытовая техника) переходя в неё у меня отображаются блоками на странице подкатегории второго уровня , у подкатегорий второго уровня у которых имеется подкатегории третьего уровня они отображаются, если же их нет отображается описание, ( все работает ) но при нажатии на подкатегорию у которых есть подкатегория третьего уровня я попадаю на ту же страницу с подкатегориями второго уровня. а по идеи должны отображаться товары.

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

    можно ли сделать так что бы второй уровень не тянул условия первого уровня ? находясь на главной странице я выпираю категорию (бытовая техника) переходя в неё у меня отображаются блоками на странице подкатегории второго уровня , у подкатегорий второго уровня у которых имеется подкатегории третьего уровня они отображаются, если же их нет отображается описание, ( все работает ) но при нажатии на подкатегорию у которых есть подкатегория третьего уровня я попадаю на ту же страницу с подкатегориями второго уровня. а по идеи должны отображаться товары.

     

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

    {if $category->subcategories}
    
    {/if}
    

    тогда если в категории будут товары и подкатегории будет выводить и то и то, если нет, только что-то одно

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

    категория второго уровня выводит настройки первого уровня а не товары ( происходит это при условии что она включает в себя подкатегорию третьего уровня) если нет подкатегории третьего уровня то выводятся товары !

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

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

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

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

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

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

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

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

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

    Загрузка...

    ×
    ×
    • Создать...