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

 
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
В обновлении 2.5 присутствует возможность подключать для разных устройств разные шаблоны. В связи с этим у меня много вопросов. Я запутался в том как всем этим воспользоваться. Например если я решил создать отдельный шаблон для мобильного к дополнению к основному, то стоит ли у основного шаблона исключить адаптивный вариант для мобильных? Хотел бы обсудить в данной теме обсудить все вопросы касаемо данного дополнения.
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2553
Тоже посижу послушаю.
Я пока из новых фич воспользовался раздельными шаблонами для сайта и админки и выкинул из своего шаблона админские части.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Реклама
cms
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1160
Сложно будет тестировать, например у меня показывает desktop_device_type, когда сжимаю браузер до маленьких размеров или когда переключаюсь к device mode в хроме...
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4363
Evanescence:
например у меня показывает desktop_device_type, когда сжимаю браузер до маленьких размеров или когда переключаюсь к device mode в хроме...
Так и должно быть. Устройство определяется не по размеру экрана.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
Медаль
Сообщений: 221
а как прятать виджет для мобильных и наоборот выводить его только когда мобильная версия ?
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4363
rookee:
а как прятать виджет для мобильных и наоборот выводить его только когда мобильная версия ?
Хорошая идея. Добавим в виджеты опцию.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Решил немного разобраться что да как там работает после этой темы.
Библиотека в iCMS2 располагается здесь: ..\system\libs\mobile_detect.class.php ( репозиторий и оф. сайт).

Итак, подготовленные данные передаются в шаблон, при конструировании которого определяется тип устройства с которого пользователь открыл сайт:
..\system\core\template.php ( function __construct($name=''){...} )
Код PHP:
  1. ...
  2. $device_type = cmsRequest::getDeviceType();
  3. $template = $config->template;
  4.  
  5. if($device_type !== 'desktop'){
  6. $device_template = cmsConfig::get('template_'.$device_type);
  7. if($device_template){
  8. $template = $device_template;
  9. }
  10. }
  11.  
  12. $this->setName($template);
  13. ...
Отсюда понятно, что если сайт открывается не с десктопа, то из конфига читаются настройки и меняется шаблон вывода. (В админке установки делаются в Настройки - Общие - Интерфейс и выбор соответствующего шаблона для каждого из устройств).
Принципиально на этом всё)) Т.е., как и говорил Олег Васильевич я, функционал по умолчанию, в первую очередь, рассчитан на создание нескольких шаблонов для каждого из устройств, что имеет как свои плюсы так и минусы.
Для себя более перспективным я вижу использование одного шаблона в коде которого указывается что и для какого устройства выводить.
Например в ..\templates\default\main.tpl.php можно добавить позиции для вывода виджетов только для десктопа:
Код PHP:
  1. ...
  2. <?php if($this->hasWidgetsOn('top_desktop') && $device_type=='desktop') { ?>
  3. <?php $this->widgets('top', false, 'wrapper_plain'); ?>
  4. <?php } ?>
  5. ...
В main.tpl.php $device_type передается в конструкторе шаблона. При рендере файлов шаблона из компонентов можно забрать эту переменную из объекта cmsRequest, например так:
Код PHP:
  1. cmsRequest::getDeviceType();
или, если объект уже инициализирован
Код PHP:
  1. $request->device_type;
С помощью нехитрых условий можно можно отдавать одни данные для мобильных клиентов и другие данные для десктопов:
Код PHP:
  1. if ($request->device_type == 'mobile') {
  2. cmsTemplate::getInstance()->render('template_for_mobile');
  3. } else {
  4. cmsTemplate::getInstance()->render('template_for_desktop');
  5. }
Приведенный пример полностью синтетический =)
В целом возможности ограничены только полетом фантазии как это использовать!

UPS Пока писал, тут уже целая дискуссия зародилась. Извиняюсь за возможные повторы...
Редактировалось: 1 раз (Последний: 13 мая 2016 в 22:18)
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 2792
Fuze:
Хорошая идея. Добавим в виджеты опцию.
Тода логичной выглядит подобная опция и для типов контента (хотя б для них)
Украинский для инстант
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4363
Олег Васильевич я:
Тода логичной выглядит подобная опция и для типов контента (хотя б для них)
Не очень понял что имеется в виду
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
Evanescence:
Сложно будет тестировать, например у меня показывает desktop_device_type, когда сжимаю браузер до маленьких размеров или когда переключаюсь к device mode в хроме...
Я на днях клиенту меню делал, и тоже столкнулся с этой проблемой, тут скорее всего эмулятор нужен, но я пока нашел временное решение. Вот код
Код PHP:
  1.  
  2. <?php $device_type = cmsRequest::getDeviceType(); ?>
  3.  
  4. <?php if($device_type !== 'desktop') { ?>
  5.  
  6. <?php } else { ?>
  7.  
  8. <?php } ?>
  9.  
осознав что на компьютере я не смогу проверить код, я просто пока верстал, указал чтобы то что я делаю для мобильника показывалось для компа, то есть вместо <?php if($device_type !== 'desktop') { ?> <?php if($device_type == 'desktop') { ?>. А в конце вернул как надо.
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
У мобильного варианта плюс в том что мы можем просто напросто вырезать весь лишний код который не будет востребован именно в мобильном варианте.
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 2792
Fuze:
Не очень понял что имеется в виду
Выводить в зависимости от девайса разные файлы (при их наличии).
Как пример для записи:
тип_контента_item.tpl
тип_контента_все_мобильные_item.tpl
тип_контента_все_мобильные_планшет_item.tpl
Для списка аналогично.
Украинский для инстант
Посетитель
small user social cms
Сообщений: 52
Atid - Gorec:
тут скорее всего эмулятор нужен,
может это поможет тыц
Редактировалось: 1 раз (Последний: 14 мая 2016 в 02:31)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1842
Ne OS:
может годится тыц
Не не, это не то, нам нужно чтобы к серверу шел запрос от лица мобильного агента, по ссылке эмуляция только размеров окон. В коде страницы при просмотре по этой ссылке выдает что я с компа desktop_device_type .
Скорее всего нам необходим http://www.opera.com/ru/developer/mobile-emulator
Чем меньше знаешь - тем Больше тупой.
OneMinima шаблон ICMS2
Модератор
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1341
Код PHP:
  1.  
  2. $detect = new Mobile_Detect;
  3. if ($detect->isMobile() ) {
  4. мобильное устройство
  5. }else {
  6. ПК
  7. }
  8.  
почему я задаю мало вопросов? потому, что на 90% из них уже кто-то ответил...
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.