Jump to content

Личный кабинет. Реакция на user agent


Recommended Posts

Всем доброго дня и с праздниками!

 

Если вдруг кто-то хочет запускать различные темы в кабинете пользователя,

в зависимости от типа устройства, вам потребуется произвести некоторые манипуляции с php кодом кабинета,

ну и вот вам моё (может неказистое, но рабочее) решение:

 

На гитхабе уже существует php проект, определяющий тип устройства,

поэтому не выдумываем и будем использовать его:

https://github.com/serbanghita/Mobile-Detect/

 

Для начала, нужно подключить его вконце index.php:

 

require_once 'Mobile_Detect.php'; //Detect library

Далее, нужно создать объект класса:

$detect = new Mobile_Detect; //Class object

Вообще, верхний код я без зазрения совести скопипастил с какой-то статьи из интернета, говорят, это экономит время.

Теперь, к самой сути:

if($detect->isMobile()) {
	zbs_ShowTemplate("default-mobile");
} else {
	zbs_ShowTemplate("default");
}

Здесь мы вытаскиваем из класса необходимое условие, в зависимости от которого,

будем выполнять необходимые манипуляции с кабинетом.

В данном случае загружается конкретный шаблон в том случае, если устройство определено как 'mobile', 

и обычный (любой другой) шаблон, если условие не соблюдено. К слову, mobile_detect.php умеет

не только различать десктоп от мобильных платформ, но и конкретизировать систему, к примеру isAndroidOS()

соответственно, укажет на то, что платформа определилась как андроид. 

Полный список параметров доступен на странице проекта на гитхабе, я полагаю. Мне хватило пока что isMobile()

 

Но есть еще один нюанс. С завода, функция zbs_ShowTemplate() загружает тему, указанную в config.php

и не умеет загружать принудительно указанную тему, как мы это сделали в скобках выше. Но мы её научим. 

Нужно открыть файл

/modules/engine/api.compat.php

И найти там описание функции :

function zbs_ShowTemplate() 

Ну и меняем её содержимое на что-то вот такое: 

function zbs_ShowTemplate($tpath) {
    global $ContentContainer;
	if(!isset($tpath)){
		include (zbs_GetCurrentSkinPath() . 'template.html');
	} else {
		$basePath = 'skins/';

		include $basePath . $tpath . '/' . 'template.html';
	}
}

Что мы сделали?

Мы добавили в объявлении функции возможность указания темы через переменную $tpath в скобках

и просто подставляем его вместо пути к директории шаблона. 

Кстати, в таком виде, пропал функционал определения шаблона из конфига, да и вообще половина кода в функции не нужна стала. 

Но поскольку тут всё просто, то вы можете с легкостью исправить это сами. 

