Заглушка на первую страницу

#
Re: Заглушка на первую страницу
Оооо.. огромное спасибо. Был бы очень благодарен, а то завтра сдвать уже сайт
#
Re: Заглушка на первую страницу
А раздел "/" мешает, так как в системе объязательно должен быть в структуре раздел с путем "/", в моем случае страница "О компании", и сооствественно он отображается в меню, и если перейдешь в этот раздел "/" - тебе перенесет на мою заглушку.. которая по htaccess'у первая..
#
Re: Заглушка на первую страницу
Ну, вот вам пример макета сайта, который выводит на главной заставку или основное содержание, в зависимости от того, как пользователь попал на главную страницу.
Обратите внимание, заставка выводится только тогда когда пользователь на главной, и попал туда по ссылки с другого сайта.
А вот блок с контентом главной страницы выводится _всегда_, но в случае если пользователю надо показать заставку, этот блок выводится скрытым через стили. Это сделано для того, чтобы поисковые роботы могли проиндексировать настоящее содержимое главной, а не только заставку. В противом случае (в зависимости от содержания заставки) можно получить, в лучшем случае, проблемы с индексацией сайта, а в худшем - обвинение в клоакинге со стороны поисковика.
А теперь сам код. Он достаточно подробно комментирован, так что я надеюсь, вы разберетесь.
<?php
// запоминаем в переменную id узла структуры главной страницы
// сюда надо подставить тот id который у вас на сайте,
// цифра 1 тут просто для примера.
$root_structure_id = 1;

// если мы находимся на главной
if (CURRENT_STRUCTURE_ID == $root_structure_id)
{    
    // установим флаг отображения заставки
    $show_splash = true;
    
    // проверим, существует ли referrer (если его не существует, значит посетитель вбил адрес сайта руками, или зашел из закладки и значит заставку надо показывать)
    if (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>
Заказов не беру. Консультирую редко.
#
Re: Заглушка на первую страницу
огромное спасибо.. очень выручили
#
Re: Заглушка на первую страницу
shmel79, пожалуйста.
Все получилось?
Заказов не беру. Консультирую редко.
#
Re: Заглушка на первую страницу
shmel79 писал(а):
Я так понял, что нужно создать новый файл index.php, где будет обрабатываться $_SERVER['HTTP_REFERER'], а тот который сейчас переименовать, к примеру в index2.php
- мы вам рекомендовали, цитата: "разместить код заглушки в коде макета, используемом для главной страницы сайта". На основании чего вами был сделан вывод о необходимости создания еще одного индексного файла index2.php - не понятно. Он не нужен, естественно.

#
Re: Заглушка на первую страницу
Только довелось попробывать использовать код. Не работает.

А шаблон с рабочего примера приводился?
#
Re: Заглушка на первую страницу
А должен работать. - Код писался на стандартном демо-сайте и на нем же был протестирован.
Стучитесь с доступами в аську, посмотрю.
Заказов не беру. Консультирую редко.
#
Re: Заглушка на первую страницу
shmel79, нужно во1х читать комментарии в коде, а не копипастить его не глядя, а во2х быть внимательнее.

Вот здесь
// запоминаем в переменную id узла структуры главной страницы
// сюда надо подставить тот id который у вас на сайте,
// цифра 1 тут просто для примера.
$root_structure_id = 1;
вместо 1 в вашем случае надо было написать 103

А вот тут
<div id="lightgradient" style="display: <?=$content_display?>;">
вы забыли знак равно перед $content_display
Заказов не беру. Консультирую редко.
#
Re: Заглушка на первую страницу
Kotoff а не подскажите.Вот мы вошли на сайт, посмотрели заставку и вот оказались уже на сайте с контентом. А как снова попасть на страницу с закладкой? Я имею в виду нажав на какую-нибудь ссылку определенную
изучаю hostcms 6
Авторизация