Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Меню аккордеон с куками

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, у меня вопрос! Точней крик о помощи.
Я сделал сайт заказчику с меню (вот таким http://ruseller.com/lessons.php?rub=2&id=2479 )
Вот сайт http://xocotl.ru/
Но заказчику не нравится что оно при переходе по ссылке сворачивается.
Я так понимаю что данный вопрос можно решить при помощи куков.
А как это сделать я не знаю.  
Можете помочь?

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 13:49 06-09-2016 | Исправлено: afrika, 00:59 07-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я так понимаю что данный вопрос можно решить при помощи куков.  

либо куками, либо сравнивать открытый url со ссылками в меню.
там еще зависит от того, как выглядят сами линки в меню, но в общем виде что то типа (раз там используется и jquery)
$("a[href*='" + location.pathname + "']") - даст ссылки на данную страницу, а далее применить нужные классы
не проверял, но

Код:
$(function(){
$("a[href*='" + location.pathname + "']").closest('ul').parent().find('input:checkbox').trigger('click');
});

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:53 06-09-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Mavrikii! Попробую.

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 23:03 06-09-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почти решил вопрос с куками. Но столкнулся с тем, что эксплоуер почему то не запоминает положение некоторых разделов меню где много пунктов. Если сократить количество элементов то этот раздел запоминается.  
 
Как можно решить эту проблему?
 
Код получился такой:

Код:
<!-- Левое меню аккордеон -->
    <script type="text/javascript" src="/hostcmsfiles/jquery/scriptbreaker-multiple-accordion-1.js"></script>
    <script type="text/javascript" src="/hostcmsfiles/jquery/jquery.cookie.js"></script>    
<script language="JavaScript">
 
$(document).ready(function() {
    $(".topnav").accordion({
        accordion:true,
        speed: 200,
        closedSign: '<img style="padding: 5px;" src="/images/strelka_in.png"/>',
        openedSign: '<img style="padding: 5px; -moz-transform: rotate(180deg);  -o-transform: rotate(180deg);   -webkit-transform: rotate(180deg); " src="/images/strelka_in.png"/>'
    });
});
 
</script>
            <!-- Куки левого меню аккордеон -->
    <script type="text/javascript">
 $(document).ready(function(){
 var b=0;
$('.topnav ul ').prev('a').each (function(){
 $(this).next('ul').css('display',$.cookie("openUl"+b));
b++;    
 });
 
 var i;  
 $('.topnav ul').prev('a').click(function(e){
 e.preventDefault();
 setTimeout(fncookie, 600);
  i=0;
});
 
function fncookie(){  
 $('.topnav ul').prev('a').each (function(){
 var cocD=$(this).next('ul').css('display');
$.cookie("openUl"+i, cocD);
i++;
 });
}
});
</script>
 
<!-- Конец левого меню аккордеон -->

 
Пример раздела который не запоминается  html  
Подробнее...  
 
И CSS для него:
Подробнее...

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 13:32 30-09-2016 | Исправлено: afrika, 17:12 30-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afrika
Для простынь текста есть тег [more]
Не нужно все кидать в ауки - у них ограничение в 4 кб, плюс передаются с каждым запросом на сервер - зачем?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 15:25 30-09-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо, не знал пр [more] ...

Цитата:
Не нужно все кидать в ауки...

А как не все кидать? А если кто то по всему дереву пройдет ... ? И вообще не  понимаю, как тогда не все кидать..?
Это ограничение только у эксплоуэра?

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 17:18 30-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afrika

Цитата:
как тогда не все кидать..

Сохранить только нужную информацию - только об открытой вкладке. У всех такое ограничение, лишь выражаться может по разному.
https://ru.wikipedia.org/wiki/HTTP_cookie

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 18:59 30-09-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста Mavrikii
что в этом коде надо изменить, чтобы писалось только об открытой вкладке?

Код:
    <script type="text/javascript">
 $(document).ready(function(){
 var b=0;
$('.topnav ul ').prev('a').each (function(){
 $(this).next('ul').css('display',$.cookie("openUl"+b));
b++;    
 });
 
 var i;  
 $('.topnav ul').prev('a').click(function(e){
 e.preventDefault();
 setTimeout(fncookie, 600);
  i=0;
});
 
 
function fncookie(){  
 $('.topnav ul').prev('a').each (function(){
 var cocD=$(this).next('ul').css('display');
$.cookie("openUl"+i, cocD);
i++;
 });
}
 
     
});
</script>

 
Причем там можно удалить все основные разделы меню и оставить один и играет роль только то, что вложено внутри.

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 20:30 30-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afrika

Цитата:
в этом коде надо изменить, чтобы писалось только об открытой вкладке?

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:34 30-09-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
сохраняете лишь индекс (номер) открытой вкладки. при загрузке страницы делаете его отображаемым

 
Не понимаю какой индекс или номер?  И как его сделать?
 
Если это id  в стиле, то что значит сделать его видимым?  
 
Сколько будет стоить переделать этот код? Потому, что я не понимаю и не знаю как это сделать?

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 20:58 30-09-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот вам на скорую руку, но сразу говорю - реализация меню неудобная, решение может быть неоптимальное. И делать это через куки - неправильно, за это должен отвечать движок сайта. В крайнем случае - как и писал выше, через проверку совпадения URL. Сейчас же, если сайт будет открыт в двух табах браузера, меню будет запоминать просто последний клик, а не корректную опцию. Аналогично переходы по кликам в странице не изменят меню - https://jsfiddle.net/v1srfjxt/

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 08:39 02-10-2016
afrika

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо, попробую!!!!

Всего записей: 89 | Зарегистр. 26-10-2003 | Отправлено: 19:54 02-10-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Меню аккордеон с куками


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru