Здравствуйте.
На сайте был включен композит. Поступила задача сделать мобильную версию. Я создал новый шаблон, в нем реализовал моб. версию. В настройках сайта указал, что по
выражению PHP siteType=='pda' подгружать мобильный шаблон.
init.phprequire_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();
}
}
При выключенном композите все работает корректно. Версии показываются правильные. Но стоит включить композит, все ломается. На мобилке может показываться десктопная версия, на десктопе - мобилка. Я так понимаю это из за того, что композит берет данные из кеша и получается проверка на тип устройства игнорируется. Берется последняя версия страницы в кеше. Можно ли как то использовать подмену шаблонов и композит?