Jump to content

Recommended Posts

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

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

 

Итак есть такое меню:
 


<ul class="left-menu">
        <li id="id0" class="parent">
            <a href="">Категория_1<span class="arrow"></span></a>
            <div class="catalog-section-childs" style="">
                <div class="catalog-section-child">
                    <a href="">
                        <span class="child">
                            <span class="image">
                                <img src="" width="50" height="50" alt="">
                            </span>
                            <span class="text">Подкатегория 1</span>
                        </span>
                    </a>
                </div>
                
                <div class="catalog-section-child">
                    <a href="">
                        <span class="child">
                            <span class="image">
                                <img src="" width="50" height="50" alt="">
                            </span>
                            <span class="text">Подкатегория 2</span>
                        </span>
                    </a>
                </div>
            </div>
        </li>
         <li>
            <a href="">Категория_2<span class="arrow"></span></a>
            </li>
            </ul>

Как написать условия вывода категорий, что если у категории нет под категории, то у <li> такой то стиль, а если у категории есть под категория, то у нее другой.

Буду благодарен если Вы поможете!

Взялся просто учиться и разбираться. Для этого выбрал шаблон  и пытаюсь его реализовать.  

post-2334-0-75634200-1467225061_thumb.jpg

Link to post
Share on other sites

Наследует все верно, есть одна сложная конструкция вида:

<ul>
{foreach $categories as $c}
{if $c->visible}
<li>{$c->name}</li>
{/if}
{if $c->subcategories}
<ul>
{foreach $c->subcategories as $sc}
{if $sc->visible}
<li>{$sc->name}</li>
{/if}
{/foreach}
</ul>
{/if}
{/foreach}
{/ul}
Вроде все верно написал :)

Эта конструкция для 2-х уровней вложенности, если нужно 3-4-5, то делайте по аналогии {foreach $sc->subcategories as $ssc} и т.д.

Link to post
Share on other sites

Как написать условия вывода категорий, что если у категории нет под категории, то у <li> такой то стиль, а если у категории есть под категория, то у нее другой.

К сожалению, в шаблоне стандартно НЕТ возможности в принципе полностью правильно написать такое условие.

Обычно используют {if $c->subcategories}...{/if}, но работает не совсем правильно, так как при этом не учитывается активность категорий.

Чтобы было совсем правильно, надо дорабатывать в PHP.

Link to post
Share on other sites

Обычно используют {if $c->subcategories}...{/if}, но работает не совсем правильно, так как при этом не учитывается активность категорий.

Чтобы было совсем правильно, надо дорабатывать в PHP.

С этим согласен, есть такой косяк :D
Link to post
Share on other sites

 

Наследует все верно, есть одна сложная конструкция вида:

<ul>
{foreach $categories as $c}
{if $c->visible}
<li>{$c->name}</li>
{/if}
{if $c->subcategories}
<ul>
{foreach $c->subcategories as $sc}
{if $sc->visible}
<li>{$sc->name}</li>
{/if}
{/foreach}
</ul>
{/if}
{/foreach}
{/ul}
Вроде все верно написал :)

Эта конструкция для 2-х уровней вложенности, если нужно 3-4-5, то делайте по аналогии {foreach $sc->subcategories as $ssc} и т.д.

Блин, что то пока не получилось адаптировать под меню которое я выложил :(

НЕ могли бы вы показать, как это на примере с моим меню??

Edited by motya88
Link to post
Share on other sites

А в чем проблема с активностью?

При желании можно обойти категории в шаблоне 2 раза - первый раз - посчитать активные, если их ЕСТЬ - то во второй раз их вывести.

Link to post
Share on other sites

Так как мне быть??

 

Основные пути:

1. Изучить основы работы HTML, PHP, Smarty. Как только Вам будет понятен намек, который  сделал Noxter в #2, это и будет означать возросший уровень знаний.

2. Предложить специалистам выполнить нужное за денежку.

 

1 - познавательно, полезно, но долго и требует немалых умственных усилий

2 - быстро, эффективно, но требует материальных затрат.

Выбирайте более подходящий именно для Вас вариант.

 

Можно попробовать еще

3. Ждать, когда кто-то из мастеров сжалится и выложит для Вас полное решение. Бывают иногда на форуме такие энтузиасты.

Link to post
Share on other sites

 

Наследует все верно, есть одна сложная конструкция вида:

<ul>
{foreach $categories as $c}
{if $c->visible}
<li>{$c->name}</li>
{/if}
{if $c->subcategories}
<ul>
{foreach $c->subcategories as $sc}
{if $sc->visible}
<li>{$sc->name}</li>
{/if}
{/foreach}
</ul>
{/if}
{/foreach}
{/ul}
Вроде все верно написал :)