Всем добра

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ProstoName
      На віртуалці протестуав перехід ubilling на mysql57. Здається, все нормально. Можливо, потрібні ще якісь специфічні настройки mysql?
    • By felixio_01
      Здравствуйте. 
      Помогите разобраться. 
      Собрал stargazer 2.409
      ОС debian 11:  Linux gw1new 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64 GNU/Linux
      MySQL:  /usr/sbin/mysqld  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
      при первом запуске в в логах stargazer появилась ошибка:  Storage plugin: 'Couldn't create tariffs table list With error: Invalid default value for 'change_policy_timeout''  
      При этом создалась таблица:  ' admins'
      mysql> show tables;
      +---------------+
      | Tables_in_stg |
      +---------------+
      | admins        |
      | info          |
      +---------------+
      2 rows in set (0.00 sec)
       
      Других таблиц нет. 
      В чём может быть проблема? Может кто сталкивался?
      Спасибо. 
    • By dormancygrace
      Добрый день. Скажите пожалуйста, можно ли развернуть бэкап бд mysql в mariadb? при попытке получаю ERROR 1071 (42000) at line 845: Specified key was too long; max key length is 1000 bytes.
      Можно это как-то вылечить? 
    • By nightfly
      Суббота отличный день для первого в этом году стабильного релиза. Правда? Нет? В общем вот.. Стабильный релиз Ubilling 1.2.4 rev 8318 Fertile Soil. Куча крутых фич, множество багфиксов и всего о чем вы даже не могли подумать.
       
      Коротко о изменениях:
       
      alter.ini: новая опция PON_DEFERRED_LOADING включающая отложенную загрузку данных alter.ini: новая опция PON_ONU_CACHING включающая кэширование данных о ONU. alter.ini: новая необязательная опция CREDIT_EVERGARDEN включающая покраску кредитов в фиолетовый. Не спрашивайте. alter.ini: вырезаны опции CATV_* и CRM_MODE а также весь древний и неподдерживаемый код вокруг них. alter.ini: новая опция TASKMAN_ANYONE_EMPLOYEEID устанавливающая ID сотрудника «кто-угодно». alter.ini: новые опции SWITCHSONIC_ENABLED и SWITCHSONIC_TIMEOUT управляющие мониторингом трафика в реальном времени. Модуль ПОНизатор: слегка улучшено быстродействие. Также реализована поддержка кэширования и отложенной загрузки данных. Модуль Собака-посылака: добавлена поддержка работы с сервисом TurboSMS при помощи HTTP API (tsmshttp). Модуль «Движение средств»: теперь умеет опционально красить кредиты в фиолетовый. Модуль «Карта задач»: добавлена возможность устанавливать фильтр по типу выполненных задач. Модуль «Работы»: исправлена проблема невидимости имен уже не работающих сотрудников в предыдущих задачах по пользователю. Модуль ПОНизатор: добавлена поддержка OLT ZTE C610. Модуль Учет зарплат: добавлен показ нормочасов в списке выполненных по задаче работ. Модуль «Учет зарплат»: при отсылке отчетов сотрудникам в Телеграм, добавлены нормочасы по каждой из задач а также их сума. Модуль «ПОНизатор»: добавлена возможность показа на карте ONU, только с выбранного OLT. Новый модуль «Таймлайн работников»: позволяет нормально распределять ожидаемое время выполнения задач среди ваших сотрудников. Модуль Mapon: теперь умеет отдельно показывать нераспределенные задачи, тоесть задачи на сотрудника «кто-угодно». Модуль «Таймлайн администраторов»: теперь высота графика автоматически подгоняется под количество данных. Модуль «Свитчи»: немного переработаны и облагорожены контролы в профиле свитча. Модуль «Свитчи»: добавлена возможность быстрого создания задачи из прямо профиля устройства. Модуль «Сервер DHCP»: добавлен дзэн-режим. Потому что «а почему бы и нет?» Модуль «Профиль пользователя»: опция EASY_SMS теперь может принимать значения 0/1/2. Модуль «Askozia монитор»: добавлена возможность прослушивания всех звонков за все время. Тормозная копец. Модуль «Панель задач»: все модули/отчеты выглядящие и ведущие себя как карты и являющиеся картами унесены в отдельный раздел. Модуль «Контроль качества»: исправлены данные в отчетах, в колонке за год. Новый модуль «Дубликаты задач»: позволяет отлавливать повторные задачи совершаемые по одним и тем же адресам в диапазоне времени. Новый модуль «Трафик в реальном времени»: позволяет отслеживать загрузку интерфейсов вашего оборудования "вот прямо сейчас". UHW_MLG: починена работа с POD.  
      Полный чейнджлог: https://wiki.ubilling.net.ua/doku.php?id=changelog2022#rev_8318
      Рекомендации к обновлению: https://wiki.ubilling.net.ua/doku.php?id=relnotes#section124
      Обновленная демка: https://ubilling.net.ua/?module=fnpages&pid=demo
       

    • By baibulat
      Добрый день!
      Ищу системщика для установки и полной настройки Ubilling с нуля, для обсуждения деталей жду  ваших предложений в личку или в телеграмм baibulats
×
×
  • Create New...