Как подружить композит и мобильную версию сайта?

Здравствуйте.
На сайте был включен композит. Поступила задача сделать мобильную версию. Я создал новый шаблон, в нем реализовал моб. версию. В настройках сайта указал, что по выражению PHP siteType=='pda' подгружать мобильный шаблон.

init.php
require_once($_SERVER["DOCUMENT_ROOT"]."/include/Mobile_Detect.php");
$detect = new Mobile_Detect();
$flag = $detect->isMobile();
if (strpos($APPLICATION->GetCurDir(), '/product/')!== false || strpos($APPLICATION->GetCurDir(), '/catalog/')!== false || $APPLICATION->GetCurPage(false) === '/') {
    if (!$detect->isMobile()) {
        setcookie('siteType', '', time()+3600*24*30,'/');
        define('siteType','');
        setcookie("MOBILE_VISITOR_MB", "", time()-1000);
    } else {
        if (isset ($_GET['type'])){
            switch ($_GET['type']) {
                case 'pda':
                    setcookie('siteType', 'pda', time()+3600*24*30,'/');
                    define('siteType','pda');
                    break;
                default:
                    setcookie('siteType', '', time()+3600*24*30,'/');
                    setcookie("MOBILE_VISITOR_MB", "", time()-1000);
                    define('siteType','original');
            }
        }
        else{
            $checkType='';
            if (isset($_COOKIE['siteType'])) $checkType=$_COOKIE['siteType'];
            switch ($checkType) {
                case 'pda':
                    define('siteType','pda');
                    break;
                default:
                    define('siteType','');
                    setcookie("MOBILE_VISITOR_MB", "", time()-1000);
            }
        }
    }
} else {
    define('siteType','');
    setcookie("MOBILE_VISITOR_MB", "", time()-1000);
}

header.php основного шаблона
require_once($_SERVER["DOCUMENT_ROOT"]."/include/Mobile_Detect.php");
    $detect = new Mobile_Detect();
    $flag = $detect->isMobile();
    if (strpos($APPLICATION->GetCurDir(), '/product/')!== false || strpos($APPLICATION->GetCurDir(), '/catalog/')!== false || $APPLICATION->GetCurPage(false) === '/') {
        $VISITOR_ID = $APPLICATION->get_cookie("MOBILE_VISITOR_MB");
        if (($detect->isMobile()) && empty($VISITOR_ID)) {
            $APPLICATION->set_cookie("MOBILE_VISITOR_MB", "MOBILE", time() + 60 * 60);
            LocalRedirect("https://".$_SERVER["SERVER_NAME"] . $_SERVER["REDIRECT_URL"] . "?type=pda");
            exit();
        }
    }

header.php мобильного шаблона
require_once($_SERVER["DOCUMENT_ROOT"]."/include/Mobile_Detect.php");
        $detect = new Mobile_Detect();
        $flag = $detect->isMobile();
        if (strpos($APPLICATION->GetCurDir(), '/product/')!== false || strpos($APPLICATION->GetCurDir(), '/catalog/')!== false || $APPLICATION->GetCurPage(false) === '/') {
            if (!$detect->isMobile()) {
                $APPLICATION->set_cookie("MOBILE_VISITOR_MB", "", time() - 60 * 60);
                LocalRedirect("https://".$_SERVER["SERVER_NAME"] . $_SERVER["REDIRECT_URL"] . "?type=original");
                exit();
            }
        }

При выключенном композите все работает корректно. Версии показываются правильные. Но стоит включить композит, все ломается. На мобилке может показываться десктопная версия, на десктопе - мобилка. Я так понимаю это из за того, что композит берет данные из кеша и получается проверка на тип устройства игнорируется. Берется последняя версия страницы в кеше. Можно ли как то использовать подмену шаблонов и композит?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 1
yurievyuri
@yurievyuri
Битрикс24, php, js
Пробывали все необходимые скрипты для этого подключить на уровне init.php, до старта прослоек Битрикса?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы