• Автор:

    Flesha
  • Добавлено:

    май 18, 2014
  • Комментариев:

    0
  • Просмотров:

    1415

Модуль MobTPL 1.0

Модуль MobTPL 1.0

Хак MobTPL для DLE позволяет, для разных устройств, использовать разные шаблоны.

Установка:

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

2. В файл /engine/modules/function.php вместо:
 function check_smartphone() {

if ( $_SESSION['mobile_enable'] ) return true;

$phone_array = array('iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'mobile windows', 'cellphone', 'opera mobi', 'operamobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'symbos', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser', 'android');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );

foreach ($phone_array as $value) {

if ( strpos($agent, $value) !== false ) return true;

}

return false;

}


Вставить:
// MobTPL fix
function check_smartphone() {

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',
'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; /*echo $key.'
';*/ break;}
}
return $rtrn;
}
//\ MobTPL fix


3. В файле /engine/init.php вместо:
$smartphone_detected = false;

if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "mobiledisable" ) $_SESSION['mobile_disable'] = 1;
if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "mobile" ) { $_SESSION['mobile_enable'] = 1; $_SESSION['mobile_disable'] = 0;}
if( !isset( $_SESSION['mobile_disable'] ) ) $_SESSION['mobile_disable'] = 0;
if( !isset( $_SESSION['mobile_enable'] ) ) $_SESSION['mobile_enable'] = 0;

if ( $config['allow_smartphone'] AND !$_SESSION['mobile_disable'] ) {

if ( check_smartphone() ) {

if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {

$config['skin'] = "smartphone";
$smartphone_detected = true;
$config['allow_comments_wysiwyg'] = "no";

}

}

}


Вставить:
// MobTPL fix
$smartphone_detected = $_SESSION['mobile_disable'] = $_SESSION['mobile_enable'] = false;

$device=check_smartphone();
if ($device=='phone'){
if ( @is_dir ( ROOT_DIR . '/templates/mobphone' ) ) {
$config['skin'] = "mobphone";
$smartphone_detected = true;
$config['allow_comments_wysiwyg'] = "no";
}
}else if($device=='smart'){
if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
$config['skin'] = "smartphone";
$smartphone_detected = true;
$config['allow_comments_wysiwyg'] = "no";
}
}else if($device=='tablet'){
if ( @is_dir ( ROOT_DIR . '/templates/tabletpc' ) ) {
$config['skin'] = "tabletpc";
$smartphone_detected = true;
$config['allow_comments_wysiwyg'] = "no";
}
}
//\ 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>


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

Версия DLE: 9.5-10.1
Автор: Генри Хофман
Сайт: tcse-cms.com
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.