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

#16 14 мая 2016 в 13:18

Выводить в зависимости от девайса разные файлы (при их наличии).

Олег Васильевич я
Тут все же наверное стоит более универсально предусмотреть цепочки наследования шаблонов. Например, сейчас если файла шаблона нет в текущей теме, то этот файл ищется в дефолтном шаблоне. Так вот идея в том, чтобы сделать некий механизм, позволяющий дополнять такие проверки. Т.е. если файла нет в шаблоне template2, он сначала ищется в шаблоне template1, а потом уже в дефолтном.

Soul, все уже есть в движке.
  1. $device_type = cmsRequest::getDeviceType();
#17 14 мая 2016 в 13:43

Soul, все уже есть в движке.

Fuze
Да, но в device mode данная конструкция не срабатывает.
#18 14 мая 2016 в 14:01

Да, но в device mode данная конструкция не срабатывает.

Soul
Не очень понял ответа. Поясню:

  1.  
  2. $device_type = cmsRequest::getDeviceType();
  3.  
  4. // $device_type может быть равен tablet, mobile или desktop, что будет означать
  5. // планшет, мобильное устройство или ПК
  6.  
Этим следует пользоваться в общих случаях, без уточнения устройства. Следует пользоваться потому, что движок это определяет для клиента один раз и запоминает значение в куках на год.

$request->device_type;

Val
Это не сработает, т.к. свойство приватное. Единственное правильное получение типа устройства из любого места движка я описал выше.
#19 14 мая 2016 в 14:07

Не очень понял ответа.

Fuze
Это ответ Atid — Gorec по поводу возможности проверки в device mode.
#20 14 мая 2016 в 14:38

Т.е. если файла нет в шаблоне template2, он сначала ищется в шаблоне template1, а потом уже в дефолтном.

Fuze
Таки да, лучше б сначала шаблон "по-умолчанию" проверить на наличие нужного файла
#21 14 мая 2016 в 15:20


Val:
$request->device_type;
Это не сработает, т.к. свойство приватное.

Fuze
Да… вы правы)) Видел свойство через дебагер, а в ..\core\request.php не заглянул zst
#22 16 июня 2018 в 13:55
Здравствуйте. Чтобы не плодить лишних тем напишу в похожую. Я не силён в php, потому прошу помощи.
На примере этого кода попытался сделать вывод полей для мобильных одно, для десктопов другое, вставив код напрямую в шаблон, но результата не добился.
  1. <?php if ($request->device_type == 'mobile') {
  2. cmsTemplate::getInstance()->render('template_for_mobile');
  3. ($item['pole1']);
  4. } else {
  5. cmsTemplate::getInstance()->render('template_for_desktop');
  6. ($item['pole2']);
  7. }
  8. ?>
Возможно ли вообще выводить поля для разных типов устройств таким образом? Помогите разобраться.
P.S. И ещё вопрос template_for_mobile — это только для мобильных? А для планшетов есть другая функция?
#23 12 января 2021 в 21:50
А как можно самому задать device_type например через хук EngineStart? Сумел только через setCookie но это неправильно, и такой вариант срабатывает только после перезагрузки страницы.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.