Вы не зашли.
Страницы 1
Как реализовать в NG такое?
Хак 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>
Не в сети
Есть адаптивные шаблоны,резиновые ,да и последние модели смартфонов и планщетов нормально переваривают все сайты,смысл?
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Не в сети
Страницы 1