Как избежать подгрузки контента в mobile версию?

Аватар пользователя digital_sword digital_sword 22 июня 2017 в 14:16

На сайте формируется меню из top-level терминов таксономии (из одного словаря) с картинками, и их прямых дочерних терминов 2-го уровня тоже с картинками, а также нод с картинками, привязанных к этим терминам.
Но в мобильной версии показывать картинки и дочерние ноды не нужно (это меню, оно не должно разрастаться), только названия терминов.

Если просто скрыть через css - по факту то все равно все подгружаться будет. Как избежать загрузки ненужного контента из мобильной версии? Или как гарантированно определить на уровне PHP, что в данный момент грузится именно мобильная версия с разрешением экрана ниже какого-то условного?

AJAX-запрос к PHP из уровня JS нежелателен.

То же самое другими словами: можно ли из php узнать на мобилке мы или на десктопе?

Комментарии

Аватар пользователя HardHardy HardHardy 22 июня 2017 в 16:28

А зачем так и почему? Чем мобильное меню на js не устраивает? Там размеры то копеечные и то скрыты, а в мобильном меню можно и не скрывать а уменьшить и сделать красиво

Аватар пользователя digital_sword digital_sword 22 июня 2017 в 21:47

mcdonalds.ru наведите на основное меню. (появятся подпункты и конечные товары). Делаю так, понятно, что картинки в мобилке не нужны. На джава тоже не вариант (беру термины таксономии)

Аватар пользователя OldWarrior OldWarrior 23 июня 2017 в 3:17

bumble wrote:
Browscap

Что-то в этом есть, но:

Browscap requires that your server be able to "phone out" (make a http request) to retrieve and update its user agent database. Note: Some hosting companies have this capability blocked.

Как-то загадочно всё. ) Что ему надо, curl что ли открытый?

Ну и далее тоже не всё пушисто:

Since browscap is a server-side behavior that runs in php it will only alter behavior of your Drupal page if page caching is not active. Page caching can be disabled in the administration area and is inactive for all authenticated users.

HardHardy wrote:

А зачем так и почему? Чем мобильное меню на js не устраивает? Там размеры то
копеечные и то скрыты, а в мобильном меню можно и не скрывать а уменьшить и сделать красиво

5 топ-левел терминов в каждом по 7 дочерних терминов по 10 нод в каждом дочернем термине:

5 * 7 * 10 = 350 нод

Плюс картинки самих дочерних терминов:

5 * 7 =35;
350 + 35 = 385

Допустим, средний размер размер картинки 7 кб:

385 * 7 = 2695 кб, или около 2.7 мб дополнительного и ненужного трафика для мобильных устройств, которые порой имеют относительно медленный интернет. Несколько секунд загрузки можно выиграть.

Минус время/ресурсы на загрузку/формирование нод и картинок на стороне сервера/PHP. Тоже как бы фактор скорости. Почему бы и не отказаться, если не настолько уж нужно.

DrupRain22 wrote:

Context Mobile Detect

В какой-то степени тоже вариант, но нет версии для D8 (из беседы с ТС знаю, что у него 8ка), да и для D7 пока в альфа-релизе. Ну и опять как-то заступорила загадочная фраза:

Important notice: Module preserve drupal page cache working.

Что означает... а леший их разберёт, что они тут вообще хотели сказать. ) Может, это сказано в противовес вышеупомянутому модулю browscap, который для своей корректной работы требует отключать кеш страниц?

Я думаю, что проще тогда уже взять отдельно библиотеку mobile_detect.php и пытаться на ней слепить что-то своё. )

Аватар пользователя OldWarrior OldWarrior 23 июня 2017 в 3:23

ЗЫ. Около часа набирал этот пост на андроид-мобильнике. ) Склоняюсь к мысли, что все мобильное - есть зло. "Засек плотов", ёмана.

Аватар пользователя gun_dose gun_dose 24 июня 2017 в 0:01

Я бы воткнул лэйзилоад для компов, а для мобил бы не грузил. Естественно, сделал бы всё на js, предварительно избавившись от предрассудков на эту тему.