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

Здравствуйте.
На сайте был включен композит. Поступила задача сделать мобильную версию. Я создал новый шаблон, в нем реализовал моб. версию. В настройках сайта указал, что по выражению 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();
            }
        }

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

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

Похожие вопросы