Форум русской поддержки Joomla!® CMS
09.12.2016, 13:47:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 427 раз)
0 Пользователей и 1 Гость смотрят эту тему.
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« : 07.06.2015, 18:26:03 »

Здравствуйте, уважаемые форумчане! Может кто из вас подскажет, что делаю не так..
На главной странице сайта выводится категории товаров. Между категориями я вставил разделители, чтобы выделить различные направления товаров. Для этого пришлось немного переделать maincategory.php. Но, ввиду того, что категорий достаточно много, требуется спрятать их под спойлеры. Чтобы по клику на разделитель можно было открыть или скрыть соответствующий раздел. Использовал небольшой скрипт:
Показать текстовый блок
ну и соответственно сам код страницы:
Показать текстовый блок
И все бы хорошо, но получается так, что разделы вложены друг в друга, как матрешки. Собственно саму страничку, и как она работает можно посмотреть здесь - mambo.com.ua
« Последнее редактирование: 08.06.2015, 21:28:00 от angry_ded_mazay » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7777



« Ответ #1 : 07.06.2015, 18:56:15 »

по идее вот тут не хватает дива

Цитировать
             <div>
              <p class = "category_short_description"><?php echo $category->short_description?></p>
           </div>

           </div>
        </div>
    </div>  
 <?php } ?>    
  
</div>


<?php } ?>
<?php print $this->category->description?>
</div>
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #2 : 07.06.2015, 19:01:11 »

почти... но прячется только первый товар в разделе.. и верстка едет..
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #3 : 08.06.2015, 00:00:36 »

похоже, что одним циклом foreach не обойдется... он упорно вкладывает разделы один в другой.. может быть несколько циклов помогут..
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #4 : 08.06.2015, 00:09:19 »

Не
Код
$(this).parent().children('div.spoiler_body').toggle('normal');
, а
Код
$(this).siblings('div.spoiler_body').toggle('normal');
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #5 : 08.06.2015, 08:07:59 »

К сожалению, нет.. структура категорий так и остается вложеной.. соответственно, на работе спойлеров это никак не отражается.. видимо придется делать на каждый раздел свой цикл. вот только не соображу, как сделать, чтобы последующий цикл начинался с места, где закончился предыдущий. может использовать for вместо foreach?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7777



« Ответ #6 : 08.06.2015, 10:05:36 »

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

<?php if ($k%$this->count_category_to_row==0) echo '</div>'; ?>
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #7 : 08.06.2015, 18:20:07 »

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

<?php if ($k%$this->count_category_to_row==0) echo '</div>'; ?>
добавил.. прячется только первый товар в разделе, и верстка вся летит.. специально оставил, чтобы можно было посмотреть, как оно выглядит
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #8 : 08.06.2015, 21:25:31 »

Получилось!! Smiley
Дивов действительно не хватало, но немного не там. И за подсказку отдельное спасибо, dmitry_stas. Опять немного покурочил шаблон главной категории. Получилась вот такая песня:
Показать текстовый блок
Может кому-то и пригодится идея Wink
Кстати, скрипт немного поменялся. Чтобы при открытии следующего спойлера предыдущий открывался нужно сделать так:
Показать текстовый блок
Теперь попробую улучшить, то что получилось. Хочется сделать так, чтобы по клику на основной пункт меню слева раскрывался соответствующий спойлер... Если у кого-то будут идеи - от помощи не откажусь))
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #9 : 13.06.2015, 18:06:29 »

Возвращаемся к теме... Немного исправил скрипт.
Код:
<script type="text/javascript">
jQuery(document).ready(function(){
 jQuery('.spoiler_links').click(function(){
jQuery("div[class^='spoiler_body']").hide('normal');
  if (jQuery(this).parent().children('div.spoiler_body').css("display")=="none") {
jQuery("div[class^='spoiler_body']").hide('normal');
jQuery(this).parent().children('div.spoiler_body').toggle('normal');
}
else jQuery("div[class^='spoiler_body']").hide('normal');
  return false;
 });
});
jQuery(document).on('click', 'a', function () {
     if (this.hash) {
jQuery("div[class^='spoiler_body']").hide();
         jQuery(this.hash).show(1000);
     }
});
</script>
Теперь по клику на ссылку с якорем открывается соответствующий спойлер. НО... Вся эта история работает только в пределах одной страницы. А как теперь сделать, чтобы и при переходе с других страниц это работало??
Записан
angry_ded_mazay
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #10 : 14.06.2015, 21:06:10 »

Попробовал переделать код из другого моего проекта, который активирует табы по анкорной ссылке с другой страницы.
Код:
jQuery(function() {

jQuery('ul.ma-vmenu').on('click', 'li:not(.active)', function() {
jQuery(this)
.addClass('active').siblings().removeClass('active')
.closest('div.ma-content-layout').find('div.spoiler_body').removeClass('spoiler_open').eq(jQuery(this).index()).addClass('spoiler_open');
});

var tabIndex = window.location.hash.replace('#tab','')-1;
if (tabIndex != -1) jQuery('ul.ma-vmenu li').eq(tabIndex).click();

jQuery('a[href*=#tab]').click(function() {
var tabIndex = jQuery(this).attr('href').replace(/(.*)#tab/, '')-1;
jQuery('ul.ma-vmenu li').eq(tabIndex).click();
});

});
Увы, результат тот-же. Спойлеры открываются только в пределах главной страницы. С другой страницы происходит только переход на главную с открытым по умолчанию первым спойлером((
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet