Заглушка на первую страницу
napishu, можно сделать ссылку на главную с каким-нибудь параметром в конце, типа
А потом в коде добавить проверку на этот параметр и соответственно показывать заставку в случае если этот параметр есть.
Выглядеть это будет примерно так
Окружать ссылку в noindex и указывать rel="nofollow" в принципе не обязательно, но весьма желательно, иначе у вас в поисковиках возникнут две "морды" сайта с разными адресами, а это не есть хорошо.
<noindex><a href="/?show_splash=1" rel="nofollow">Просмотреть заставку</a></noindex>
А потом в коде добавить проверку на этот параметр и соответственно показывать заставку в случае если этот параметр есть.
Выглядеть это будет примерно так
<?php
/**
* @author Kotoff
* @copyright 2011
*/
// запоминаем в переменную id узла структуры главной страницы
// сюда надо подставить тот id который у вас на сайте,
// цифра 1 тут просто для примера.
$root_structure_id = 1;
// если мы находимся на главной
if (CURRENT_STRUCTURE_ID == $root_structure_id)
{
// установим флаг отображения заставки
$show_splash = true;
// если передан get-параметр show_splash, то заставку надо показывать обязательно.
// если get-параметр show_splash не передан,
// то проверим, существует ли referrer (если его не существует,
// значит посетитель вбил адрес сайта руками,
// или зашел из закладки и значит заставку надо показывать)
if (!isset($_GET['show_splash']) && isset($_SERVER['HTTP_REFERER']))
{
//сохраним referrer в переменную
$referrer_url = $_SERVER['HTTP_REFERER'];
// создадим экземпляр класса site
$site = &singleton('site');
// получим массив всех доменов для текущего сайта
$resource = $site->GetAllAlias(CURRENT_SITE);
// "пробежимся" по массиву
while ($row = mysql_fetch_assoc($resource))
{
// защитимся от звездочек в доменах (от записей вида *.site.ru в доменах сайта)
$domain = $site->ReplaceMask($row['alias_name']);
// проверим есть ли в строке referrer название рассматриваемого домена
if (stristr($referrer_url, $domain) !== false)
{
// если есть, то значит переход на главную был с внутренней страницы сайта,
// и значит заставку показывать не надо
$show_splash = false;
// если мы уже нашли наш домен в referrer то остальные домены перебирать смысла нет
break;
}
}
}
// для главной страницы, отдадим заголовок, запрещающий кеширование.
// иначе у пользователя в браузере закешируется либо версия с заставкой, либо версия без нее,
// и переключение происходить не будет
header('Expires: ' . date("r", time() - 600), true);
} else
// если мы не на главной странице сайта, то заставку выводить не надо.
$show_splash = false;
// настроим стиль для отображения блока основным контентом.
if ($show_splash)
{
// для случая когда надо отображать заставку
$content_display = 'none';
} else
{
// и для случая когда не надо отображать заставку
$content_display = 'block';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
...
</head>
<body>
<? // если мы находимся на главной старанице, то нужно вывести блок заставки
if (CURRENT_STRUCTURE_ID == $root_structure_id && $show_splash) { ?>
<div id="splash">Это заставка. Сюда нужно скопировать код из раздела body документа с заставкой.</div>
<?}?>
<!-- блок с контентом выводим всегда! при отображении заставки он будет невидимым в браузере, за счет стиля display:none -->
<div id="content" style="display: <?=$content_display?>;">
<!-- а здесь будет обычный макет для сайта, который у вас и был для всех страниц. НАЧАЛО -->
<div id="header">Шапка сайта</div>
<div id="main">
Это основной контент
<?php
$kernel->show_current_template();
?>
</div>
<div id="footer">Подвал сайта</div>
<!-- КОНЕЦ. -->
</div>
</body>
</html>
/**
* @author Kotoff
* @copyright 2011
*/
// запоминаем в переменную id узла структуры главной страницы
// сюда надо подставить тот id который у вас на сайте,
// цифра 1 тут просто для примера.
$root_structure_id = 1;
// если мы находимся на главной
if (CURRENT_STRUCTURE_ID == $root_structure_id)
{
// установим флаг отображения заставки
$show_splash = true;
// если передан get-параметр show_splash, то заставку надо показывать обязательно.
// если get-параметр show_splash не передан,
// то проверим, существует ли referrer (если его не существует,
// значит посетитель вбил адрес сайта руками,
// или зашел из закладки и значит заставку надо показывать)
if (!isset($_GET['show_splash']) && isset($_SERVER['HTTP_REFERER']))
{
//сохраним referrer в переменную
$referrer_url = $_SERVER['HTTP_REFERER'];
// создадим экземпляр класса site
$site = &singleton('site');
// получим массив всех доменов для текущего сайта
$resource = $site->GetAllAlias(CURRENT_SITE);
// "пробежимся" по массиву
while ($row = mysql_fetch_assoc($resource))
{
// защитимся от звездочек в доменах (от записей вида *.site.ru в доменах сайта)
$domain = $site->ReplaceMask($row['alias_name']);
// проверим есть ли в строке referrer название рассматриваемого домена
if (stristr($referrer_url, $domain) !== false)
{
// если есть, то значит переход на главную был с внутренней страницы сайта,
// и значит заставку показывать не надо
$show_splash = false;
// если мы уже нашли наш домен в referrer то остальные домены перебирать смысла нет
break;
}
}
}
// для главной страницы, отдадим заголовок, запрещающий кеширование.
// иначе у пользователя в браузере закешируется либо версия с заставкой, либо версия без нее,
// и переключение происходить не будет
header('Expires: ' . date("r", time() - 600), true);
} else
// если мы не на главной странице сайта, то заставку выводить не надо.
$show_splash = false;
// настроим стиль для отображения блока основным контентом.
if ($show_splash)
{
// для случая когда надо отображать заставку
$content_display = 'none';
} else
{
// и для случая когда не надо отображать заставку
$content_display = 'block';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
...
</head>
<body>
<? // если мы находимся на главной старанице, то нужно вывести блок заставки
if (CURRENT_STRUCTURE_ID == $root_structure_id && $show_splash) { ?>
<div id="splash">Это заставка. Сюда нужно скопировать код из раздела body документа с заставкой.</div>
<?}?>
<!-- блок с контентом выводим всегда! при отображении заставки он будет невидимым в браузере, за счет стиля display:none -->
<div id="content" style="display: <?=$content_display?>;">
<!-- а здесь будет обычный макет для сайта, который у вас и был для всех страниц. НАЧАЛО -->
<div id="header">Шапка сайта</div>
<div id="main">
Это основной контент
<?php
$kernel->show_current_template();
?>
</div>
<div id="footer">Подвал сайта</div>
<!-- КОНЕЦ. -->
</div>
</body>
</html>
Окружать ссылку в noindex и указывать rel="nofollow" в принципе не обязательно, но весьма желательно, иначе у вас в поисковиках возникнут две "морды" сайта с разными адресами, а это не есть хорошо.
Заказов не беру. Консультирую редко.
Авторизация