Вопрос к создателям шаблонов, про дополнение позволяющее подключать отдельный шаблон для разных устройтв.
Я пока из новых фич воспользовался раздельными шаблонами для сайта и админки и выкинул из своего шаблона админские части.
Так и должно быть. Устройство определяется не по размеру экрана.например у меня показывает desktop_device_type, когда сжимаю браузер до маленьких размеров или когда переключаюсь к device mode в хроме...
Хорошая идея. Добавим в виджеты опцию.а как прятать виджет для мобильных и наоборот выводить его только когда мобильная версия ?
Библиотека в iCMS2 располагается здесь: ..\system\libs\mobile_detect.class.php (репозиторий и оф. сайт).
Итак, подготовленные данные передаются в шаблон, при конструировании которого определяется тип устройства с которого пользователь открыл сайт:
..\system\core\template.php ( function __construct($name=''){...} )
... $device_type = cmsRequest::getDeviceType(); $template = $config->template; if($device_type !== 'desktop'){ $device_template = cmsConfig::get('template_'.$device_type); if($device_template){ $template = $device_template; } } $this->setName($template); ...
Принципиально на этом всё)) Т.е., как и говорил Олег Васильевич я, функционал по умолчанию, в первую очередь, рассчитан на создание нескольких шаблонов для каждого из устройств, что имеет как свои плюсы так и минусы.
Для себя более перспективным я вижу использование одного шаблона в коде которого указывается что и для какого устройства выводить.
Например в ..\templates\default\main.tpl.php можно добавить позиции для вывода виджетов только для десктопа:
... <?php if($this->hasWidgetsOn('top_desktop') && $device_type=='desktop') { ?> <?php $this->widgets('top', false, 'wrapper_plain'); ?> <?php } ?> ...
cmsRequest::getDeviceType();
$request->device_type;
if ($request->device_type == 'mobile') { cmsTemplate::getInstance()->render('template_for_mobile'); } else { cmsTemplate::getInstance()->render('template_for_desktop'); }
В целом возможности ограничены только полетом фантазии как это использовать!
UPS Пока писал, тут уже целая дискуссия зародилась. Извиняюсь за возможные повторы...
Тода логичной выглядит подобная опция и для типов контента (хотя б для них)Хорошая идея. Добавим в виджеты опцию.
Не очень понял что имеется в видуТода логичной выглядит подобная опция и для типов контента (хотя б для них)
Я на днях клиенту меню делал, и тоже столкнулся с этой проблемой, тут скорее всего эмулятор нужен, но я пока нашел временное решение. Вот кодСложно будет тестировать, например у меня показывает desktop_device_type, когда сжимаю браузер до маленьких размеров или когда переключаюсь к device mode в хроме...
<?php $device_type = cmsRequest::getDeviceType(); ?> <?php if($device_type !== 'desktop') { ?> <?php } else { ?> <?php } ?>
Выводить в зависимости от девайса разные файлы (при их наличии).Не очень понял что имеется в виду
Как пример для записи:
тип_контента_item.tpl
тип_контента_все_мобильные_item.tpl
тип_контента_все_мобильные_планшет_item.tpl
Для списка аналогично.
Не не, это не то, нам нужно чтобы к серверу шел запрос от лица мобильного агента, по ссылке эмуляция только размеров окон. В коде страницы при просмотре по этой ссылке выдает что я с компа desktop_device_type .может годится тыц
Скорее всего нам необходим http://www.opera.com/ru/developer/mobile-emulator
$detect = new Mobile_Detect; if ($detect->isMobile() ) { мобильное устройство }else { ПК }