Эта конструкция для 2-х уровней вложенности, если нужно 3-4-5, то делайте по аналогии {foreach $sc->subcategories as $ssc} и т.д.

 Подскажите, где косяк у меня? У меня получилось вот так (см скрин) 

Вот какой код:

{function name=categories_tree}
       {if $categories}
          <ul class="left-menu">
              {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|escape}</a>
            
              </li>
              {/if}
              
            {if $c->subcategories}
          
                {foreach $c->subcategories as $sc}
                {if $sc->visible}
            <li class="parent">
                <a {if $category->id == $sc->id}class="selected"{/if} href="catalog/{$sc->url}" data-category="{$sc->id}">{$sc->name|escape}<span class="arrow"></span></a>
                
                
            <div class="catalog-section-childs" style="">
                <div class="catalog-section-child">
                   <a {if $category->id == $sc->id}class="selected"{/if} href="catalog/{$sc->url}" data-category="{$sc->id}">
                        <span class="child">
                            <span class="image">
                                {if $c->image}
                                <img src="{$config->categories_images_dir}{$c->image}" width="50" height="50" alt="{$sc->name|escape}">
                                {/if}
                            </span>
                            <span class="text">{$sc->name|escape}</span>
                        </span>
                    </a>
                </div>
            </div>
        </li>
                {/if}
{/foreach}
    
    {/if}
            {/foreach}
        </ul>
    {/if}
			{/function}
			{categories_tree categories=$categories}

post-2334-0-67442000-1467289071_thumb.jpg

Link to post
Share on other sites

Я прям чую, осталось чуток, подскажите друзья :)

Вам кто-то говорил использовать

{function name=categories_tree}, а?

Уберите, и в конце кода тоже.

Link to post
Share on other sites

Вам кто-то говорил использовать

{function name=categories_tree}, а?

Уберите, и в конце кода тоже.

Убрал строки,как вы и сказали.

Текущая проблема:

1)Пылесосы и миксеры -являются под категорией бытовой техники, а у меня на рисунке это видно -нет. 

2)Пылесосы и Миксеры имеют класс "parent", а должна иметь этот класс категория бытовая техника.

Link to post
Share on other sites

{if $categories}
<ul class="left-menu">
{foreach $categories as $c}
{if $c->visible}
<li id="id{$c->id}" {if $c->subcategories}class="parent"{/if}>
<a href="catalog/{$c->url}">{$c->name|escape} {if $c->subcategories}<span class="arrow"></span>{/if}</a>
{if $c->subcategories}
<div class="catalog-section-childs" style="">
{foreach $c->subcategories as $sc}
{if $sc->visible}
<div class="catalog-section-child">
<a href="catalog/{$sc->url}">
<span class="child">
{if $sc->image}
<span class="image">
<img src="{$config->categories_images_dir}{$sc->image}" width="50" height="50" alt="{$sc->name|escape}">
</span>
{/if}
<span class="text">{$sc->name|escape}</span>
</span>
</a>
</div>
{/if}
{/foreach}
</div>
{/if}
</li>
{/if}
{/foreach}
</ul>
{/if}
Link to post
Share on other sites

 

{if $categories}
<ul class="left-menu">
    {foreach $categories as $c}
    {if $c->visible}
    <li id="id{$c->id}" {if $c->subcategories}class="parent"{/if}>
        <a href="catalog/{$c->url}">{$c->name|escape} {if $c->subcategories}<span class="arrow"></span>{/if}</a>
        {if $c->subcategories}
        <div class="catalog-section-childs" style="">
            {foreach $c->subcategories as $sc}
            {if $sc->visible}
            <div class="catalog-section-child">
                <a href="catalog/{$sc->url}">
                    <span class="child">
                        {if $sc->image}
                        <span class="image">
                            <img src="{$config->categories_images_dir}{$sc->image}" width="50" height="50" alt="{$sc->name|escape}">
                        </span>
                        {/if}
                        <span class="text">{$sc->name|escape}</span>
                    </span>
                </a>
            </div>
            {/if}
            {/foreach}
        </div>
        {/if}
    </li>
    {/if}
    {/foreach}
