Телеграм: @camouf_ru Почта: mihail@bazarow.ru Заказать разработку проекта

Подключение мобильной версии шаблона Битрикс сайта, с автопереключением

Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
Ответить
RSS
Подключение мобильной версии шаблона Битрикс сайта, с автопереключением
 
Подключение мобильной версии шаблона Битрикс сайта, с автопереключением

Адаптивная верстка шагает по www но я не ее сторонник. Предпочитаю, что бы сайт не грузил чертову кучу скриптов и стилей. При загрузке адаптивного шаблона за ним тянется очень много файлов, которые перегружают мобильный трафик, что полностью нивелирует преимущества "легкого" отображения сайта. Решил создать мобильную версию шаблона для битрикс с автоматическим переключением на нужный шаблон.
 
Большое спасибо!
Но почему вместо прямого определения в коде UA устройств не использовать скрипт с http://mobiledetect.net?
Там и устройств гораздо больше, можно разделять телефон-планшет-компьютер, браузер, код упростится, например

$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
if (($deviceType == 'phone') &&($_SERVER["SERVER_NAME"] == "camouf.ru" || $_SERVER["SERVER_NAME"] == "www.camouf.ru" ;)  &&
empty($VISITOR_ID)) {
$APPLICATION->set_cookie("MOBILE_VISITOR_MB", "MOBILE", time()+60*60);
LocalRedirect("http://camouf.ru/?type=pda" ;) ;
exit();
}

Как-то так.
 
Цитата
Александр пишет:
Большое спасибо!
Но почему вместо прямого определения в коде UA устройств не использовать скрипт с http://mobiledetect.net ?
Там и устройств гораздо больше, можно разделять телефон-планшет-компьютер, браузер, код упростится, например

$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
if (($deviceType == 'phone') &&($_SERVER["SERVER_NAME"] == "camouf.ru" || $_SERVER["SERVER_NAME"] == "www.camouf.ru" &&
empty($VISITOR_ID)) {
$APPLICATION->set_cookie("MOBILE_VISITOR_MB", "MOBILE", time()+60*60);
LocalRedirect("http://camouf.ru/?type=pda" ;
exit();
}

Как-то так.
В общем-то да, можно и так
 
Здравствуйте!
Подскажите пожалуйста как подключить отсюда http://mobiledetect.net для определения устройств к битрикс, я не спец.
Заранее спасибо,
С Уважением, Алексей
 
Цитата
Алексей пишет:
Здравствуйте!
Подскажите пожалуйста как подключить отсюда http://mobiledetect.net для определения устройств к битрикс, я не спец.
Заранее спасибо,
С Уважением, Алексей
Инструкция там же на сайте имеется.
 
Добрый день. Прошу уточнить как настраивать переключение на мобильный шаблон, если на сайте применен не один, а несколько шаблонов (для разных файлов и папок).
 
Цитата
Guest пишет:
Добрый день. Прошу уточнить как настраивать переключение на мобильный шаблон, если на сайте применен не один, а несколько шаблонов (для разных файлов и папок).
Интересный вопрос. Не задавался таким, но попробуйте сделать условие перехода на мобильную версию самым последним в списке шаблонов
 
Цитата
Михаил Базаров пишет:
Цитата
Guest пишет:
Добрый день. Прошу уточнить как настраивать переключение на мобильный шаблон, если на сайте применен не один, а несколько шаблонов (для разных файлов и папок).
Интересный вопрос. Не задавался таким, но попробуйте сделать условие перехода на мобильную версию самым последним в списке шаблонов
Сделала копии всех шаблонов. В основных в header.php указанный Вами код
<?
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"  ;)  ;
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android"  ;)  ;
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS"  ;)  ;
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"  ;)  ;
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod"  ;)  ;
$mobile = strpos($_SERVER['HTTP_USER_AGENT'],"Mobile"  ;)  ;
$symb = strpos($_SERVER['HTTP_USER_AGENT'],"Symbian"  ;)  ;
$operam = strpos($_SERVER['HTTP_USER_AGENT'],"Opera M"  ;)  ;
$htc = strpos($_SERVER['HTTP_USER_AGENT'],"HTC_"  ;)  ;
$fennec = strpos($_SERVER['HTTP_USER_AGENT'],"Fennec/"  ;)  ;
$winphone = strpos($_SERVER['HTTP_USER_AGENT'],"WindowsPhone"  ;)  ;
$wp7 = strpos($_SERVER['HTTP_USER_AGENT'],"WP7"  ;)  ;
$wp8 = strpos($_SERVER['HTTP_USER_AGENT'],"WP8"  ;)  ;
$VISITOR_ID = $APPLICATION->get_cookie("MOBILE_VISITOR_MB"  ;)  ;
if (($ipad || $iphone || $android || $palmpre || $ipod || $berry || $mobile || $symb || $operam || $htc || $fennec || $winphone || $wp7 || $wp  8)  &&
($_SERVER["SERVER_NAME"] == "192.168.56.3" || $_SERVER["SERVER_NAME"] == "www.192.168.56.3"  ;)  &&
empty($VISITOR_ID) ) {
$APPLICATION->set_cookie("MOBILE_VISITOR_MB", "MOBILE", time()+60*60);
   LocalRedirect("192.168.56.3/?type=pda"  ;)  ;
exit();
}
?>
В настройках сайта если прописать условие "Выражение php" - siteType=='pda' для мобильного шаблона (если его основной шаблон без условия), то переключение на этот мобильный шаблон происходит.
Для основных шаблонов, для которых существуют условия "Для папки или файла" переход на мобильные шаблоны не происходит.
Если прописать условие "Выражение php" - siteType=='pda' для мобильно версии самого последнего в списке шаблона, то на мобильную версию переход не происходит ни на одном шаблоне.
 
Добрый день.
На Apple Safari открывается мобильная версия (в другиз браузерах нормально). Необходимо чтоб открывался обычный шаблон. В заголовке передается USER_AGENT - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12. Прошу уточнить, какое из указанных в header HTTP_USER_AGENT может на это влиять?
 
Цитата
Guest пишет:
Добрый день.
На Apple Safari открывается мобильная версия (в другиз браузерах нормально). Необходимо чтоб открывался обычный шаблон. В заголовке передается USER_AGENT - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12. Прошу уточнить, какое из указанных в header HTTP_USER_AGENT может на это влиять?
Проверил у себя на Safari под 10,10,4 - все нормально, открывается полный сайт
Киньте ссылку на ваш сайт прямо сюда или на почту mihail@camouf.ru
 
Сделал все как было описано выше. Все заработало. Но через несколько дней вхожу с мобильного устройства и обнаруживаю шаблон десктопа.
Может подскажите в чем дело
 
Здравствуйте, Михаил!
У меня одного случилось так или просто никто не проверял:
Была адаптивная верстка и проверка google показывала, что сайт адаптирован для мобильных устройств.
После подключения второго шаблона (описанным выше способом)  проверка выдает ошибку:
Цитата
Произошла ошибка при получении или анализе страницы.Dismiss
Как это решить?
 
Цитата
Здравствуйте, Михаил!
У меня одного случилось так или просто никто не проверял:
Была адаптивная верстка и проверка google показывала, что сайт адаптирован для мобильных устройств.
После подключения второго шаблона (описанным выше способом) проверка выдает ошибку:
Цитата
Произошла ошибка при получении или анализе страницы.Dismiss
Как это решить?
А зачем вы при имении адаптивной версии, подключали мобильную, (просто интересно)?
А так, все что показано в видео работает прямо сейчас на этом сайте, проверку google проходит нормально
 
Цитата
Михаил Базаров пишет:
Здравствуйте, Михаил!
У меня одного случилось так или просто никто не проверял:
Была адаптивная верстка и проверка google показывала, что сайт адаптирован для мобильных устройств.
После подключения второго шаблона (описанным выше способом) проверка выдает ошибку:
Цитата
Произошла ошибка при получении или анализе страницы.Dismiss
Как это решить?
Цитата
А зачем вы при имении адаптивной версии, подключали мобильную, (просто интересно)?
А так, все что показано в видео работает прямо сейчас на этом сайте, проверку google проходит нормально
Подключаю по тем же соображениям, что и вы. Для того, что бы убрать лишний мусор из верстки (слайдеры и т.д.).
Кстати, проблема решилась путем включения редиректа www на "безWWW".
А может сама собой решилась...
 
А для чего вы используете куки?    Если все равно при каждой загрузке страницы проверяете тип устройства с которого зашел юзер.  
 
Цитата
Dina пишет:
А для чего вы используете куки? Если все равно при каждой загрузке страницы проверяете тип устройства с которого зашел юзер.
Если юзер предпочел перейти с мобильной версии на полную, что бы ему не приходилось на каждой странице переходить на полную
 
Переадресовывается, а потом кликаешь любой пункт меню и переходишь в раздел уже в полной версии. Что не так?
 
Учитывая верхний вопрос всё сделал проще, init.php не нужен вообще, в header добавляем следующий код:


<?
$mobile_ver = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"Android"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"webOS"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"iPod"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"Mobile"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"Symbian"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"Opera M"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"HTC_"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"Fennec/"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"WindowsPhone"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"WP7"   ;)   +
strpos($_SERVER['HTTP_USER_AGENT'],"WP8"   ;)   ;
if ($mobile_ver >0) {
LocalRedirect('?sitetype=mobile');
};
?>

В настройках сайта выбираем не "выражение PHP", а "Параметр URL", куда заносим соответственно sitetype в первое окошко и mobile во второе после знака равенства.

И всё работает!

Подскажите, чем мой код плох и зачем там у вас такой огород из кода нагроможден?
 
Цитата
Денис пишет:
Учитывая верхний вопрос всё сделал проще, init.php не нужен вообще, в header добавляем следующий код:


<?
$mobile_ver = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"Android"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"webOS"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"iPod"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"Mobile"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"Symbian"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"Opera M"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"HTC_"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"Fennec/"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"WindowsPhone"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"WP7"  ;)  +
strpos($_SERVER['HTTP_USER_AGENT'],"WP8"  ;)  ;
if ($mobile_ver >0) {
LocalRedirect('?sitetype=mobile');
};
?>

В настройках сайта выбираем не "выражение PHP", а "Параметр URL", куда заносим соответственно sitetype в первое окошко и mobile во второе после знака равенства.

И всё работает!

Подскажите, чем мой код плох и зачем там у вас такой огород из кода нагроможден?
А если человек захочет с мобильной версии перейти на основную?
 
Здравствуйте, Михаил!
Использовал этот метод у себя и еще на сайте клиента.
На моем сайте все работает на ура, а у клиента первый раз закидывает на основную версию, а после обновления страницы или переходе по сайту подключается мобильный шаблон. Пробовал с разных устройств и браузеров - везде одно и то же.

Поможете разобраться?
Спасибо!
Ответить
Форма ответов
 
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить файлы
 
Заметки разработчика

Примерно с 2013-го года пишу, короткие и не очень, заметки по разработке сайтов на Битрикс. Возможно, будут полезны кому-то еще. Во всех заметках есть возможность комментирования и обсуждения. Вы можете задавать уточняющие вопросы прямо там- отвечаю или дополняю заметки по возможности.

attention