Хак 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
Страница модуля: http://tcse-cms.com/works/592-mobtpl-hack.html
Автор версии: Антон Антонов
Правообладатель: Виталий Чуяков. (talik@tcse-cms.com)


Имя:*
E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите два слова, показанных на изображении: *


29/03/2019 - Показ видео с youtube по ссылке на страницу ролика - YouTube PopUp jQuery Plugin

YouTube PopUp jQuery Plugin Для DataLife Engine. Доработка плагина для использования в шаблона DLE CMS. Например для RSS информеров в которых используются ссылки на youtube ролики. Исходный плагин,...

26/03/2019 - Плагин AMTS-tcse - расширенный переключатель мобильных шаблонов

Представляем вашему внимание: Advanced Mobile Templates Switch (AMTS-tcse) расширенный переключатель мобильных шаблонов позволяющий вместо шаблона smartphone используемый для всех типов мобильных...

25/03/2019 - montage-lamp.ru - продажа и монтаж электрооборудования

Сайт для компании продающей светодиодные светильники для промышленных объектов и оказывающей услуги по монтажу электрооборудования. Проекты выполненные ООО «Элемент» • Строительство линии уличного...

16/03/2019 - Alarm-Suzuki.ru - корпоративный сайт автодилера

Представляем реализация срочного заказа от старого клиента. Задача: оперативно подготовить сайт для дилерского центра в соответствии с корпоративными стандартами автопроизводителя....

06/03/2019 - Хак сортировки новостей по цифровому коду (Плагин для DLE 13)

Хак предназначен для версии DLE 13 (это обновление старой версии для DLE 10.3) Добавляет возможность ручной установки "рейтинга" для новостей (в диапазоне от 1 до 999). После указания необходимого...

01/02/2019 - Kuzovostroitel.ru - сайт для группы компаний Эвердайм

Сайт для производителя грузового спецтранспорта. Компания «Кузовостроитель» — основана в 2003 году и является российским производителем и поставщиком высококачественной специальной, коммунальной и...

01/10/2018 - Разработка и сопровождение сайта для Детективного агенства "Легион"

Данный заказ во многом оказался не "стандартным". В первую очередь потому, что заказчик уже и так выбрал для своего сайта в качестве CMS - DataLife Engine, осознавая, что это оптимальный вариант по...

29/06/2018 - Редизайн корпоративного сайта СпецТехСервис

Новая работа студии - редизайн сайта для компании, являющейся официальным поставщиком прицепной техники марки «Faymonville» и «MAX Trailer» на рынке России и стран СНГ. Компания «СпецТехСервис»...

30/05/2018 - Заготовка под простой плагин для DLE 13

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

25/09/2017 - Сайт компании ЛТ-Групп. Комплексные поставки деталей

Динамично развивающаяся молодая компания ООО “ЛТ-ГРУПП” осуществляет комплексное обеспечение элементами трубопровода и трубопроводной арматуры для предприятий различных отраслей промышленности -...

comments powered by Disqus