Смысл разработки адаптивного сайта-это показать контент пользователям мобильных устройств в удобочитаемом виде. Однако: в современном web строительстве превуалируют скрипты, анимация, большое количество картинок. Адаптивному шаблону приходится тянуть все возможные файлы, которые используются шаблоном что полностью перечеркивает смысл мобильного представления шаблона. Через мобильный интернет он грузится на столько долго, что полностью теряет смысл.
Я сторонник разработки отдельной мобильной версии сайта, точнее отдельного шаблона, который максимально облегчен для загрузки с мобильного интернета. Само собой, все переключения должны быть автоматическими, без участия пользователя.
В данном видео расскажу как:
-подключить мобильную, облегченную версию шаблона битрикс
-сделать автоматический переход пользователя на данный шаблон, если он зашел с мобильного устройства
-дать возможность пользователю переключиться на полную версию шаблона-по кнопке
Все что потребуется для реализации (как использовать смотрите в видео):
В init.php
В header.php полного шаблона (в видео код немного отличается, вставляйте как тут: дополнено для обратного перехода)
Адреса шаблонов
Настройка условий
![]()
Александр
|
Большое спасибо!
Но почему вместо прямого определения в коде UA устройств не использовать скрипт с Там и устройств гораздо больше, можно разделять телефон-планшет-компьютер, браузер, код упростится, например $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(); } Как-то так. |
![]()
Михаил Базаров
|
||
|
||
![]()
Алексей
|
Здравствуйте!
Подскажите пожалуйста как подключить отсюда Заранее спасибо, С Уважением, Алексей |
![]()
Михаил Базаров
|
||
|
||
![]()
Guest
|
Добрый день. Прошу уточнить как настраивать переключение на мобильный шаблон, если на сайте применен не один, а несколько шаблонов (для разных файлов и папок).
|
![]()
Михаил Базаров
|
||
|
||
![]()
Guest
|
||||
<? $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' для мобильно версии самого последнего в списке шаблона, то на мобильную версию переход не происходит ни на одном шаблоне. |
||||
![]()
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 может на это влиять? |
![]()
Михаил Базаров
|
||
Киньте ссылку на ваш сайт прямо сюда или на почту mihail@camouf.ru |
||
![]()
Александр
|
Сделал все как было описано выше. Все заработало. Но через несколько дней вхожу с мобильного устройства и обнаруживаю шаблон десктопа.
Может подскажите в чем дело |
![]()
Vakh
|
||
Здравствуйте, Михаил!
У меня одного случилось так или просто никто не проверял: Была адаптивная верстка и проверка google показывала, что сайт адаптирован для мобильных устройств. После подключения второго шаблона (описанным выше способом) проверка выдает ошибку:
|
||
![]()
Михаил Базаров
|
||||
А так, все что показано в видео работает прямо сейчас на этом сайте, проверку google проходит нормально |
||||
![]()
Vakh
|
||||||
Кстати, проблема решилась путем включения редиректа 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 во второе после знака равенства. И всё работает! Подскажите, чем мой код плох и зачем там у вас такой огород из кода нагроможден? |
![]()
Михаил Базаров
|
||
|
||
![]()
Vakh
|
Здравствуйте, Михаил!
Использовал этот метод у себя и еще на сайте клиента. На моем сайте все работает на ура, а у клиента первый раз закидывает на основную версию, а после обновления страницы или переходе по сайту подключается мобильный шаблон. Пробовал с разных устройств и браузеров - везде одно и то же. Поможете разобраться? Спасибо! |
![]()
Guest
|
Добрый день Михаил, во-первых спасибо за полезные уроки!, так держать!, у меня вопрос: все сделал как прописано, все редиректится, но редиректится на мобильную версию и когда с компьютера заходишь, а при нажатии перейти на полную версию сайта переходит, но при переходе на другую станицу на основном сайте опять переадресовывает на мобильную версию, буду признателен если натолкнете куда копать? заранее признателен
|
![]()
Виктор
|
Михаил спасибо за код, но на текущий момент при композитном режиме получается бред, постоянная перезапись в композит. Как написать этот же модуль без использования User Agent или что на что подменить, чтобы композит работал и переход??
|
![]()
Максим
|
Михаил, спасибо за урок.
Уточняющий вопрос, если есть у вас есть время. Правильно ли я понял, что для мобильных устройств нужно создать не только новый шаблон "Главной страницы" а новый сайт? То есть к примеру -Был один сайт, в терминах битрикс S1 Создаём копию сайта и пуcкай называется S2 И вот переход в случае захода с мобильного устройства должен идти именно на главную страницу S2 Спасибо |
![]()
Guest
|
||
|
||
![]()
Михаил Базаров
|
||||
Но в этом способе именно шаблон, сам сайт тот же самый. Страницы созданные на сайте сразу попадают в обе версии. Просто переключается шаблон, в рамках того же сайта |
||||
![]()
Максим
|
Михайл,
Спасибо за ответы. Обращаюсь с вопросом - Есть ли у вас время проделать переключение на разные шаблоны на сайте ? Сколько потребуется времени и какая стоимость? ![]() Исходные данные 1. Привожу пример упрощенной картинки, до уровня которой пришлось упрощать сайт, чтобы google признал его оптимизированным 2. Сайт был сверстан давно и не переделывался. 3. Первоначально файл стилей находился в корне и я его перенес в шаблон Какие у меня возникли затруднения 4.После правки копии шаблона для PDA по каким то причинам сканер безопасности сообщал при сканировании, что внешнее сканирование невозможно. То есть я как-то вредил сайту. 5. На главной странице добавлена новостная лента, удаляя которую из копии шаблона (для PDA) я соответственно удалял её и с главной страницы. 6. Проделав указанные вами в видео действия, получалось так, что мобильные устройства сайт не видели. То есть шаблон PDA для них не включался. |
![]()
Иван
|
Добрый день. Решение подключения мобильной версии при наличии на сайте нескольких шаблонов так и не нашли?
|
![]()
Михаил Базаров
|
||
|
||
![]()
Guest
|
Здравствуйте Михаил! Хочу выразить благодарность за доступный и весьма информативный урок уложенный в эту статью и видео. Сделал у себя на сайте, все работает как часы, без каких либо сложностей. Возник один вопрос, который возможно будет интересен и другим читателям этой страницы:
У меня в htpacces прописано два редирекста: с http на https и с www на без www. В связи с этим Гугд Пэйдж Спид Инсайт ругается на наличие двух лишних редиректов на странице при перебросе на ?type=pda. Подскажите пожалуйста как тут лучше поступить? Вот как я подправил последний фрагмент кода из шаблона(полагаю, что в нем собака зарыта): ....... ($_SERVER["SERVER_NAME"] == "мойсайт.рф" ;) && empty($VISITOR_ID)) { $APPLICATION->set_cookie("MOBILE_VISITOR_MB", "MOBILE", time()+60*60); LocalRedirect("?type=mobile" ;) ; exit(); ..... При указании в LocalRedirect() полного названия сайта с http страница загружается только со второго раза. А при указании в пуникод выскакивает предупреждение о редиректе на другой ресурс, потому свел код к "?type=mobile". |
![]()
Михаил
|
подскажите а как сделать переадресацию для разных сайтов без потери ссылки ?
site.ru/catalog/ на site.ru/m/catalog/ |
![]()
Марина
|
Добрый день, Михаил!
Спасибо Вам за огромный труд! |
На нем, уже много видеоуроков по 1С-Битрикс. Как одиночные видео так и серии видеоуроков Перейти на канал
Совсем скоро выйдет видеокурс по разработке доски объявлений с мобильным приложением. Подписывайтесь и будьте в курсе: