Мобильная версия сайта

Привет всем. Вопрос тем кто работал с копмонентом Mobile Detection
Тестирую компонент Mobile Detection, для моб. версии сайта. Отличный компонент, но хотелось бы чтобы была возможность заходить на моб. версию сайта самостоятельно.
То есть компонент работает, только если зайти на сайт с телефона, тогда моб версия активируется. Если перейти site.com/?browser=mobile на стационарном компе, он не включает моб версию.
Может кто знает, как сделать чтобы можно было путешествовать из мобильной версии в обчную без проблем?
Решение под катом
Решение по мобильной версии:
Качаем компонент tagstemplate-0.0.1-beta.transport.zip.
Переименовываем его соответственно в tagstemplate-0.0.1-beta.transport.zip
Pаливаем на сервер в папку /core/packeges/
Устанавливаем
В шаблоне все что будет мобильной версией заключаем в тэги
все что обычная версия сайта в тэги
Можно также добавить версию для слабовидящих заключив ее в тэги

UPD 25.12.2014:
Выводить чанки версий сайта лучше так:
<normal>
	[[!$[[!#COOKIE.ttTemplate:is=`normal`:or:is=``:or:if=`[[!#GET.theme]]`:is=`normal`:then=`.n.front`:else=``]]]]
</normal>
<mobile>
	[[!$[[!#COOKIE.ttTemplate:is=`mobile`:or:if=`[[!#GET.theme]]`:is=`mobile`:then=`.m.front`:else=``]]]]
</mobile>
<blind>
	[[!$[[!#COOKIE.ttTemplate:is=`blind`:or:if=`[[!#GET.theme]]`:is=`blind`:then=`.b.front`:else=``]]]]
</blind>
Чтобы не рендерилось 3 чанка сразу, а выбирался нужный.

/?theme=mobile — адрес для мобильной версии
/?theme=blind — адрес для версии для слабовидящих
/?theme=normal — обычная версия

Автор плагина: Виктор
Николай Загумённов
Николай Загумённов
13 сентября 2014, 10:01
modx.pro
8 990
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 28

Ганин Роман
Ганин Роман Старожил
13 сентября 2014, 16:23
Google Chrome Dev Tools не подойдёт?

    Виктор
    Виктор Старожил
    13 сентября 2014, 19:42
    там вроде ?browser=mobi

    Вообще у меня лежит допиленный под свои нужны Mobile Detection… но пока не до конца собранный в пакет((

    Если интересно плагин на событие OnWebPagePrerender и обновленный mdetect в assets/components/tagstemplate.

    Можно пакет скомпилировать и он тоже будет работать, но хочу параметры вынести из плагина, зачем то… видимо для опыта)
      Виктор
      Виктор Старожил
      13 сентября 2014, 19:54
      Ой оказывается я их уже вынес и просто не сбросил коммит ;)))
      щас проверю отпишусь
        Виктор
        Виктор Старожил
        13 сентября 2014, 20:05
        Проверил, компонент нормально работает. параметры в настройках системы задавать)

        s265.h1.simpledream.ru/?theme=mobile

        Скомпилированный пакет

        Странно, zip заливается на modx.pro дает ссылку на файл, но нерабочую.

        Тогда уж сами компильте, кому надо
          Василий Наумкин
          Василий Наумкин Администратор
          13 сентября 2014, 20:41
          Странно, zip заливается на modx.pro дает ссылку на файл, но нерабочую.
          Поправил, вот верная ссылка.

          После закачки нужно переименовать файл в tagstemplate-0.0.1-beta.transport.zip.
            Николай Загумённов
            15 сентября 2014, 16:06
            Отличный компонент, спасибо.
        Мордынский Николай
        13 сентября 2014, 22:20
        Хммм помниться прошлой зимой, пришлось пилить самому плагин на переключения шаблона а тут уже приложение есть норм.)) Раньше пакет модмобайл был но он умер…
          Мордынский Николай
          13 сентября 2014, 22:35
          Василий, а вызов мобильной версии перепишет кеш десктопной или нет?.. На сколько я вникал в это дело народ в основном боролся за то что бы хранить паралельно кеши для разных устройств

          У меня было как, то так чтобы держать 2 кеша паралельно
          switch ($modx->event->name) {
              
              case 'OnWebPageInit':{
                  
                  require_once($modx->getOption('core_path').'components/modMobileSite/model/detectmobile.class.php');
                  $mobileDetector= new DetectMobile($modx, $scriptProperties);
                  session_start();
                  
                  if(!isset($_GET['switcher'])) {
                      $_SESSION['devise_type'] = $mobileDetector->detect_Mobile();
                      } else {
                      $_SESSION['devise_type'] = $_GET['switcher'];
                      }
                  
                  if($_SESSION['devise_type']) {
                      $modx->setOption('cache_resource_key', 'resource/'.$mobile_cache_key  = $modx->getOption('mobile_cache_key',$config,'mobile'));
                      $modx->setOption('mobile_detected', true);
                  }
                      
                  break;    
              }
              case 'OnLoadWebDocument':{
                  if ($modx->getOption('mobile_detected')) {
                      
                      $mobile_tpl_prefix = $modx->getOption('mobile_tpl_prefix',$config,'mobile');
                      //получаем список стандартных шаблонов иделаем мпасив шаблон->моб.шаблон
                      foreach ( explode(",",$modx->getOption('modSite_tpls')) as $key=>$value) {
                          $tpls_arr[$value]=$mobile_tpl_prefix.'.'.$value;
                      };
                      
                      //получаем объект текущего ресурса и его шаблона
                      
                      $tpl_id = $modx->resource->get('template');
                      $tpl_object = $modx->getObject('modTemplate',array('id'=>$tpl_id));
                      
                      //проверка на то какая версия шаблона установлена сейчас - если текущий шаблон вернул мобильный шаблон то ставим мобильную версию
                      if($mobile_tpl_name=$tpls_arr[$tpl_object->templatename]) {
                           $mobile_tpl_object = $modx->getObject('modTemplate',array('templatename'=>$mobile_tpl_name));
                           $modx->resource->set('template',$mobile_tpl_object->id);
                      }
                      
                  }
                  
                  break;    
              }
          }
            Василий Наумкин
            Василий Наумкин Администратор
            13 сентября 2014, 22:45
            По идее, да — перепишет.

            Можно заменить системный modRequest своим, чтобы раскладывать кэш раздельно для обычной и мобильной версии. Вот этот метод надо расширить — он управляет загрузкой ресурса из кэша или БД.
            TITAN-UZ
            TITAN-UZ Старожил
            28 ноября 2014, 23:39
            Как настроить ЧПУ для этих линков
              Николай Загумённов
              29 ноября 2014, 10:28
              Через файл htaccess
                TITAN-UZ
                TITAN-UZ Старожил
                29 ноября 2014, 11:20
                Знаю что за это отвечает htaccess 2 часа перебор символов так и не смог найти правленый вариант!

                За модуль спасибо! Все работает!
              Нариман Рамазанов
              06 января 2015, 23:31
              Выводить чанки версий сайта лучше так:

              Не делайте так, будут проблемы с доступом для ботов (индексацией)
                Николай Загумённов
                07 января 2015, 00:18
                Почему?
                  Нариман Рамазанов
                  07 января 2015, 00:51
                  Обдумал еще раз — возможно я сам виноват и пропустил условие ":or:is=``" в результате чего при неустановленной куке отдавалась пустая страница
                    Нариман Рамазанов
                    09 января 2015, 01:28
                    Все таки тут что-то неладное. Проверяю этим
                    developers.google.com/speed/pagespeed/insights/

                    <mobile>
                    	[[!$[[!#COOKIE.ttTemplate:is=`mobile`:or:if=`[[!#GET.theme]]`:is=`mobile`:then=`.m.front`:else=``]]]]
                    </mobile>
                    вот это условие. Если Зашли с мобильного устройства, но в то же время кука еще не установлена и ГЕТ тоже не установлен — то получим пустую страницу
                Николаевич
                Николаевич Старожил
                07 января 2015, 04:40
                <normal>
                	[[!$[[!#COOKIE.ttTemplate:is=`normal`:or:is=``:or:if=`[[!#GET.theme]]`:is=`normal`:then=`.n.front`:else=``]]]]
                </normal>
                Чёт у меня пустую страницу выводит. Кроме tagstemplate никакого больше плагина устанавливать не надо?
                  Николай Загумённов
                  07 января 2015, 13:06
                  pdotools
                  так как используется пдо парсер
                    Николаевич
                    Николаевич Старожил
                    07 января 2015, 14:57
                    Так он как бы установлен. Или включать эксперементальный парсер?
                      Николай Загумённов
                      07 января 2015, 16:46
                      да, он должен быть вкл
                        Николаевич
                        Николаевич Старожил
                        07 января 2015, 17:06
                        Действительно. Правда перестал работать MinifyX и tickets не подгружает на страницу ссылки типа
                        tickets/js/web/default.js
                          Николай Загумённов
                          07 января 2015, 22:01
                          Да, сталкивался с такой проблемой, все скрипты вручную пришлось добавить. Так и не решил
                konar777
                konar777 Старожил
                15 июня 2015, 10:07
                Ребят, столкнулся сейчас тоже с версткой мобильной версии для своего сайта. Установил mobile detection, все отлично работает. Вопрос только вот по кешу остался у меня, может кто поделится решением? а то не очень гуд если будет рендериться каждый раз. Спасибо.

                P.S. Хочу сделать еще кнопку при просмотре мобильной версии (полная версия сайта) насколько понимаю параметр будет в cookie записываться думаю писать под это дело свой сниппет, но такое чувство что здесь уже все написано, нужно только разобраться.
                  Василий Наумкин
                  Василий Наумкин Администратор
                  15 июня 2015, 10:48
                    konar777
                    konar777 Старожил
                    15 июня 2015, 10:55
                    Спасибо огромное. Насколько я понял теперь в самом плагине все встроено и не нужно tagstemplate-0.0.1-beta.transport.zip. устанавливать. Качал из управления пакетами этот плагин, там нет настроек которые на скрине из вашего репозитория. Сейчас установлю версию предложеную вами. Спасибо еще раз большое.
                      Василий Наумкин
                      Василий Наумкин Администратор
                      15 июня 2015, 11:41
                      Это разные дополнения, моё было сделано позже.
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  28