сделать селекты свернутыми
Сам вопрос в заголовке, вот страница фильтра _https://update.lik-astana.kz/bagetnaya-masterskaya/katalog-bageta.html подскажите как сделать элементы в закрытом виде по умолчанию.
Спасибо! |
Цитата:
|
Цитата:
Подскажите как сделать эти блоки закрытыми по умолчанию |
В куки пишется состояние, то есть выбор пользователя, а вы своим действием будете его игнорировать.
|
Stas1985,
надо смотреть ваш шаблонизатор или плагин ... а так :( ... добавить вниз страницы <script> window.setTimeout(()=> jQuery('.headexpand_show').click(), 300) </script> |
Цитата:
В куки пишется состояние - ну и пусть они записываются в свернутом виде. |
Цитата:
|
Цитата:
|
Цитата:
Вот это вряд-ли, не проверяю кук, вы будете игнорировать выбор пользователя. |
Все-таки свалил товарищ, не подумав, что у него теперь не списки будут, а цветомузыка, может пользователи пнут, одумается. :)
|
Цитата:
|
Я уже писал - проверять куки, и сделать это вполне можно на сервере еще до того, как пользователь получит страницу, к чему тащить на клиента всякий хлам превращая его в сантехника по устранению прорывов. Что нет доступа к коду серверному или не хватает знаний это сделать?
Если вы сделаете так как вам предложили, то с каждым входом на страницу списки будут изменять свое состояние. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Вот уже рабочий вариант _https://lik-astana.kz/poligrafiya/papki/papki-dlya-diplomnykh-rabot.html там вроде все в порядке
|
Цитата:
|
Да вроде сохраняет выбор пользователя, даже если перейти в карточку и вернутся назад все сохраняется.
|
Вложений: 2
Цитата:
|
так ссылка та _https://lik-astana.kz/poligrafiya/papki/papki-dlya-diplomnykh-rabot.html
|
Тоже самое, или вам видео с экрана снять?
Если вы пытаетесь сделать js-кодом, что вам показали, то даже и не пытайтесь, и без попыток ясно, что работать будет не правильно. Сервер формирует данные для блока с классом cf_wrapp_all, в котором находятся все списки. В них имеются кнопки которым формируются ID как "cfhead_custom_f_6_189" и т.п., кука при этом будет иметь тоже имя, но без "cfhead_". Вот эти куки, которые можно взять из формирующихся ID для кнопок списков, и нужно проверять. И действовать как описано выше: if ( !isset($_COOKIE['name_1']) && !isset($_COOKIE['name_2']) && !isset($_COOKIE['name_3']) ) { setcookie('name_1', 'hide', 0, '/', '.' . $_SERVER["SERVER_NAME"]); setcookie('name_2', 'hide', 0, '/', '.' . $_SERVER["SERVER_NAME"]); setcookie('name_3', 'hide', 0, '/', '.' . $_SERVER["SERVER_NAME"]); } где name_1, name_2, name_3 - имена кук для всех формирующихся списков. Заметьте, что куки сессионные. Если используется CMS, то просто вписать код в контроллер формирующий эти страницы нельзя. Например, если это opencart, то добавлять его надо через модификатор. Если иная, то согласно ее требованиям. В противном случае при обновлении или установке какого либо модуля, который может затрагивать этот контроллер, вставленный код может быть утерян. |
В модуле этот код выглядит так
<?php if(isset($filter_headers_array[$key])): if(isset($expanded_state[$key])){ if($expanded_state[$key]==1)$state='show'; else $state='hide'; }else $state='show'; ?> При просмотре echo '<pre>' ; print_r($filter_headers_array) ; echo '</pre>' ; Отдает Код:
Array |
Значит нужно выполнить:
//если не было выбора пользователя, скрываем списки if ( !array_intersect_key ( $_COOKIE, $filter_headers_array ) ) foreach(array_keys($filter_headers_array) as $cookie) setcookie ($cookie, 'hide', 0, '/', '.' . $_SERVER["SERVER_NAME"]); |
Сейчас код выполняется _https://lik-astana.kz/poligrafiya/papki/papki-dlya-diplomnykh-rabot.html
|
Нет, ну неужели вы не видите этого? Причем это происходит ужасно - сначала показывается раскрытый список, если его открывали, затем он сворачивается. Цветомузыка, не иначе, абсурд какой-то.
Откройте в конце концов отладчик. Удалите "примочку", которой вы скрываете списки. Зайдите на страницу, которую еще не открывали. В куках не будет имен списков и списки будут раскрыты. Этот момент и нужно определять сервером, только в этом случае можно установить куки, чтобы при загрузке страницы они были скрыты. |
Цитата:
рони, подскажите пожалуйста, как сделать чтоб скрипт <script>window.setTimeout(()=> jQuery('.headexpand_show').click(), 300)</script> работал только с разрешением @media screen and (min-width:320px) and (max-width:640px) { } |
|
Stas1985,
if (window.matchMedia("screen and (min-width:320px) and (max-width:640px)").matches) { window.setTimeout(()=> jQuery('.headexpand_show').click(), 300) }; |
Цитата:
|
Stas1985,
и все-таки вы же их сворачиваете, и получается так же самая фигня, только при малом разрешении - раскрыли списки, обновление страницы, списки раскрыты, а затем начинают сворачиваться. Это нормально? Не желаете сервером, вы хотя бы эти манипуляции на клиенте делали с проверкой кук. PS. И скачок кверху блока этих списков тоже не лучшее, что можно ожидать на странице. |
Часовой пояс GMT +3, время: 16:57. |