Jump to content

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


Go to solution Solved by Kosjak76,

Recommended Posts

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

 

{* Рекурсивная функция вывода дерева категорий *}
			{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}

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

Link to post
Share on other sites
  • Replies 64
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

  • 4 months later...

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

 

 

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

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

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

Link to post
Share on other sites
  • 2 weeks later...
  • 1 month later...

xipro:

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

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

 

cernos:

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

 

 

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

Link to post
Share on other sites
  • Solution

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

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

                        {foreach $categories as $c}
                        {if in_array($category->id, $c->children) && $c->subcategories}
                           
                               
                                    {$c->name|escape}
                                   
                                        {foreach $c->subcategories as $cat}
                                        {/foreach}    
                                       
                                   
                                   
                               
                             {/if}
                             {/foreach}
    Вот рабочий вариант из шаблона, который в работе.
    Link to post
    Share on other sites
    • 3 months later...

     

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

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

                            {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}
    Вот рабочий вариант из шаблона, который в работе.

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

    Link to post
    Share on other sites
                                {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 уровня сделал так если кому то надо

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

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

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

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

     

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

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

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

     

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

    {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}
    
    Link to post
    Share on other sites

     

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

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

     

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

    Link to post
    Share on other sites
    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}
    

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

    Link to post
    Share on other sites

    mishanya

     

     

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

     

     

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

     

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

    Edited by mishanya
    Link to post
    Share on other sites

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

    Link to post
    Share on other sites

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

     

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

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

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

    Link to post
    Share on other sites

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

    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...