Хак MobTPL для DLE

Позволяет для разных устройств использовать разные шаблоны.
Основан на коде Генри Хофмана "Хак MobTPL для DLE версия 1.0 от 02.08.2012"

В данной версии предлагаются две реализации:
1. OLD Version - Код user-agent добавляется вручную, как в первой версии хака.
2. NEW Version - Используется php class от проекта mobiledetect.net уже добавленный в DLE 10.3 разработчиками движка.

Данный хак работает на версиях DataLife Engine 10.3

Установка OLD Version:

Пожалуйста, сделайте резервные копии перед внесением изменений.
Правки будут вноситься всего в 2 файла:

/engine/modules/function.php
/engine/init.php

Шаг 1

Создать различные шаблоны для различных устройств
Cтандартный (указанный в админке) - Компьютеры/Ноутбуки/Нетбуки(на WindowsNT)
tabletpc - Планшеты (Android/IOS/WindowsPhone)(втч Galaxy Note) / Нетбуки(Android/WindowsCE)
smartphone - Смартфоны
mobphone - Телефоны на J2ME

Шаг 2

В файл /engine/modules/function.php:

В конце файла, перед:

?>

Вставить:


// MobTPL fix
function check_device() {
if(!empty($_GET['mobtpl'])){
  if($_GET['mobtpl']=='phone'){ $_SESSION['mobtpl']='phone'; return 'phone';}
  else if($_GET['mobtpl']=='smart'){ $_SESSION['mobtpl']='smart'; return 'smart';}
  else if($_GET['mobtpl']=='tablet'){ $_SESSION['mobtpl']='tablet'; return 'tablet';}
  else if($_GET['mobtpl']=='pc'){ $_SESSION['mobtpl']='pc'; return 'pc';}
  else if($_GET['mobtpl']=='reset'){ unset($_SESSION['mobtpl']);}
}else{
  if(!empty($_SESSION['mobtpl'])){
    if($_SESSION['mobtpl']=='phone') return 'phone';
    else if($_SESSION['mobtpl']=='smart') return 'smart';
    else if($_SESSION['mobtpl']=='tablet') return 'tablet';
    else if($_SESSION['mobtpl']=='pc') return 'pc';
  }
}
$device_array = array(
'ip.*opera\smini'=>'smart', // Opera Mini для I-устройств
'android.*gt\-s'=>'smart', // Android Samsung Galaxy S gt-sXXXX (смартфон)
'android.*gt\-n'=>'tablet', // Android Samsung Galaxy Note gt-nXXXX (минипланшет)
'android.*gt\-p'=>'tablet', // Android Samsung Galaxy Tab gt-pXXXX (планшет)
// тут необходимо добавить тесты на других планшетах под андроид: HTC, VSonic, Китайцы
'android'=>'smart', // всех остальных андроидов относим к смартам
'pocket'=>'smart', // HP
'palm'=>'smart', // Palm/HP
'webos'=>'smart', // Palm/HP WebOS
'fennec'=>'smart', // Mobile Firefox
'windows\s?ce'=>'tablet', //'windowsce'=>'smart', // навигаторы и китайские устройства на windows ce
'mobile\swindows'=>'smart', // Смартфоны на Windows Mobile 
'wp7'=>'smart', // Windows Phone 7
'wp8'=>'smart', // Windows Phone 8 (необходимы доп тесты на пленшете под windows phone)
'cellphone'=>'phone',
'opera\s?mobi'=>'smart', //'operamobi'=>'phone', // Opera Mobile
'opera\smini'=>'phone', // Opera Mini
'iphone'=>'smart', // Apple IPhone
'ipod'=>'smart', // Apple IPod Toch
'ipad'=>'tablet', // Apple IPad
'sharp'=>'phone',
'symbian'=>'smart',
'symbos'=>'smart',
'htc\_'=>'smart',
'sonyericsson'=>'phone',
'nokia'=>'phone',
'samsung'=>'phone',
'motorola'=>'phone',
'blackberry'=>'smart', // смартфон Blackberry
'playstation\sportable'=>'smart', // Sony PSP
'rim\stablet'=>'tablet', // планшет Blackberry
'small'=>'smart',
'tablet\sbrowser'=>'tablet',
'smartphone'=>'smart',
'touch'=>'tablet',
'tablet'=>'tablet'
  // боты поисковые
  // Scooter Ask Jeeves fast googlebot slurp lycos Simple Yandex Stack aport111
);
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
  $rtrn='pc';
foreach ($device_array as $key => $value){
    $pattern="/".$key."/ix"; //echo $key.'';
    if(preg_match($pattern,$agent,$find)){ $rtrn=$value; break;}
}
return $rtrn;
}
// .MobTPL fix

Шаг 3

В файле /engine/init.php
Вместо:


