Хак 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. При необходимости, добавить ссылки на жесткое переключение типов шаблонов для пользователя:
Исходный код |
ПК
Телефон Смартфон Планшет Сбросить
Внимание!
После переключения тип устройства будет игнорироваться.