Как сделать мобильную версию сайта? Яндекс детектор

Главная/Знания/Веб-копание/Полезные скрипты/Как сделать мобильную версию сайта? Яндекс детектор

Как сделать мобильную версию сайта? Яндекс детектор

Взято с http://умныйдурак.рф/redirekt-na-mobilnuyu-versiyu-sajta-ispolzuya-yandeks-detektor/

Приветствую!

Когда мы создавали наш корпоративный сайт, нам было необходимо сделать редирект на мобильную версию нашего сайта, т.к. основной сайт был резиновый и вся информация наезжала друг на друга и получалась полная ерунда.

 

Причем нужно было что бы переходили только мобильные телефоны, а планшетники и стационарные компьютеры оставались на основной версии. Хотел показать всю красоту сайта так сказать. Я пытался поначалу сделать это своими силами, ковыряя .htaccess, добавляя редиректы для useragent, но моих познаний мне не хватило и на помощь пришел, а точнее пришла девушка фрилансер по имени Виктория. Она то и написала этот скрипт, а так как я за него заплатил и мы воспользовались услугами сайта по поиску фрилансеров, то считаю имею право его опубликовать на своем блоге:)

Сразу скажу, что я не программист и с терминологией у меня туго, но это не мешает мне поделиться с вами тем, что я имею и меня устраивает. Кто то сможет его использовать для своих нужд не меняя ничего(как я), а кто-то сделает из него что-то большее и так же поделится с нами.

В самом скрипте все достаточно хорошо расписано и объяснено что и как.

Расскажу вкратце.

Скрипт имеет 3 уровня распознавания клиента.

1. С полной передачей заголовков для анализа Яндексу

2. Сами отыскиваем UserAgent и посылаем Яндексу

3. Анализируем User-Agent самостоятельно
Если получаем не компьютер и не планшет, то переадресовываем на мобильную версию сайта.

Как поставить:
Копируете и вставляете в notepad++ или где вам удобней работать скрипт(сохраняете как mob.php) или скачиваете готовый файл(вирусов нет), закидываете его в корень основного сайта(не мобильного) и в index.php прописываете исполнение этого файла, после самого первого знака начала кода

<? php

с новой строки пишем:

include "mob.php";

Вместо mob.php имя своего файла, если вдруг решили поменять.

Первый раз я прописал это дело в index.php который лежит в папке моей темы, но был не прав и редирект не сработал, а когда прописал в индексе который лежит в public_html, то все заработало.

Скрипт:

В самом начале скрипта нужно указать адрес основного сайта и адрес мобильной версии.

 

<!—?php

///НАСТРОЙКИ РАБОТЫ СКРИПТА// 

///Здесь указывается адрес Основного Сайта.

///Пустым оставлять нельзя!

$mainsite=»http://yoursite.ru»;

/// Здесь указывается адрес редиректа для мобильных телефонов.

/// Пустым оставлять нельзя!

$mobile=»http://m.yoursite.ru»;

/// То есть при обнаружении мобильного посетителя зашедшего

/// на любую страницу он будет средирекчен на адрес редиректа.

/// Следующий параметр отвечает за то, редиректить ли пользователя

/// на аналогичную мобильную страницу

/// (зашел на http://www.site.ru/mypage.php?some=100500,

/// средиректился на http://www.site.ru/mypage.php?some=100500)

/// в этом случаезначение «page», а если если всех редиректить

/// на главную(или ту, что прописана в предыдущем параметре)

/// мобильной версиитогда значение «main»

$redir=»main»;

 

/////// КОД, НАСТРОЕК НЕТ ///////////

//1-й способ с полной передачей заголовков для анализа Яндексу

$ismobile=false; $sx=1024; $sy=1024;