if ( ($config['allow_smartphone'] AND !$_SESSION['mobile_disable'] AND $tpl->smartphone) OR $_SESSION['mobile_enable'] ) {
  if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
    $config['skin'] = "smartphone";
    $smartphone_detected = true;
    $config['allow_comments_wysiwyg'] = 0;
  }
}

Вставить:


// MobTPL fix
if ( $config['allow_smartphone'] ) {
    $smartphone_detected = $_SESSION['mobile_disable'] = $_SESSION['mobile_enable'] = false;
    $device=check_device();
    
    if ( $device == 'tablet' && @is_dir ( ROOT_DIR . '/templates/tabletpc' ) ) {
      $config['skin'] = "tabletpc";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
      
    }elseif ( $device == 'phone' && @is_dir ( ROOT_DIR . '/templates/mobphone' ) ) {
      $config['skin'] = "mobphone";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
    } elseif ( $device == 'smart' && @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
      $config['skin'] = "smartphone";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
    }
}
// .MobTPL fix

Шаг 4

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


<a href="/index.php?mobtpl=pc" title="Включить стандартный шаблон">ПК</a>
<a href="/index.php?mobtpl=phone" title="Включить шаблон для мобильных телефонов">Телефон</a> 
<a href="/index.php?mobtpl=smart" title="Включить шаблон для смартфонов и наладонников">Смартфон</a> 
<a href="/index.php?mobtpl=tablet" title="Включить шаблон для планшетов">Планшет</a> 
<a href="/index.php?mobtpl=reset" title="Сбросить настройки шаблонов">Сбросить</a>


Установка NEW Version:

Пожалуйста, сделайте резервные копии перед внесением изменений.
Правки будут вноситься всего в 3 файла:

/engine/modules/function.php
/engine/init.php
/engine/classes/templates.class.php

Шаг 1

Создать различные шаблоны для различных устройств
Cтандартный (указанный в админке) - Компьютеры/Ноутбуки/Нетбуки(на WindowsNT)
tabletpc - Планшеты (Android/IOS/WindowsPhone)(втч Galaxy Note) / Нетбуки(Android/WindowsCE)
smartphone - Смартфоны
mobphone - Телефоны на J2ME

Шаг 2

В файл /engine/modules/function.php:

В конце файла, перед:

?>

Вставить:


// MobTPL fix mobiledetect.net
function check_device_std() {
  global $tpl;
  
  if(!empty($_GET['mobtpl'])){
    if($_GET['mobtpl']=='phone'){ $_SESSION['mobtpl']='phone'; return 'phone';}
    else if($_GET['mobtpl']=='smart'){ $_SESSION['mobtpl']='smart'; return 'smart';}
    else if($_GET['mobtpl']=='tablet'){ $_SESSION['mobtpl']='tablet'; return 'tablet';}
    else if($_GET['mobtpl']=='pc'){ $_SESSION['mobtpl']='pc'; return 'pc';}
    else if($_GET['mobtpl']=='reset'){ unset($_SESSION['mobtpl']);}
  }else{
    if(!empty($_SESSION['mobtpl'])){
    if($_SESSION['mobtpl']=='phone') return 'phone';
    else if($_SESSION['mobtpl']=='smart') return 'smart';
    else if($_SESSION['mobtpl']=='tablet') return 'tablet';
    else if($_SESSION['mobtpl']=='pc') return 'pc';
    }
  }
  if ( $tpl->tablet ) return 'tablet';
  if ( $tpl->phone ) return 'phone';
  if ( $tpl->smartphone ) return 'smart';
}
// .MobTPL fix mobiledetect.net

Шаг 3

В файле /engine/init.php
Вместо:


if ( ($config['allow_smartphone'] AND !$_SESSION['mobile_disable'] AND $tpl->smartphone) OR $_SESSION['mobile_enable'] ) {
  if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
    $config['skin'] = "smartphone";
    $smartphone_detected = true;
    $config['allow_comments_wysiwyg'] = 0;
  }
}

Вставить:


// MobTPL fix mobiledetect.net
if ( $config['allow_smartphone'] ) {
    $smartphone_detected = $_SESSION['mobile_disable'] = $_SESSION['mobile_enable'] = false;
    $device=check_device_std();
    
    if ( $device == 'tablet' && @is_dir ( ROOT_DIR . '/templates/tabletpc' ) ) {
      $config['skin'] = "tabletpc";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
      
    }elseif ( $device == 'phone' && @is_dir ( ROOT_DIR . '/templates/mobphone' ) ) {
      $config['skin'] = "mobphone";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
    } elseif ( $device == 'smart' && @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
      $config['skin'] = "smartphone";
      $smartphone_detected = true;
      $config['allow_comments_wysiwyg'] = 0;
    }
}
// .MobTPL fix mobiledetect.net