</ul>
{/if}

Спасибо, Большое! ВСЕ проблема решена.

Link to post
Share on other sites

Блин, рано обрадовался(( Теперь почему-то когда перешел на под категорию к примеру "Пылесосы" меню перестало показывать подкатегории((

Link to post
Share on other sites

Блин, рано обрадовался(( Теперь почему-то когда перешел на под категорию к примеру "Пылесосы" меню перестало показывать подкатегории((

не должно такого быть

Link to post
Share on other sites

не должно такого быть

Ну вот у меня как раз так и есть. Находясь в подкатегории при наведении на родительскую категорию меню не выпадает

Link to post
Share on other sites

Скажите почему в меню горизонтальном  пункт Главная не работает?

 <ul class="store-horizontal">
                {foreach $pages as $p}
				{* Выводим только страницы из первого меню *}
				{if $p->menu_id == 1}
                <li>
                    {if $page && $page->id == $p->id}
                    <a class="root-item-selected" data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
                    {else}
                    <a class="root-item" data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
                    {/if}
                </li>
                {/if}
                {/foreach}
                
                       
                
            </ul>

Спасибо

Link to post
Share on other sites

Скажите почему в меню горизонтальном пункт Главная не работает?

 <ul class="store-horizontal">
                {foreach $pages as $p}
				{* Выводим только страницы из первого меню *}
				{if $p->menu_id == 1}
                <li>
                    {if $page && $page->id == $p->id}
                    <a class="root-item-selected" data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
                    {else}
                    <a class="root-item" data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
                    {/if}
                </li>
                {/if}
                {/foreach}
                
                       
                
            </ul>
Спасибо
Что значит "не работает"???

Это понимать можно по разному, а потому как у нас экстрасенсов на форуме нет, соизвольте писать свои глупые вопросы ТОЧНО!

Edited by Noxter
Link to post
Share on other sites

Что значит "не работает"???

Это понимать можно по разному, а потому как у нас экстрасенсов на форуме нет, соизвольте писать свои глупые вопросы ТОЧНО!

Проблема заключается в том, что я находясь на странице к примеру БЛОГ, нажав Главная не могу перейти на нее. 

Если посмотреть код, то браузер пункт меню отображает так 

<a class="root-item" href="" data-page="1">Главная</a>

я так понимаю должно быть 

<a class="root-item" href="/" data-page="1">Главная</a>

Как это сделать??

Link to post
Share on other sites

Скажите почему в меню горизонтальном  пункт Главная не работает?

 

На демо-сайте все прекрасно работает.

 

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

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

Link to post
Share on other sites

Проблема заключается в том, что я находясь на странице к примеру БЛОГ, нажав Главная не могу перейти на нее. 

Если посмотреть код, то браузер пункт меню отображает так 

<a class="root-item" href="" data-page="1">Главная</a>

я так понимаю должно быть 

<a class="root-item" href="/" data-page="1">Главная</a>

Как это сделать??

Посмотрите в админке должна быть страница у которой в адресе есть слеш /

Link to post
Share on other sites

Посмотрите в админке должна быть страница у которой в адресе есть слеш /

 

да ну? по умолчанию у главной нет никакого слеша. и все работает..

 

 

Проблема заключается в том, что я находясь на странице к примеру БЛОГ, нажав Главная не могу перейти на нее. 

Если посмотреть код, то браузер пункт меню отображает так 

<a class="root-item" href="" data-page="1">Главная</a>

я так понимаю должно быть 

<a class="root-item" href="/" data-page="1">Главная</a>

Как это сделать??

на демо точно так же https://yadi.sk/i/zzPp9D4HsyBiU и все работает. скорее у вас в чем-то другом проблема. 

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