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

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

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

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

 

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


<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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

<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
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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

 

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

<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

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

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

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

{function name=categories_tree}, а?

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

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

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

{function name=categories_tree}, а?

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

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

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

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

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

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

{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}
Ссылка на сообщение
Поделиться на другие сайты

 

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо

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

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

 <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>
Спасибо
Что значит "не работает"???

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Загрузка...
×
×
  • Создать...