Проблема со старыми браузерами.

InstantCMS 2.X

Flex не работает на safari и других браузерах.

#1 25 января 2021 в 13:53
Обновил свой сайт до 2.14.1.
Ну как обновил… сделал новый сайт, настроил дизайн и перенёс данные в базу данных. Посты, блоги, комментарии, пользователей.
И вроде всё прекрасно, но выяснился один нюанс. Есть куча пользователей, которые заходят на сайт с древних айпэдов, с каких-то нетбуков с какими-то древними браузерами и прочего премиум оборудования вроде калькуляторов и швейных машинок.
И вот у них красивый сайт выглядит как набор квадратиков и буковок, разбросанных по экрану. Нет ни меню, ни кнопок, ни логотипов. Только текст в рамках.
И вроде решение очевидно — сделать для олдтаймеров второй шаблон без флекса и webp, но возникает вопрос, а как переключать шаблон в зависимости от браузера?
Можно включить другой шаблон для мобильников и планшетов, но тогда обладатели современных мобильников и планшетов тоже будут вынуждены видеть старый шаблон.
И вроде есть mobile_detect.class.php, где можно определять клиент пользователя, но селектор типов дивайсов имеет только три положения:
tablet, mobile, desktop

  1. private static function loadDeviceType() {
  2. $device_type = cmsUser::getCookie('device_type', 'string', function ($cookie){ return trim(strip_tags($cookie)); });
  3.  
  4. if(!$device_type || !in_array($device_type, self::$device_types, true)){
  5.  
  6. cmsCore::loadLib('mobile_detect.class');
  7.  
  8. $detect = new Mobile_Detect();
  9.  
  10. $device_type = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'mobile') : 'desktop');
  11.  
  12. cmsUser::setCookie('device_type', $device_type, 31536000); // на 1 год
  13.  
  14. }
  15.  
  16. self::$device_type = $device_type;
  17.  
  18. }
Может есть у кого какие-нибудь мысли, как можно сделать переключатель шаблонов в зависимости от браузера?
#2 25 января 2021 в 15:28
Определить количество аудитории, которая заходит с утюга. Определить стоит ли игра свеч. ~ Вежливый скрипт browser-update.org laugh
#3 25 января 2021 в 19:24

Определить количество аудитории, которая заходит с утюга. Определить стоит ли игра свеч.

@noname
А возможно следует определиться с аудиторией используя Retina Display?
Исходя из оборудования вроде калькуляторов и швейных машинок.

Может есть у кого какие-нибудь мысли, как можно сделать переключатель шаблонов в зависимости от браузера?

Ris
Возможно в вышесказанном я ошибаюсь. Но иных мыслей нет. Да и попытка, не пытка.
#4 25 января 2021 в 19:38

А возможно следует определиться с аудиторией используя Retina Display?

DeDja
Определить дивайс и браузер — не проблема.
Проблема в том, что для этого придется править код движка, чего делать бы не хотелось.
Вот думаю, может в каким-нибудь хуке вроде engine_start или core_start получать тип браузера, формировать нужный реквест и подменять тот, что выдает движок на нужный?
#5 25 января 2021 в 20:25

Проблема в том, что для этого придется править код движка, чего делать бы не хотелось.

Ris
Попытался с Retina Display поработать на 2.14.1. В итоге понял, что предлагаемое
полностью неприемлемо. Вынужден повторить фразу — иных мыслей нет.
---------------------------------------------------------------------------------------------------------------------
Вывод для ПК — БУМЕР — Не плачь.
Вывод для иных — Петлюра — Платье белое.
#6 25 января 2021 в 20:32

Вывод для иных — Петлюра — Платье белое.

DeDja
Я с пк иной.
#7 26 января 2021 в 10:27

Я с пк иной.

Ris
Не удивлён, такой монитор. На моём рабочем мониторе Samsung SyncMaster 710v это видится иначе.
#8 26 января 2021 в 11:06
Новейшие браузеры работают от win 7, win 7 уже не поддерживается — меньше безопасность и тд. На утюгах win 7 > будет работать медленнее, более древняя оперативка стоит дороже новой — нет смысла делать апгред. Материнские платы лучше покупать такие, чтобы можно было апгрейдить еще на несколько лет вперед. Чем старше утюг, тем чаще переустановка windows и тд — то есть хорошие матплаты покупать выгоднее. А Вы хотите как-то улучшить жизнь людям, которые не знают слово прогресс, экономия, разум — имхо в этом нет смысла.
#9 26 января 2021 в 11:19

А Вы хотите как-то улучшить жизнь людям, которые не знают слово прогресс, экономия, разум — имхо в этом нет смысла.

@noname
Инженеры решают инженерные задачи, у этой темы изначально не было просветительского посыла.
#10 1 февраля 2021 в 00:40
Проблема решилась неожиданным образом.
Делал "прилипающее" главное меню. Сделал отдельный ряд, написал ему класс sticky-top, перенес виджет главного меню в этот ряд и обнаружил, что липнет оно на два оборота колеса мыши, потом отлипает и отправляется вверх.
Весь интернет облазил в поисках решения, пока на одном форуме не обнаружил чью-то жалобу на то, что position: sticky не работает при body {height: 100%}
Посмотрел код \templates\modern\main.tpl.php и обнаружил, что и html и body имеют класс h-100.
Дописал в \templates\modern\scss\theme\_custom.scss
  1. .h-100 {
  2. height: auto !important;
  3. }
Скомпилировал-сохранил и стики меню стало работать нормально.
Тут же в личку стали писать пользователи старых айпэдов, что мол спасибо, теперь всё хорошо видно.
Кто-нибудь знает, зачем html и body height: 100% ?
Если знаете — напишите, пожалуйста.
#11 1 февраля 2021 в 07:06
Ris, вроде чтобы на коротких страницах футер был приплен внизу
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.