0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 969 Просмотров
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Здравствуйте!
Необходимо показывать блок(модуль) только тем, кто впервые посетил сайт. В дальнейшем при обновлении страницы - не отображать.
Я нашел решение с яваскриптом и куками, но при загрузке блок появляется и исчезает только после полной загрузки страницы, это мигание раздражает. К тому же, куки работают через раз, и блок вылезает когда надо и когда не надо. Есть какие-нибудь другие решения?

Код скрипта:

Код
<div id="start">
<a id="close2" onclick="fun()" href="#" title="Спрятать приветствие"><i class="fa fa-times"></i></a>

тут всякий дурацкий текст

</div>

<script>
function setCookie(name, value, expires, path, domain, secure) {
    if (!name || !value) return false;
    var str = name + '=' + encodeURIComponent(value);
    if (expires) str += '; expires=' + expires.toGMTString();
    if (path)    str += '; path=' + path;
    if (domain)  str += '; domain=' + domain;
    if (secure)  str += '; secure';
    document.cookie = str;
    return true;
}
function getCookie(name) {
    var pattern = "(?:; )?" + name + "=([^;]*);?";
    var regexp  = new RegExp(pattern);
    if (regexp.test(document.cookie))
    return decodeURIComponent(RegExp["$1"]);
    return false;
}
function fun(){
    document.getElementById('start').style.display='none'
    setCookie('blocked','none')
}
window.onload=function(){
    document.getElementById('start').style.display=getCookie('blocked')
}
</script>

*

Shustry

  • Гуру
  • 6436
  • 744 / 3
Печеньки нужно средствами php юзать, чтобы сервер уже отдавал нужный код, а не так, как в вашем примере: тупо скриптами скрываецо.
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Кругом согласен, пример кода не дадите?
И понадежнее как-то нельзя скрыть? Я, например, куки регулярно чищу, значит, блок этот меня рано или поздно достанет.
*

Shustry

  • Гуру
  • 6436
  • 744 / 3
Код: php
if (!$_COOKIE['olduser']) {
echo 'Категорически приветстую тебя на нашем сайте!';
SetCookie('olduser','я тут был');
}
*

Shustry

  • Гуру
  • 6436
  • 744 / 3
Кругом согласен, пример кода не дадите?
И понадежнее как-то нельзя скрыть? Я, например, куки регулярно чищу, значит, блок этот меня рано или поздно достанет.

Ну правильно было бы ещё задать время жизни. Вот так на час будет:

Код: php
if (!$_COOKIE['olduser']) {
echo 'Категорически приветстую тебя на нашем сайте!';
SetCookie('olduser','я тут был',time()+3600);
}
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
А можно как-нибудь так, чтобы весь блок в код не прятать?

Код
<?php
if (!$_COOKIE['olduser']) {
$display = 'block';
SetCookie('olduser','я тут был',time()+3600000000);
}
else {$display = 'none';}
?>

<div style="display: <?php echo $display; ?>"> Всякая ерунда</div>
*

Shustry

  • Гуру
  • 6436
  • 744 / 3
Можно. Только инлайновские стили лучше заменить:

Код: php
<?php
if (!$_COOKIE['olduser']) {
$myblock = 'block';
SetCookie('olduser','я тут был',time()+3600000000);
} else {
$myblock = 'none';
}
?>

<div class="<?php echo $myblock; ?>"> Всякая ерунда</div>

Код: css
.block {display:block;}
.none {display:none;}
*

kapitansen

  • Захожу иногда
  • 51
  • 0 / 0
Спасибо! В time()+3600000000 ограничений нет? т.е., если я года два поставлю?
*

Shustry

  • Гуру
  • 6436
  • 744 / 3
Насколько знаю, нет. Но можно в более читабельном виде назначать, прям вот так: time()+60*60*24*31*12*2
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
может кто подробнее объяснитк как это в Joomla преобразовать?

if (!$_COOKIE['olduser']) {
   echo 'Категорически приветстую тебя на нашем сайте!'; //вместо Категорически приветстую тебя на нашем сайте! вставлю инклудом страницу приветсвия
   SetCookie('olduser','я тут был',time()+3600); //вместо "я тут был " можно вставить переменную. но я же не могу всю index.php главной вставить в переменную?

}


*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
ничего не пойму. мож готовый план или хак есть?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Закрыть от индексации только страницу категории

Автор DDAANN

Ответов: 5
Просмотров: 1787
Последний ответ 07.03.2021, 13:23:34
от Followme
Ошибка 500 вместо 404 на несуществующих страницах с расширением только php

Автор old_lotar

Ответов: 12
Просмотров: 1018
Последний ответ 12.02.2019, 12:58:13
от draff
Как отредактировать блок через админку?

Автор 007_1

Ответов: 2
Просмотров: 849
Последний ответ 30.08.2017, 20:14:26
от 007_1
Как убрать со страницы редактирования профиля блок (Основные настройки). картинка прилагается

Автор ogay72

Ответов: 7
Просмотров: 7171
Последний ответ 11.05.2016, 21:33:02
от sanyva
Новым материалам присваивается id=0

Автор pisklov74

Ответов: 9
Просмотров: 2455
Последний ответ 22.12.2015, 12:14:16
от arma