Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Как раскрыть категории второго уровня


Recommended Posts

У меня проблема, поиском всё перелапатил не нашел, ни модуля ни решения:

Мне надо показывать второй уровень категорий всегда открытый, а третий и четвертый (да у меня и такие есть) только при нахождении в них.


Подскажите пожалуйста, очень надо! Буду признателен за любую наводку. 

Спасибо!

Link to post
Share on other sites

Насколько я понял, эта фишка нужна для модуля "категории"?

Если да, то:

 

/catalog/view/theme/ТЕМА_МАГАЗИНА/template/module/category.tpl

в начало файла, перед первым дивом вставляем нечто подобное:

<style type="text/css">
	a.active.nonactive {
		color: #0E0e0e;
	}		
</style>

Затем в файле ищем строки

 

<?php } else { ?>
          <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php } ?> 

и добавляем к ссылке class="active nonactive"

<?php } else { ?>
          <a href="<?php echo $category['href']; ?>" class="active nonactive"><?php echo $category['name']; ?></a>
          <?php } ?> 

Это для родительских категорий, далее субкатегории 1го порядка (чуть ниже), делаем то же самое:

 

<?php } else { ?>
              <a href="<?php echo $child['href']; ?>" class="active nonactive"> - <?php echo $child['name']; ?></a>
              <?php } ?> 

 

Второй и третий уровень субкатегорий:

Для этого сначала нужно добавить их отображение в меню (в коде контроллера), затем немного видоизменить ксс'ку, которую в начале шаблона добавляли.

 

Если к вечеру еще будет актуально, я отпишусь как это сделать

  • +1 1
Link to post
Share on other sites

Очень актуально!

http://mebli-vo.com/ я сделал так как ты написал вышло вот так. Почти то что хотел только третий уровень открыт всегда, а очень надо только при активности. 

 

Сам увидишь мою структуру поймешь, что другого варианта просто нет ))

Спасибо большое за то что аукнулся! Помоги пожалуйста далее.

Link to post
Share on other sites

Кстати мой код выглядел так:

<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
    <div class="box-category">
      <ul>
        <?php foreach ($categories as $category) { ?>
        <li>
          <a href="<?php echo $category['href']; ?>"<?php if ($category['category_id'] == $category_id) { ?> class="active"<?php } ?>><?php echo $category['name']; ?></a>
            <?php if ($category['children']) { ?>
            <ul>
              <?php foreach ($category['children'] as $child) { ?>
              <li>
                <a href="<?php echo $child['href']; ?>"<?php if ($child['category_id'] == $child_id) { ?> class="active"><?php } ?>> - <?php echo $child['name']; ?></a>
                    <?php if($child['sister_id']){ ?>
                      <ul>
                      <?php foreach($child['sister_id'] as $sisters) { ?>
                        <li>   
                        <a href="<?php echo $sisters['href']; ?>"<?php if ($sisters['category_id'] == $sisters_id) { ?> class="active"<?php } ?>>> - <?php echo $sisters['name']; ?></a>
                        </li>
                      <?php } ?>
                      </ul>
                   <?php } ?>              
              </li>
              <?php } ?>
            </ul>
          <?php } ?>
        </li>
        <?php } ?>
      </ul>
    </div>
  </div>
</div>

 

 

а теперь выглядит так 

<style type="text/css">
	a.active.nonactive {
		color: #0E0e0e;
	}		
</style>
<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
    <div class="box-category">
      <ul>
        <?php foreach ($categories as $category) { ?>
        <li>
          <a href="<?php echo $category['href']; ?>" class="active nonactive"><?php echo $category['name']; ?></a>
            <?php if ($category['children']) { ?>
            <ul>
              <?php foreach ($category['children'] as $child) { ?>
              <li>
                <a href="<?php echo $child['href']; ?>" class="active nonactive"> - <?php echo $child['name']; ?></a>
                    <?php if($child['sister_id']){ ?>
                      <ul>
                      <?php foreach($child['sister_id'] as $sisters) { ?>
                        <li>   
                        <a href="<?php echo $sisters['href']; ?>"<?php if ($sisters['category_id'] == $sisters_id) { ?> class="active"<?php } ?>>> - <?php echo $sisters['name']; ?></a>
                        </li>
                      <?php } ?>
                      </ul>
                   <?php } ?>              
              </li>
              <?php } ?>
            </ul>
          <?php } ?>
        </li>
        <?php } ?>
      </ul>
    </div>
  </div>
</div>
Link to post
Share on other sites

Попробуй сделать файл (category.tpl)с таким текстом (тот что у тебя сейчас - забэкапь обязательно!!):

 

<style type="text/css">

	a.active.nonactive {
		color: #0E0E0E;	
	}
		
</style>

<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
    <div class="box-category">
      <ul>
        <?php foreach ($categories as $category) { ?>
        <li>
          <?php if ($category['category_id'] == $category_id) { ?>
          <a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
          <?php } else { ?>
          <a href="<?php echo $category['href']; ?>" class="active nonactive"><?php echo $category['name']; ?></a>
          <?php } ?>
          <?php if ($category['children']) { ?>
          <ul>
            <?php foreach ($category['children'] as $child) { ?>
            <li>
              <?php if ($child['category_id'] == $child_id) { ?>
              <a href="<?php echo $child['href']; ?>" class="active"> - <?php echo $child['name']; ?></a>
<!-- ======================================================================================-->				
     <?php if($child['sister_id']){ ?>
        <ul>
          <?php foreach($child['sister_id'] as $sisters) { ?>
            <li>   
<a href="<?php echo $sisters['href']; ?>"
<?php if ($sisters['category_id'] == $sisters_id) { echo 'class="active"'; } else { echo 'class="active nonactive"'; } ?>
>> - <?php echo $sisters['name']; ?>
</a>
            </li>
      <?php } ?>
   </ul>
<?php } ?>
<!-- ======================================================================================-->
				
     <?php } else { ?>
         <a href="<?php echo $child['href']; ?>" class="active nonactive"> - <?php echo $child['name']; ?></a>
			  
              <?php } ?>
            </li>
            <?php } ?>
          </ul>
          <?php } ?>
        </li>
        <?php } ?>
      </ul>
    </div>
  </div>
</div>

Как-то так должно заработать. Но с этим макс. вложенность 3 уровня. для четвертого надо будет новых "сестричек" дописывать.

  • +1 1
Link to post
Share on other sites

Спасибо большое! А можешь еще подсказать как сделать чтоб все категории не были жирным шрифтом? 

Link to post
Share on other sites

Дописываешь строку в шаблон, который я в предыдущем посте писал, чтобы получилось так:

<style type="text/css">

	a.active.nonactive {
		font-weight: normal;
		color: #0E0e0e;
	}
	
    .box-category > ul > li > a                    { font-weight: normal; }
    .box-category > ul > li a.active               { font-weight: normal; }
    .box-category > ul > li a.active + ul          { font-weight: normal; }
    .box-category > ul > li ul > li > a            { font-weight: normal; }
    .box-category > ul > li ul > li > a.active     { font-weight: normal; }

</style>

 

Этим действием мы устанавливаем активные и неактивные ссылки (класс active nonactive) в меню обычным шрифтом.

 

Если нужно выделить жирным категории 1го уровня, то просто поиграйся с font-weight'ом - у него 2 основных значения: bold и normal. Если что пиши, скину пример...

Edited by lakbor
  • +1 1
Link to post
Share on other sites

Дописываешь строку в шаблон, который я в предыдущем посте писал, чтобы получилось так:



<style type="text/css">

	a.active.nonactive {
		font-weight: normal;
		color: #0E0e0e;
	}
	
    .box-category > ul > li > a                    { font-weight: normal; }
    .box-category > ul > li a.active               { font-weight: normal; }
    .box-category > ul > li a.active + ul          { font-weight: normal; }
    .box-category > ul > li ul > li > a            { font-weight: normal; }
    .box-category > ul > li ul > li > a.active     { font-weight: normal; }

</style>

 

Этим действием мы устанавливаем активные и неактивные ссылки (класс active nonactive) в меню обычным шрифтом.

 

Если нужно выделить жирным категории 1го уровня, то просто поиграйся с font-weight'ом - у него 2 основных значения: bold и normal. Если что пиши, скину пример...

Большое тебе, человеческое, Спасибо!!!

Всё работает, и работает хорошо! 

Единственное что я не понял как сделать активный пункт жирным шрифтом.

Остальное же очень классно получилось!

Link to post
Share on other sites

Большое пожалуйста)

Заглянул на сайт - и правда гораздо лучше стало!

 

Насчет активного пункта - попробуй поиграться с

.box-category > ul > li a.active              { font-weight: normal; }
.box-category > ul > li a.active + ul          { font-weight: normal; }

вместо normal поставь bold, если не выйдет, то в

.box-category > ul > li ul > li > a.active     { font-weight: normal; }

Но послкдняя строка оч капризная почему-то...

  • +1 1
Link to post
Share on other sites

Большое пожалуйста)

Заглянул на сайт - и правда гораздо лучше стало!

 

Насчет активного пункта - попробуй поиграться с



.box-category > ul > li a.active              { font-weight: normal; }
.box-category > ul > li a.active + ul          { font-weight: normal; }

вместо normal поставь bold, если не выйдет, то в



.box-category > ul > li ul > li > a.active     { font-weight: normal; }

Но послкдняя строка оч капризная почему-то...

 

Не помогло, но это уже не критично! 

В любом случае огромное спасибо!

Реально выручил!

Я весь инет перерыл искал как такое сделать!

Link to post
Share on other sites

  • 1 year later...

Дописываешь строку в шаблон, который я в предыдущем посте писал, чтобы получилось так:

<style type="text/css">

	a.active.nonactive {
		font-weight: normal;
		color: #0E0e0e;
	}
	
    .box-category > ul > li > a                    { font-weight: normal; }
    .box-category > ul > li a.active               { font-weight: normal; }
    .box-category > ul > li a.active + ul          { font-weight: normal; }
    .box-category > ul > li ul > li > a            { font-weight: normal; }
    .box-category > ul > li ul > li > a.active     { font-weight: normal; }

</style>

 

Добрый день! Если вдруг увидите это сообщение) 

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.