Страница 1 из 6

CollapseCategoriesLight

Добавлено: 20 авг 2014, 07:40
Alecto
Collapse Categories под версию PHPBB3.1

Решили с Алг не делать выборку вариантов "база/локалсторе" в админке, а просто разнести на два альтернативных решения.

Версия Light

Что умеет CollapseCategoriesLight:
- сворачивает/разворачивает категории на главной странице списка форумов
- работает с блоком recent topics
- запоминает состояние
- проверяет установку расширения CollapseCategories (полная версия работает с БД) и не включается, если альтернативный коллапс установлен

Достоинства/недостатки:
+ очень простой код
+ никаких дополнительных полей, настроек и запросов к базе
+ работает для всех пользователей (в т.ч. для гостей)
- не умеем восстанавливать настройки для пользователей и нескольких компьютеров
- при добавлении новых категорий понадобится повторно свернуть/развернуть категории

По-умолчанию блок recent topics не сворачивается, чтобы включить сворачивание блока и запоминание состояния - откройте файл jquery.collapsel.js и раскомментируйте следующие за указанной строки (2 вхождения)

Код: Выделить всё

// для recent topics - раскомментировать
закомментируйте следующую за этой строку

Код: Выделить всё

// только категории - закомментировать, если включается recent topics
Мой выбор - облегченная версия CollapseCategoriesLight
https://github.com/Alecto/CollapseCategoriesLight

Альтернативная версия CollapseCategories
viewtopic.php?p=2621#p2621
Алг писал(а):сделала сохранение состояния категорий. можно попробовать, взяв экст тут https://github.com/alg5/CollapseCategories
Обязательно отключить, если уже ставили, удалить данные, подключить и очистить кэш
И ещё, для того, чтобы экст заработал, надо изменить содержимое файла includes/functions_display.php
код брать отсюда https://github.com/rxu/phpbb3/blob/0aa7 ... isplay.php

Collapse Categories 3.1

Добавлено: 20 авг 2014, 17:40
Алг
Alecto писал(а):не смог найти подходящее событие для списка форумов на index.php
надо искать события в темплейтах
все существующие на сегодняшний день события находятся тут https://wiki.phpbb.com/Event_List#Template_Events
наиболее подходящим выглядит "forumlist_body_category_header_after" ( не проверяла)

Collapse Categories 3.1

Добавлено: 20 авг 2014, 17:51
Alecto
Алг писал(а):надо искать события в темплейтах
искал
Алг писал(а):forumlist_body_category_header_after
пробовал - вставляет код не туда куда нужно.
Алг писал(а):все существующие на сегодняшний день события находятся
жаль, значит пока не реализовать задуманное
в код шаблонов залезть можно но не хочется и не правильно это

:(

Collapse Categories 3.1

Добавлено: 20 авг 2014, 19:48
Алг
да, не хватает там, да плюс нужно иметь возможность добавлять столбцы
Нужна пара событий

Collapse Categories 3.1

Добавлено: 20 авг 2014, 20:59
Alecto
получилось по совету Татьяны в соседней теме

Код: Выделить всё

	$(".topiclist").before("<div class=collapsetrigger'>Тест</div>");
результат
<div class="collapsetrigger">Тест</div>
<ul class="topiclist">
<div class="collapsetrigger">Тест</div>
<ul class="topiclist topics">
правда, мне надо получить вот такой результат
<div class="collapsetrigger">Тест</div>
<ul class="topiclist">
<div class="collapsethis">
<ul class="topiclist topics">
</div>
не пойму, как разделить условия, если в UL используются одни и те же классы.

Collapse Categories 3.1

Добавлено: 20 авг 2014, 21:11
Дмитрий Николаевич
Вот это не работает?
$(".topiclist").before("<div class='collapsethis'>");
или же
$(".topiclist topics").before("<div class='collapsethis'>");

Collapse Categories 3.1

Добавлено: 20 авг 2014, 21:23
Alecto
Дмитрий Николаевич писал(а):Вот это не работает?
работает. я вроде так и написал.
первый блок вставляет так как нужно и там где нужно.
проблема со вторым блоком, поскольку перед ним вставляется тот же див collapsethis изза класса topiclist, мне же нужно взять второй UL в див с другим классом.
постом выше я писал.

может както через флиги попробовать?
хотя опять же - циклов никаких нет. есть фукция, которая обрабатывает все элементы.

Collapse Categories 3.1

Добавлено: 20 авг 2014, 21:40
Alecto
пытаюсь делать так

Код: Выделить всё

	$(".topiclist").before(function(){
		if($(this).hasClass('topics'))
			return '<div class="collapsethis">';
		else
			return '<div class="collapsetrigger">Тест</div>';
	});

	$(".topiclist").after(function(){
		if($(this).hasClass('topics'))
			return '</div>';
		else
			return '';
	});
но, проблема в том, что первый открывающий див <div class="collapsethis"> автоматически закрывается, в итоге получаю
<div class="collapsethis"></div>
<ul class="topiclist topics">
</div>
вместо
<div class="collapsethis">
<ul class="topiclist topics">
</div>
как побороть?

Collapse Categories 3.1

Добавлено: 21 авг 2014, 00:05
Alecto
поборол

Collapse Categories 3.1

Добавлено: 21 авг 2014, 00:56
Alecto
сейчас обрабатывается только первый заголовок

Код: Выделить всё

	$(".topiclist").before(function(){
		if($(this).hasClass('topics'))
			return '<div class="collapsetrigger collapseactive"></div>';
	});


	$(".topics").wrap('<div class="collapsethis" aria-hidden="false"></div>');

как сделать, чтобы проход был по всем элементам на странице?

и, наверное, надо добавить условие, чтобы скрипт подключаелся только на главной странице?
как записать такое условие?