кабинет пользователя
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
By strushke
Всем доброго дня и с праздниками!
Если вдруг кто-то хочет запускать различные темы в кабинете пользователя,
в зависимости от типа устройства, вам потребуется произвести некоторые манипуляции с 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 в скобках
и просто подставляем его вместо пути к директории шаблона.
Кстати, в таком виде, пропал функционал определения шаблона из конфига, да и вообще половина кода в функции не нужна стала.
Но поскольку тут всё просто, то вы можете с легкостью исправить это сами.
Всем добра
-
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now