$headers = »; foreach ($_SERVER as $key =—> $value) {

if (strpos($key, ‘HTTP_’) === 0 && $key != ‘HTTP_HOST’ && $key != ‘HTTP_CONNECTION’) {

$key = strtolower(strtr(substr($key, 5), ‘_’, ‘-‘));

$headers .= $key . ‘: ‘ . $value . «\r\n«;

}

}

 

$opts = array(

‘http’=>array(

‘method’=>»GET»,

‘header’=> $headers,

)

);

$otv = file_get_contents(‘http://phd.yandex.net/detect’, false, stream_context_create($opts));

$convert = explode(«\n«, $otv);

for ($i=0;$i<count($convert);$i++) {=»» if=»» (strlen($convert[$i])=»»> 3)

{

$pos = strpos($convert[$i], ‘screenx’);

if ($pos > 0) {

$sx = strip_tags($convert[$i]) + 0;

}

$pos = strpos($convert[$i], ‘screeny’);

if ($pos > 0) {

$sy = strip_tags($convert[$i]) + 0;

}

}

}

if ($sx < 700) {

$ismobile=true;

}

if ($sy < 500) { $ismobile=true; } //Для надежностивторой способ, сами отыскиваем UserAgent и посылаем Яндексу $url = ‘http://phd.yandex.net/detect’; $uag = $_SERVER[‘HTTP_USER_AGENT’]; ////Для тестирования $uag = ‘SonyEricssonG502/R1FA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1’; $query = http_build_query(    array(        ‘user-agent’  => $uag,

)

);

 

$otv=file_get_contents($url . ‘?’ . $query);

$convert = explode(«\n«, $otv);

for ($i=0;$i<count($convert);$i++) {=»» if=»» (strlen($convert[$i])=»»> 3)

{

$pos = strpos($convert[$i], ‘screenx’);

if ($pos > 0) {

$sx = strip_tags($convert[$i]) + 0;

}

$pos = strpos($convert[$i], ‘screeny’);

if ($pos > 0) {

$sy = strip_tags($convert[$i]) + 0;

}

}

}

 

if ($sx < 700) {

$ismobile=true;

}

if ($sy < 500) { $ismobile=true; } /////////  Это третий способ, проанализируем User-Agent самостоятельно! $pos = strpos($uag, ‘PC’); if ($pos > 0) {

$ismobile=false;

}

$pos = strpos(strtoupper($uag), ‘MOBILE’);

if ($pos > 0) {

$ismobile=true;

}

 

$pos = strpos(strtoupper($uag), ‘TABLET’);

if ($pos > 0) {

$ismobile=false;

}

 

$pos = strpos(strtoupper($uag), ‘IPHONE’);

if ($pos > 0) {

$ismobile=true;

}

 

$pos = strpos(strtoupper($uag), ‘IPAD’);

if ($pos > 0) {

$ismobile=false;

}

 

$pos = strpos(strtoupper($uag), ‘TRANSFORM’);

if ($pos > 0) {

$ismobile=false;

}

 

// Если этоне комп и не планшетник, то готовим адрес редиректа

if ($ismobile)

{

if ($redir == ‘main’)

{

$adr=$mobile;

}

 

if ($redir == ‘page’)

{

$adr=str_replace($mainsite, $mobile, «http://».$_SERVER[‘SERVER_NAME’].$_SERVER[‘REQUEST_URI’]);

}

// ..и, собственно редиректим (301-йсамый правильный редирект)

header(«HTTP/1.1 301 Moved Permanently»);

header(«Location: «.$adr);

exit();

}

 

//Все.

В итоге редирект работает как мне надо, правда в нем не реализованна возможность поставить на сайт кнопки выбора версии сайта, т.к. всегда срабатывает редирект отправляя вас обратно на версию сайта которую определяет детектор, но в моем случае это не критично. Хотя, если кто-то подскажет как это сделать, то будет здорово!

2013-02-17T09:04:46+00:00 Февраль 11th, 2013|Categories: Веб-копание, Полезные скрипты|Нет комментариев

About the Author:

Комментарии:

Оставить комментарий