Хак 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:
  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
Введите два слова, показанных на изображении: *


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

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

09/11/2022 - s2tg - формы отправки сообщений в telegram для DLE

Плагин для DLE позволяющий отправлять формы с сайта в telegram. Назначение: замена форм обратной связи в которых отправляются email на уведомления в мессенджер телеграм. Актуально для тех, кто "не...

27/10/2022 - RSS-Bridge - генерация RSS потоков популярных сайтов и соцсетей. Интеграция в DLE

Плагин для DLE добавляющий поддержку проекта RSS-Bridge способный генерировать RSS и каналы Atom для веб-сайтов, на которых их нет. Реализация от веб-студии TCSE интегрирует RSS-Bridge в структуру...

20/10/2022 - Вывод содержимого сайта только для определенного браузера - Плагин browser-selection by TCSE

Плагин browser-selection by TCSE это еще один хак для mobiledetect.class.php встроенного в DLE 15. Добавляем поддержку тегов для мобильных веб-браузеров Chrome, Mobile Safari, Firefox и Opera. В...

20/10/2022 - Плагин AMTS Pro (платная версия с админкой)

Добавлена совместимость с DLE 15.3, но только для php 7.3 или ниже :( Специальная версия бесплатного плагина AMTS с адмикой для удобной работы с выбором шаблонов для различный мобильных устройств....

13/09/2022 - DLE-xml2tpl - Импорт новостей в формат YML средствами движка DLE

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

19/08/2022 - QAZ СТ-ТРАНС сайт лендинг перевозчика крупногабаритной техники

Новая работа нашей студии. Для компании QAZ СТ-ТРАНС (Аренда полуприцепов и тягачей). Реализована в виде лендинга с описанием основных услуг компании....

10/07/2022 - Мобильная версия сайта stservice.eu

Верстка шаблона мобильной версии сайта для компании СпецТехСервис....

23/05/2022 - VS-RUS.ru - сайт дистрибьютера компании VERSUS-OMEGA

Корпоративный сайт для эксклюзивного дистрибьютера Versus-Omegа на территории России. Versus-Omega это производитель скользящих, подъемных крыш и ползунков для грузовых автомобилей. Компания...

12/04/2022 - UNITE Gallery by TCSE - плагин галереи картинок

UNITE Gallery - модуль генерации галереи картинок из допполей (Плагин для DLE 13 и выше) Данный модуль подключает в шаблон сайта JS плагин unitegallery В комплекте идет инструкция по настройке и...

comments powered by Disqus