Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сохранение статуса (свернутый/развернутый) блока в cookie

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: Саня   (14.02.2011 в 12:34)   письмо автору
 
   для: DELUX   (14.02.2011 в 12:19)
 

Попробуйте в других браузерах.

  Ответить  
 
 автор: DELUX   (14.02.2011 в 12:19)   письмо автору
 
   для: Саня   (14.02.2011 в 11:39)
 

Я попробовал этот код,нажал "Показать блок" обновил страницу,и блок был скрит...код не работает((

  Ответить  
 
 автор: Саня   (14.02.2011 в 12:09)   письмо автору
 
   для: sim5   (14.02.2011 в 12:00)
 

Вы, видимо, пропустили мою фразу "Можно всё сделать чисто на JS."
Чисто на JS == не привлекая РНР (или любые другие серверные приложения) к этому делу.
Можно конечно изначально устанавливать всем блокам скрытый стиль и потом по js их открывать. Но это решение фэйлится для пользователей с отключённым/блокированным js. Или для мобильных браузеров, которые не поддерживают js в полной мере.

  Ответить  
 
 автор: sim5   (14.02.2011 в 12:00)   письмо автору
 
   для: Саня   (14.02.2011 в 11:49)
 

Ну так вот все и решение:
if ( !empty($_COOKIE['block-hide']) && $_COOKIE['block-hide'] == '1' ) { 
  print 'style="display:none"'; 
}
, если скрытый, это стиль по умолчанию, а уж проверить на клиенте условие и изменить его....

  Ответить  
 
 автор: Саня   (14.02.2011 в 11:49)   письмо автору
 
   для: sim5   (14.02.2011 в 11:47)
 

> Это смотря как подойти к этому вопросу.
Вот именно, что нужно отдельно подходить к этому вопросу. Например изначально задавать блокам стиль, уводящий блок за пределы рабочей области браузера. А потом на js либо передвигать его на своё место, либо не трогать. Вариантов масса, но все они требуют отдельной проработки.

  Ответить  
 
 автор: sim5   (14.02.2011 в 11:47)   письмо автору
 
   для: Саня   (14.02.2011 в 11:43)
 

Это смотря как подойти к этому вопросу. Просто делал нечто, в чем можно было указать отображение или нет блоков в неком блоке, сделано было на JS, и проблем не было, потому и спросил.

  Ответить  
 
 автор: Саня   (14.02.2011 в 11:43)   письмо автору
 
   для: sim5   (14.02.2011 в 06:29)
 

>>Но прийдётся сильно заморочиться для защиты от мигания блоков.
>И какие могут быть заморочки, да и почему должно мигать?

Если писать чисто на js, то в верстке будут выводиться блоки изначально видимые. Скрипт, скрывающий нужные блоки, загрузится чуть позже. Поэтому пользователи сначала увидят все блоки, которые через короткий промежуток времени скроются по js-скрипту.
Я удивлён, что мне приходится объяснять это вам.

  Ответить  
 
 автор: Саня   (14.02.2011 в 11:39)   письмо автору
 
   для: sim5   (14.02.2011 в 10:32)
 

Кому интересно что вы в данный момент можете или не можете?

  Ответить  
 
 автор: Саня   (14.02.2011 в 11:39)   письмо автору
 
   для: DELUX   (14.02.2011 в 05:11)
 

<div id="block" <?
if ( !empty($_COOKIE['block-hide']) && $_COOKIE['block-hide'] == '1' ) {
  print 
'style="display:none"';
}
?>>
блок, который нужно скрыть
</div>
<input type="button" value="скрыть блок" onclick="hide()">
<input type="button" value="показать блок" onclick="show()">

<script>
function show() {
  var block = document.getElementById('block');
  block.style.display = '';
  document.cookie = 'block-hide=0';
}
function hide() {
  var block = document.getElementById('block');
  block.style.display = 'none';
  document.cookie = 'block-hide=1';
}
</script>

Вот вам код, который иллюстрирует всю систему в действии. Написано без jquery. Этот код нужно тестировать в отдельном скрипте. Просто поймите как он работает.

> P.S почему именно "r-colonka-hide" ведь везде пишется "r-colonka" или так и должно быть?
Потому что cookie задаётся с именем "r-colonka-hide". "r-colonka" — это идентификатор вашего блока и к cookies он не имеет какого-либо отношения. Можете устанавливать куки с точным id блока. От этого ничего не изменится.

  Ответить  
 
 автор: sim5   (14.02.2011 в 10:32)   письмо автору
 
   для: DELUX   (14.02.2011 в 10:28)
 

Тогда с этим вопрос в раздел HTML, там помогут, к РНР это отношения не имеет. А я в данный момент не могу, просто сейчас нет времени вникать в ваши стили, чего вы там хотите, и писать код какой-то.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования