Хак 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 рублей.
http://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/06/2018 - Хак сортировки новостей по цифровому коду (Плагин для DLE 13)

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

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

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

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

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

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

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

09/08/2017 - Центр физкультурно-оздоровительной работы ОЛИМП

Корпоративный сайт для регионального спортивного клуба. Наша работа в новом жанре - проект в сфере фитнеса и здорового образа жизни....

05/06/2017 - Поиск по складу запчастей - модуль для DLE v3.1.1

Модуль интернет-магазина еще проще, еще легче и еще быстрее. Мы рады представить наш новый продукт - модуль "Поиск по складу" для DLE. Специальный модуль для отображения прайс-листов компании с...

17/04/2017 - WIELTON SPB - сайт по продаже и обслуживанию прицепной техники бренда WELTON

Основной задачей была приведение внешнего вида сайта официального дилера WIELTON в России к фирменному стилю производителя wielton.ru Но с учетом доработок и общего облегчения восприятия информации о...

01/03/2017 - Корпоративный сайт компании ВентСтройПром - услуги по вентиляции и кондиционированию

Обновление платформы, редизайн и глубокая переработка внутренней структуры под текущие задачи клиента....

05/12/2016 - most2002.ru - услуги на рынке складской логистики

Редизайн сайта и перенос c устаревшей версии движка internet-cms на актуальную версию DLE - именно такие задачи были решены для сайта most2002.ru. О заказчике: ООО «Компания „МОСТ“» предлагает свои...

16/11/2016 - Редизайн сайта SsangYong для Аларм Комтранс

Плановое обновление дизайна корпоративного сайта согласно фирменному стилю дистрибьютора в РФ. Корейская компания SsangYong Motor Company - признанный специалист по созданию полноприводных...

comments powered by Disqus