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


Фото
- - - - -

вывод меню категорий


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

#1 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 29.06.2016 - 21:37

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

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

 

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


<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> такой то стиль, а если у категории есть под категория, то у нее другой.

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

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

Прикрепленные файлы:

  • Прикрепленный файл  1.JPG   16,53К   45 раз скачано


#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 586 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.06.2016 - 21:44

Наследует все верно, есть одна сложная конструкция вида:
<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} и т.д.

#3 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 29.06.2016 - 22:04

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

К сожалению, в шаблоне стандартно НЕТ возможности в принципе полностью правильно написать такое условие.
Обычно используют {if $c->subcategories}...{/if}, но работает не совсем правильно, так как при этом не учитывается активность категорий.
Чтобы было совсем правильно, надо дорабатывать в PHP.

#4 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 586 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.06.2016 - 22:05

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

С этим согласен, есть такой косяк :D

#5 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 29.06.2016 - 22:11

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

<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} и т.д.

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

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


Изменено: motya88, 29.06.2016 - 22:17


#6 Kosjak76

Kosjak76
  • Модератор
  • 3 753 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 30.06.2016 - 03:07

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

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



#7 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 30.06.2016 - 09:45

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



#8 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 30.06.2016 - 10:07

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

 
Основные пути:
1. Изучить основы работы HTML, PHP, Smarty. Как только Вам будет понятен намек, который  сделал Noxter в #2, это и будет означать возросший уровень знаний.
2. Предложить специалистам выполнить нужное за денежку.
 
1 - познавательно, полезно, но долго и требует немалых умственных усилий
2 - быстро, эффективно, но требует материальных затрат.
Выбирайте более подходящий именно для Вас вариант.
 
Можно попробовать еще
3. Ждать, когда кто-то из мастеров сжалится и выложит для Вас полное решение. Бывают иногда на форуме такие энтузиасты.



#9 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 30.06.2016 - 15:17

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

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

Прикрепленные файлы:

  • Прикрепленный файл  1.jpg   10,14К   22 раз скачано


#10 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 30.06.2016 - 15:24

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



#11 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 586 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 30.06.2016 - 15:49

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

Вам кто-то говорил использовать
{function name=categories_tree}, а?
Уберите, и в конце кода тоже.

#12 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 30.06.2016 - 16:25

Вам кто-то говорил использовать
{function name=categories_tree}, а?
Уберите, и в конце кода тоже.

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

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

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



#13 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 30.06.2016 - 20:31

Укажите плиз где ошибка



#14 Andrey Terkin

Andrey Terkin
  • Фрилансер
  • 77 сообщений
  • Программирование, Верстка

Опубликовано 01.07.2016 - 05:31

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


#15 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 01.07.2016 - 09:30

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

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



#16 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 01.07.2016 - 09:38

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



#17 Andrey Terkin

Andrey Terkin
  • Фрилансер
  • 77 сообщений
  • Программирование, Верстка

Опубликовано 01.07.2016 - 09:42

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

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



#18 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 01.07.2016 - 10:05

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

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



#19 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 01.07.2016 - 10:13

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

Простите, Все я нашел косяк у себя.



#20 motya88

motya88
  • Пользователь
  • 119 сообщений

Опубликовано 01.07.2016 - 10:52

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

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

Спасибо






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

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