Gori |
Отправлено: 2 января 2017 — 14:21
|
Full Member
Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013
Репутация: 2
|
Всё больше людей переходят на мобильный интернет... и т.д. и т.п.
Вот решил сделать себе тоже мобильную версию. Т.к. терять посетителей ни с гугла ни с яндекса не охота.
Адоптивный вариант отверг, т.к. это костыли. По крайней мере такое мнение сложилось при просмотре разных статей на эту тему.
Хочу спросить как лучше всё же делать? Каким направлением идти?
Вот например есть по юзер агенту в .htaccess:
CODE:RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android)
RewriteRule ^([^mobile]*?)page/?$ http://site.ru/mobile-page/ [R=301,L]
Но он далёк от совершенства. Многое будет пропущено.
Похоже на PHP не лучше:
CODE:<?php
$uagent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$uagent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($uagent,0,4)))
header('location: http://site.ru/mobile/');
?>
Идеально работает:
CODE:<script type='text/javascript'>
if(window.innerWidth<600)
location.href='http://site.ru/mobile/';
</script>
Но тоже сомнительно.
Как лучше? Как профессионалы делают?(Отредактировано автором: 2 января 2017 — 14:49) |
|
|
electron |
Отправлено: 4 января 2017 — 18:52
|
ExBB Team
Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009
Репутация: 341
|
Taki пишет:Форум - тоже сайт.
не у всех. на ExBB.INFO например нет форума, у нас сайт крутится.
Taki пишет:Где взять этот скин, как его подключить к 1.1.3
просто заливаете прикрепленную папку MobileExBB в папку templates , первые два шага инструкции пропускаете и начинаете делать изменения в файлах от слов " в файле topic.php найти..." и далее по инструкции
Taki пишет:Можно ли использовать как основной и единственный скин?
можно. удалите все папки из папки templates и оставьте только папку MobileExBB, тогда у всех юзеров автоматом установится только мобильный стиль |
|
|
Gori |
Отправлено: 16 января 2017 — 08:51
|
Full Member
Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013
Репутация: 2
|
electron ,
как вы думаете, это хороший скрипт?
CODE:<?php
$tablet_browser = 0;
$mobile_browser = 0;
if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
$tablet_browser++;
}
if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android|iemobile)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
$mobile_browser++;
}
if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
$mobile_browser++;
}
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
$mobile_agents = array(
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
'newt','noki','palm','pana','pant','phil','play','port','prox',
'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
'wapr','webc','winw','winw','xda ','xda-');
if (in_array($mobile_ua,$mobile_agents)) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'opera mini') > 0) {
$mobile_browser++;
//Check for tablets on opera mini alternative headers
$stock_ua = strtolower(isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])?$_SERVER['HTTP_X_OPERAMINI_PHONE_UA']:(isset($_SERVER['HTTP_DEVICE_STOCK_UA'])?$_SERVER['HTTP_DEVICE_STOCK_UA']:''));
if (preg_match('/(tablet|ipad|playbook)|(android(?!.*mobile))/i', $stock_ua)) {
$tablet_browser++;
}
}
if ($tablet_browser > 0) {
// do something for tablet devices
print 'is tablet';
}
else if ($mobile_browser > 0) {
// do something for mobile devices
print 'is mobile';
}
else {
// do something for everything else
print 'is desktop';
}
?> |
|
|
Gori |
Отправлено: 16 января 2017 — 11:06
|
Full Member
Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013
Репутация: 2
|
Отзыв об этом скрипте:
Очень часто при разработке веб-приложений возникает необходимость определения браузера клиента, для того, чтобы показать ему тот или иной контент или изменить логику поведения веб-приложения. Оригинал статьи расположен здесь. Demo здесь.
Для определения мобильного устройства используются регулярные выражения (preg_match) PHP, этот подход сохранился и по сей день.
Скрипт для определения мобильного браузера клиента, будь то планшет или мобильный телефон, работает путем сопоставления строк User-Agent ($_SERVER['HTTP_USER_AGENT']) мобильных устройств с использованием регулярных выражений. Но, стоит отметить, что такой подход не дает высокой степени обнаружения модели мобильного устройства, определяется только тип устройства — телефон или планшет, это видно из параметров регулярного выражения и элементов массивов.
Так же использование такого подхода может не подойти для высоко нагруженных веб-приложений, preg_match выполняется долго... Скрипт может не распознавать некоторые планшеты Android, которые сделан в Китае на Малой Арнаутской)
Стоит понимать, что этот скрипт нуждается в постоянном обновлении списка новых устройств. |
|
|
|