ExBB Community » » PHP/Perl » Организация мобильной версии сайта

Страниц (1): [1]
 

1. Gori - 2 января 2017 — 14:21 - перейти к сообщению
Всё больше людей переходят на мобильный интернет... и т.д. и т.п.

Вот решил сделать себе тоже мобильную версию. Т.к. терять посетителей ни с гугла ни с яндекса не охота.

Адоптивный вариант отверг, т.к. это костыли. По крайней мере такое мнение сложилось при просмотре разных статей на эту тему.

Хочу спросить как лучше всё же делать? Каким направлением идти?

Вот например есть по юзер агенту в .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. Gori - 2 января 2017 — 14:52 - перейти к сообщению
Кстати варинт по юзерагенту тестил на своём смартфоне, не работате. В интернете множество вариантов на Php, ни один у меня не работает.
3. electron - 3 января 2017 — 08:05 - перейти к сообщению
Gori пишет:
Как лучше? Как профессионалы делают?

профессионалы делают субдомен типа m.site.ru , на который и отсылаются мобильные клиенты
4. Gori - 3 января 2017 — 10:21 - перейти к сообщению
electron , ясно.
Пока планирую делать просто в дирректории типа: mobile/
Читал, что иначе придётся раскручивать субдомен m.
Т.к. это вроде уже другой сайт будет. Так пишут в статьях. Точно не знаю.

А вот именно способ переадресовки на другой каталог или субдомен, какой лучше выбрать? По юзерагенту у меня не определяет.
5. electron - 3 января 2017 — 20:30 - перейти к сообщению
Gori пишет:
По юзерагенту у меня не определяет

надо разбираться почему не определяет. на exbb.info/community если зайти определяет моб.версию?
6. Taki - 4 января 2017 — 15:06 - перейти к сообщению
electron пишет:
профессионалы делают субдомен типа m.site.ru , на который и отсылаются мобильные клиенты

Вы сделали мобильную версию сайта и она авто стартует если вход со смартфона был. А можно попросить сделать её в виде скина отдельного. Ну чтобы можно было подключать. И в виде отдельной версии (для форума) которые предполагается вести только для мобильных (и которы будет размещен только на m.site.ru).
2. Второй вопрос. Если все таки делать 2 форума один на site.ru а другой на m.site.ru и перенаправлять если со смарта. То как их синхронизировать? Чтобы сообщения вводимые на обычном форуме (site.ru) появлялись и в мобильной версии на m.site.ru
7. electron - 4 января 2017 — 16:39 - перейти к сообщению
Taki пишет:
Вы сделали мобильную версию сайта и она авто стартует если вход со смартфона был

мы делали моб.версию форума , а не сайта. это разные вещи...

Taki пишет:
можно попросить сделать её в виде скина отдельного

она и сделана в виде отдельного скина
8. Taki - 4 января 2017 — 18:14 - перейти к сообщению
electron пишет:
мы делали моб.версию форума , а не сайта. это разные вещи...

Ну Вы же поняли. Ну сайта форума.
Форум - тоже сайт. Прям придрались. Лучше ответьте на вопросы ниже которые были.
Где взять этот скин, как его подключить к 1.1.3. Можно ли использовать как основной и единственный скин?
9. electron - 4 января 2017 — 18:52 - перейти к сообщению
Taki пишет:
Форум - тоже сайт.

не у всех. на ExBB.INFO например нет форума, у нас сайт крутится.

Taki пишет:
Где взять этот скин, как его подключить к 1.1.3

просто заливаете прикрепленную папку MobileExBB в папку templates , первые два шага инструкции пропускаете и начинаете делать изменения в файлах от слов " в файле topic.php найти..." и далее по инструкции

Taki пишет:
Можно ли использовать как основной и единственный скин?

можно. удалите все папки из папки templates и оставьте только папку MobileExBB, тогда у всех юзеров автоматом установится только мобильный стиль
10. Gori - 15 января 2017 — 08:40 - перейти к сообщению
electron пишет:
надо разбираться почему не определяет. на exbb.info/community если зайти определяет моб.версию?

Да, определяется.
Странно.

А можно ваш скрипт?
И как его приделать к такому варианту:

Есть текст "Текст 1".
Его нужно показывать для PC.
Есть текст "Текст 2".
Его нужно показывать для мобильных устройств.

Как сделать так.
11. electron - 15 января 2017 — 13:45 - перейти к сообщению
Gori пишет:
А можно ваш скрипт?

у нас не скрипт, у нас фильтрация по юзер-агенту
12. Gori - 16 января 2017 — 08:51 - перейти к сообщению
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';
}

?>
13. Gori - 16 января 2017 — 11:06 - перейти к сообщению
Отзыв об этом скрипте:

Очень часто при разработке веб-приложений возникает необходимость определения браузера клиента, для того, чтобы показать ему тот или иной контент или изменить логику поведения веб-приложения. Оригинал статьи расположен здесь. Demo здесь.

Для определения мобильного устройства используются регулярные выражения (preg_match) PHP, этот подход сохранился и по сей день.

Скрипт для определения мобильного браузера клиента, будь то планшет или мобильный телефон, работает путем сопоставления строк User-Agent ($_SERVER['HTTP_USER_AGENT']) мобильных устройств с использованием регулярных выражений. Но, стоит отметить, что такой подход не дает высокой степени обнаружения модели мобильного устройства, определяется только тип устройства — телефон или планшет, это видно из параметров регулярного выражения и элементов массивов.

Так же использование такого подхода может не подойти для высоко нагруженных веб-приложений, preg_match выполняется долго... Скрипт может не распознавать некоторые планшеты Android, которые сделан в Китае на Малой Арнаутской)

Стоит понимать, что этот скрипт нуждается в постоянном обновлении списка новых устройств.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.02]     [ ]