Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 24.11.2020, 08:46
Профессор
Отправить личное сообщение для Stas1985 Посмотреть профиль Найти все сообщения от Stas1985
 
Регистрация: 05.03.2012
Сообщений: 159

так ссылка та _https://lik-astana.kz/poligrafiya/papki/papki-dlya-diplomnykh-rabot.html
Ответить с цитированием
  #22 (permalink)  
Старый 24.11.2020, 09:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Тоже самое, или вам видео с экрана снять?

Если вы пытаетесь сделать 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, то добавлять его надо через модификатор. Если иная, то согласно ее требованиям. В противном случае при обновлении или установке какого либо модуля, который может затрагивать этот контроллер, вставленный код может быть утерян.
Ответить с цитированием
  #23 (permalink)  
Старый 24.11.2020, 11:27
Профессор
Отправить личное сообщение для Stas1985 Посмотреть профиль Найти все сообщения от Stas1985
 
Регистрация: 05.03.2012
Сообщений: 159

В модуле этот код выглядит так
<?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 
(
[custom_f_14_244] => Надпись:
[custom_f_13_244] => Тип переплета:
[custom_f_12_244] => Цвет папки:
)
Ответить с цитированием
  #24 (permalink)  
Старый 24.11.2020, 11:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Значит нужно выполнить:
//если не было выбора пользователя, скрываем списки
if ( !array_intersect_key ( $_COOKIE, $filter_headers_array ) ) foreach(array_keys($filter_headers_array) as $cookie) setcookie ($cookie, 'hide', 0, '/', '.' . $_SERVER["SERVER_NAME"]);
Ответить с цитированием
  #25 (permalink)  
Старый 24.11.2020, 11:43
Профессор
Отправить личное сообщение для Stas1985 Посмотреть профиль Найти все сообщения от Stas1985
 
Регистрация: 05.03.2012
Сообщений: 159

Сейчас код выполняется _https://lik-astana.kz/poligrafiya/papki/papki-dlya-diplomnykh-rabot.html
Ответить с цитированием
  #26 (permalink)  
Старый 24.11.2020, 11:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Нет, ну неужели вы не видите этого? Причем это происходит ужасно - сначала показывается раскрытый список, если его открывали, затем он сворачивается. Цветомузыка, не иначе, абсурд какой-то.

Откройте в конце концов отладчик. Удалите "примочку", которой вы скрываете списки. Зайдите на страницу, которую еще не открывали. В куках не будет имен списков и списки будут раскрыты. Этот момент и нужно определять сервером, только в этом случае можно установить куки, чтобы при загрузке страницы они были скрыты.
Ответить с цитированием
  #27 (permalink)  
Старый 24.11.2020, 13:46
Профессор
Отправить личное сообщение для Stas1985 Посмотреть профиль Найти все сообщения от Stas1985
 
Регистрация: 05.03.2012
Сообщений: 159

Цитата:
В куках не будет имен списков и списки будут раскрыты. Этот момент и нужно определять сервером, только в этом случае можно установить куки, чтобы при загрузке страницы они были скрыты.
А зачем вообще их скрывать. Может вы не правильно поняли, скрыть необходимо список.
рони, подскажите пожалуйста, как сделать чтоб скрипт
<script>window.setTimeout(()=> jQuery('.headexpand_show').click(), 300)</script>

работал только с разрешением
@media screen and (min-width:320px) and (max-width:640px) {
}
Ответить с цитированием
  #28 (permalink)  
Старый 24.11.2020, 13:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Stas1985,
https://developer.mozilla.org/ru/doc...dow/matchMedia
Ответить с цитированием
  #29 (permalink)  
Старый 24.11.2020, 14:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Stas1985,
if (window.matchMedia("screen and (min-width:320px) and (max-width:640px)").matches) {
window.setTimeout(()=> jQuery('.headexpand_show').click(), 300)
};
Ответить с цитированием
  #30 (permalink)  
Старый 24.11.2020, 14:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Stas1985
Может вы не правильно поняли, скрыть необходимо список.
Ну вот, здрастье, я и не понял, когда вопрос так и звучит - "сделать селекты свернутыми", как еще это понимать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
filter(this,this) как правильно сделать? Smip jQuery 5 23.02.2013 03:07
Как сделать что бы при регистрации человека на моем сайте у него не появлялось... drunkwolfs Общие вопросы Javascript 2 07.08.2012 10:58
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
Нужно сделать плавное появление текстового поля как на сайте vkontakte.ru paratrooper1981 Элементы интерфейса 1 23.11.2009 18:24
Помогите сделать такое меню(( Lilith Я не знаю javascript 2 02.06.2009 02:31