Шаг 4

В файле /engine/classes/templates.class.php
Вместо:


if ( $mobile_detect->isMobile() ) {
  $this->smartphone = true;
  $this->desktop = false;
}
if ( $mobile_detect->isTablet() ) {
  $this->smartphone = false;
  $this->desktop = false;
  $this->tablet = true;
}

Вставить:

// MobTPL fix mobiledetect.net
    if ( $mobile_detect->isTablet() ) {
      $this->tablet = true;
    } elseif ( $mobile_detect->isMobile() ) {
      if($mobile_detect->mobileGrade() == 'C') $this->phone = true;
      else $this->smartphone = true; 
    } else $this->desktop = true;
// .MobTPL fix mobiledetect.net

Найти:

var $tablet = false;

После нее вставить:

var $phone = false;

Шаг 5

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


<a href="/index.php?mobtpl=pc" title="Включить стандартный шаблон">ПК</a>
<a href="/index.php?mobtpl=phone" title="Включить шаблон для мобильных телефонов">Телефон</a> 
<a href="/index.php?mobtpl=smart" title="Включить шаблон для смартфонов и наладонников">Смартфон</a> 
<a href="/index.php?mobtpl=tablet" title="Включить шаблон для планшетов">Планшет</a> 
<a href="/index.php?mobtpl=reset" title="Сбросить настройки шаблонов">Сбросить</a>

Хак MobTPL для DLE
модуль бесплатно, установка 500 рублей.
https://tcse-cms.com/instructions/648-hak-mobtpl-dlya-dle.html | Инструкции
Заказать мод

Хак MobTPL для DLE

Версия: 2.0 от 23.09.2014
Страница модуля: https://tcse-cms.com/works/592-mobtpl-hack.html
Автор версии: Антон Антонов
Правообладатель: Виталий Чуяков. (talik@tcse-cms.com)


Имя:*
E-Mail:
  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
Введите два слова, показанных на изображении: *


19/01/2024 - Палубное Оборудование - Производство и поставка изделий собственного производства с Морским и Речным регистром и Военной приемкой

Корпоративный сайт завода изготовителя из Гатчины (Лен.Область). Завод осуществляет производство и комплексные поставки: ШТС,СТАКАНЫ ПЕРЕБОРОЧНЫЕ,ФЛАНЦЫ,РУКАВНЫЕ СОЕДИНЕНИЯ,ГРИБОВИДНЫЕ ГОЛОВКИ и...

15/12/2023 - dftruck-test.ru - Лендинг длительного тест-драйва

Разработка лендинга для продавца коммерческой техники китайского бренда Dongfeng Пройдите длительный тест-драйв и испытайте DONGFENG под Ваши бизнес-задачи!...

02/11/2023 - Модуль DLE importNews - работа с новостями сайта через CSV

ЭКСПОРТ / ИМПОРТ НОВОСТЕЙ DLE Плагин для DLE, позволяющий выгружать новости в CSV и загружать их на сайте. Модуль для DLE, позволяющий производить массовые изменения в опубликованных новостях путем...

27/10/2023 - Редизайн сайта компании ООО «КИТ-КОМПЛЕКТ»

Редизайн сайта компании ООО «КИТ-КОМПЛЕКТ» был необходим, чтобы улучшить пользовательский опыт и повысить конверсию. Старый сайт был устаревшим и не отвечал современным требованиям дизайна и...

14/09/2023 - Лендинг: автопробег Dongfeng

Сайт одностраничник для промо-акции поставщика среднетонажной грузовой техники марки Dongfeng...

21/08/2023 - MINECRAFT POCKET EDITION HUB - интеграция верстки в DLE

Разработка сайта на DLE для клубного проекта любителей MineCraft. Заказчиком был предоставлен html шаблон будущего сайта. В нашу задачу входило: - Настроить сайт на DLE, интегрировать html верстку в...

17/05/2023 - Техника АМКОДОР в Вологде

Разработка корпоративного сайта для официального партнер АМКОДОР в городе Вологда компании СТРОЙМЕТИНН. Задачи поставленные перед нашел студией: 1. Представление компании и ее продукции: основная...

29/04/2023 - DLE-xml2tpl - Импорт новостей в формат YML средствами движка DLE

В данной статье будут описаны принципы создания шаблона в формате XML для дальнейшей самостоятельной модификации. Стоит обратить внимание, что у каждого сайта свой набор полей, их можно и нужно...

20/04/2023 - Разработка сайта электроинструмента для бренда KIMO

Для продажи на территории России электро инструмента из Китая заказчику потребовался корпоративный сайт с витриной товаров и возможностью розничных продаж через маркетплейсы. Веб-студия TCSE...

comments powered by Disqus