22.03.2020, 20:03
|
|
Интересующийся
|
|
Регистрация: 22.03.2020
Сообщений: 16
|
|
В какую сторону двигаться? Cookie (Javascript)
Уважаемые доны. Прошу направить меня в нужную степь и по возможности подсказать как действовать.
Идея такова: имеется шапка с двумя блоками (серый и синий). Когда пользователь заходит на сайт вкладка "Частным лицам" по умолчанию активна (на картинке_1 это видно) и пользователь может переходить по ссылкам в синей части, таким как: "Каталог", "Услуг и цены", "Межгород" и т.д. При этом вкладка "Частным лицам" остается активной. А когда Пользователь нажимает на ссылку "Юридическим лицам", то вкладка "Юридическим лицам" должна становится активной и пользователь может переходить по другим ссылкам меню в синей части (картинка_2), а вкладка "Юридическим лицам" должна оставаться активной. Все это должно реализовываться с помощью cookie. Собственно как должны меняться ссылки в синей части меню это соображу. А вот в остальном задачу не соображу как реализовать.
Последний раз редактировалось Mytnyi, 22.03.2020 в 20:54.
|
|
22.03.2020, 20:46
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Многое зависит от того, какими механизмами Вы пользуетесь
Если при каждом выборе в меню идет обращение к серверу, который генерит страницу, это одно. Пусть он ее и генерит всю, в зависимости от ссылки вместе с меню.
А если вы загружаете сразу весь возможный контент (для всего меню), то при нажатии пункта меню должен становится видимым тот блок, который к нему относится, а остальные гаситься.
|
|
22.03.2020, 21:10
|
|
Интересующийся
|
|
Регистрация: 22.03.2020
Сообщений: 16
|
|
voraa,
Процесс должен происходит по средствам cookie
|
|
22.03.2020, 21:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
|
|
22.03.2020, 23:14
|
|
Интересующийся
|
|
Регистрация: 22.03.2020
Сообщений: 16
|
|
Спасибо. Но проблема нерешилась. После нажатия на юрлица пользователь переходит на другу ссылку, а вкладка юрлица должна быть активна. а в приведенном вами примере пользователь остается на одной странице.
|
|
22.03.2020, 23:23
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Mytnyi
|
voraa,
Процесс должен происходит по средствам cookie
|
Сорри, но какой в этом смысл?
Зачем заставлять пользователя возвращаться на то место, с которого он ушел? Это не роман, который читают последовательно. Это сайт с разнообразной информацией. Человек что то посмотрел, что то ему показалось интересным, он посмотрел еще пару пунктов меню, не нашел ничего важного и ушел. И зачем следующий раз возвращать его туда же?
Представьте, что так поступал бы какой-нибудь сайт типа mdn, или википедии?.
Пусть человек положит интересующее его место в закладку.
|
|
22.03.2020, 23:44
|
|
Интересующийся
|
|
Регистрация: 22.03.2020
Сообщений: 16
|
|
Сообщение от voraa
|
Сорри, но какой в этом смысл?
Зачем заставлять пользователя возвращаться на то место, с которого он ушел? Это не роман, который читают последовательно. Это сайт с разнообразной информацией. Человек что то посмотрел, что то ему показалось интересным, он посмотрел еще пару пунктов меню, не нашел ничего важного и ушел. И зачем следующий раз возвращать его туда же?
Представьте, что так поступал бы какой-нибудь сайт типа mdn, или википедии?.
Пусть человек положит интересующее его место в закладку.
|
Попробую объяснить. Вкладки(ссылки) Физическим лицам и юридическим лицам - разные, под ними меню второго уровня тоже с разными ссылками. Человек переходит с вкладки Физические лица на вкладку Юридические лица и у него не только меняется меню второго уровня, но он и сам переходит на другу страницу site.ru/yurliucam/
Суть вся в том что и во вкладах Физические лица и Юридические лица в меню второго уровня попадаются одинаковые ссылки, например, такие как: "Контакты".
И еще весь этот блок хедара у меня подключен на все страницы через:
<?php
include_once "head.php";
?>
то есть, все ссылки, классы и тп. не поменять.
|
|
22.03.2020, 23:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от Mytnyi
|
Попробую объяснить.
|
могу пожелать только удачи, возможно кто-то подскажет решение, сам я не понимаю о чём вы пишите и что вам нужно.
|
|
23.03.2020, 06:41
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Mytnyi,
let categoryLink, targetLink;
// среди всех ссылок, которые находятся под вкладками ищется та, которая указывает на текущую страницу,
// на такую найденную ссылку добавляется класс target (чтобы добавить эффект «обводка»)
Array.prototype.filter.call(document.querySelectorAll(".menu > li > a + ul a"), link => link.href === location.href).slice(0, 1).forEach(link => {
if(targetLink) targetLink.classList.remove("target");
link.classList.add("target");
targetLink = link;
});
// находим на самих вкладках такую ссылку, адрес которой совпадает с текущим адресом страницы (если есть)
categoryLink = Array.prototype.find.call(document.querySelectorAll(".menu > li > a"), link => link.href === location.href);
// а если нет, то определяет ссылку на вкладке, к какой категории относится текущая страница
categoryLink = targetLink ? targetLink.closest(".menu > li").querySelector("a") : categoryLink ? categoryLink : document.querySelector(".menu > li > a");
// на такую найденную ссылку добавляется класс active (чтобы добавить эффект «выбранная вкладка»)
categoryLink.classList.add("active");
Здесь выполняются две задачи — обводится в кружочек ссылка, на которую перешли, и показывается та вкладка, где эта обведённая ссылка находится.
Рабочий пример можно посмотреть тут — https://charm-launch.glitch.me/h/ (код можно смотреть через консоль разработчика в браузере (Ctrl+Shift+I или F12), или только исходный код страницы (Ctrl+U)
Сообщение от Mytnyi
|
Процесс должен происходит по средствам cookie
|
И как он сможет произойти, если например ссылка была отправлена кому-то? Правильней сказать так — «Процесс должен происходить при помощи URL». Т. е. основываясь на текущем значении URL страницы, нужно найти ссылку, которую нужно «обвести в кружочек» (если возможно), также ссылку, которая представляет «вкладку» (т. е. текущую категорию, а если не возможно, то состояние по умолчанию — в примере выше это первая попавшая вкладка и подкатегория не выбирается — состояние, которое подходит, если ссылки нет в списке меню)
|
|
23.03.2020, 07:45
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Mytnyi
|
Суть вся в том что и во вкладах Физические лица и Юридические лица в меню второго уровня попадаются одинаковые ссылки, например, такие как: "Контакты".
И еще весь этот блок хедара у меня подключен на все страницы через:
<?php
include_once "head.php";
?>
то есть, все ссылки, классы и тп. не поменять.
|
А я еще раз спрашиваю, как организовано взаимодействие с сервером?
При переходе с вкладки на вкладку и на каждый пункт на сервере меню полностью генерится новая страница?
А как генерится нужный хедар? Он тоже зависит от куков?
Но это не совсем правильно. Как уже писал Malleys, невозможно будет запомнить ссылку на страницу или отослать ее кому то, т.к. нужных куков не будет.
Здесь нужно использовать адреса
Например
site.ru?tab=yur&men=doc
site.ru?tab=phys&men=cat
Это и на сервере разобрать можно (get запросы) и браузер разберет, если нужно (url.search)
|
|
|
|