На форуме имеется блок объявлений, то есть тем которые таковыми являются. И он закреплен перед темами. Отсюда вопрос, как его можно сделать сворачиваемым? Или еще лучше сделать объявление сворачиваемым этим расширением https://www.phpbbguru.net/community/vie ... hp?t=42461
Комментарии: 16
Сейчас поигрался со скриптом. Итог такой:
- если на форуме свёрнут 1ый в списке форум:
- при попадании в любой форум с "объявлениями" и с подфорумом - последний будет свёрнут;
- при попадании в любой форум где нет подфорумов, но есть одни "объявления" - они будут свёрнуты;
- на форуме свёрнуто пара первых форумов:
- при попадании в любой форум с "объявлениями" и с подфорумом - будут свёрнуты оба;
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!
Файл overall_footer_after:
файл overall_header_head_append:
Код: Выделить всё
<!-- IF S_INDEX or S_VIEWFORUM or .similar -->
<!-- INCLUDEJS http://code.jquery.com/ui/1.10.3/jquery-ui.js -->
<script type="text/javascript">
// <![CDATA[
var sh_i = -1; // позиция в массиве
var showhidden_triger = []; // массив состояний категорий
// создаем кнопки, загружам и устанавливаем состояния категорий
$(".topiclist.forums, .bstyle-similar .bstyle-similar-list, .announcement .topiclist.topics").each(function () {
$(this).before(function () {
if ($(this).hasClass('forums') || $(this).hasClass('bstyle-similar-list') || $(this).hasClass('topics')) {
sh_i = sh_i + 1;
var cat_id = 'cat_' + sh_i; // формируем имя категории
showhidden_triger[sh_i] = localStorage.getItem(cat_id); // загружаем состояние из локалхоста
if (showhidden_triger[sh_i] == null) { showhidden_triger[sh_i] = 'true' };
if (showhidden_triger[sh_i] == 'false') {
return '<div class="trigger inactive" cat="' + cat_id +'"></div>';
} else {
return '<div class="trigger active" cat="' + cat_id +'"></div>';
}
}
}).wrap('<div class="collapsethis" aria-hidden="false" />');
});
sh_i = 0; // обнуляем позиции массива
// создаем атрибуты, показываем/скрываем категории
$(".collapsethis").each(function () {
if (showhidden_triger[sh_i] == 'false') {
$(this).attr('aria-hidden', 'true').hide();
$(this).parents('div.forabg, .bstyle-similar, div.forumbg').css('opacity', '0.3');
}
sh_i = sh_i + 1;
});
// отрабатываем клики показать/скрыть категорию
$('.trigger').click(function () {
var showhidden_triger_this = $(this).next().attr('aria-hidden');
if (showhidden_triger_this == "false") {
$(this).next().attr('aria-hidden', 'true').slideUp(500, 'easeInQuart', function() {
$(this).parents('div.forabg, .bstyle-similar, div.forumbg').animate({
opacity: '0.3'
}, 1000)
});
$(this).removeClass('active').addClass('inactive');
} else {
$(this).parents('div.forabg, .bstyle-similar, div.forumbg').animate({
opacity: '1.0'
}, 50, function() {
$('.trigger', this).next().attr('aria-hidden', 'false').slideDown(250, 'easeOutQuad')
});
$(this).removeClass('inactive').addClass('active');
}
localStorage.setItem($(this).attr('cat'), showhidden_triger_this); // сохраняем
});
$('div.forabg, .bstyle-similar, div.forumbg').on('mouseenter mouseleave', '.trigger.inactive', function(event) {
var time = 200, opacity = event.type == 'mouseenter' ? '1.0' : (time = 0,'0.3');
$(event.delegateTarget).stop(true).delay(time).animate({ opacity: opacity }, 300)
})
// ]]>
</script>
<!-- ENDIF -->
Код: Выделить всё
<!-- IF S_INDEX or S_VIEWFORUM or .similar -->
<!-- INCLUDECSS @alecto_CollapseCategoriesLight/collapse.css -->
<!-- ENDIF -->
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!