Опция мобильного сайта "VIEW FULL SITE" - PullRequest
4 голосов
/ 01 мая 2011

Итак, я работаю над мобильной версией сайта, которым занимаюсь, и пока что я вытаскиваю контент мобильных сайтов из его основного аналога, основного сайта.

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

Теперь я планирую перенаправить мобильных посетителей с помощью .js в теге заголовка на главном сайте с помощью проверки ширины экрана и т. Д. (Не уверен, что это лучший способ, но пока самый простой в моем мозгу)) ( но предложения тоже приветствуются) но как то так

if (screen.width<=XyZ||screen.height<=XyZ) //example iphone size lets say 320x480
window.location.replace("mobile site link here.")

Опять же, я не знаю, является ли это лучшим способом, но на фиктивных тестах это работает на iPhone, некоторых друзьях Droids и одной Blackberry. Но это работает.

В любом случае, поэтому мой вопрос, если я делаю эту проверку на каждой странице ... как я могу иметь опцию "просмотреть весь сайт"?

Ответы [ 5 ]

8 голосов
/ 01 мая 2011

Используйте PHP для обнаружения мобильных пользователей через $_SERVER['HTTP_USER_AGENT'].Обнаружение JavaScript может быть ненадежным, поскольку многие мобильные браузеры не поддерживают JS.«Просмотр полного сайта» установит файл cookie для отклонения мобильного сайта, который можно обнаружить.Используйте куки для отслеживания предпочтений вашего пользователя.

В скелете

<?php

if (isset($_COOKIE['nomobile'])) {
  $style = "normal";
} else {

if (preg_match('/iPhone|(...etc...)/', $_SERVER['HTTP_USER_AGENT'])) {
   $style = "mobile";
} else {
   $style = "normal";
}

}

Для страницы "Просмотр полного сайта":

<a href="fullsite.php">Full Site</a>

fullsite.php

<?php
   setcookie('nomobile', 'true');
   header('Location: index.php');
?>
2 голосов
/ 27 октября 2011

Сначала перейдите по следующему URL-адресу и загрузите файл mobile_detect.php:

http://code.google.com/p/php-mobile-detect/

Далее, следуйте инструкциям на странице и загрузите mobile_detect.php на свойкорневой каталог, вставьте следующий код в индекс или домашнюю страницу:

    <?php
    @include("Mobile_Detect.php");
    $detect = new Mobile_Detect();
    if ($detect->isMobile() && isset($_COOKIE['mobile']))
    {
    $detect = "false";
    }
    elseif ($detect->isMobile())
    {
    header("Location:http://www.yourmobiledirectory.com");
    }
    ?>

Вы заметите, что приведенный выше код проверяет наличие cookie, называемого «мобильным», этот cookie устанавливается, когда мобильное устройство перенаправляетсяна мобильную страницу.Чтобы установить cookie, введите следующий код на целевой странице вашего мобильного телефона:

    <?php
    setcookie("mobile","m", time()+3600, "/");
    ?>

Полный текст статьи можно посмотреть по адресу: http://www.squidoo.com/php-mobile-redirect

0 голосов
/ 01 мая 2011

Обнаружение на стороне сервера - определенно способ сделать это, поскольку у вас нет гарантии, что JS будет доступен или даже включен. Отличный PHP-скрипт для обнаружения мобильных устройств находится здесь http://detectmobilebrowsers.mobi/, и он широко используется в Интернете.

0 голосов
/ 01 мая 2011

Вы можете добавить параметр строки запроса к адресу вашего сайта, например ?fullsite=true, и включить следующее в условие if>

var fullsite = getQueryString()["fullsite"];
if (fullsite != "true" && (screen.height <= xyz || screen.width <= abc)) //now redirect

Вам понадобится следующая строка запроса на доступ к функции. Я взял его отсюда> Строка запроса JavaScript

function getQueryString() {
  var result = {}, queryString = location.search.substring(1),
      re = /([^&=]+)=([^&]*)/g, m;

  while (m = re.exec(queryString)) {
    result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }

  return result;
}

А в ссылке вы можете иметь>

<a href="mysite.com?fullsite=true"> Show me Full Site </a>

===========

Скажите, пожалуйста, взгляните на CSS Media Queries. Возможно, потребуется немного изменить архитектуру вашего проекта, но это довольно полезно.

0 голосов
/ 01 мая 2011

Это не лучший способ, потому что очень часто JS не поддерживается мобильными браузерами.

Вы можете использовать эту функцию:

function its_mobile_browser($user_agent = '')
{
    if (empty($user_agent))
    {
        $user_agent = $_SERVER['HTTP_USER_AGENT'];
        if (empty($user_agent)) return false;
    }

    if (stripos($user_agent, 'Explorer')!==false ||
        stripos($user_agent, 'Windows')!==false ||
        stripos($user_agent, 'Win NT')!==false ||
        stripos($user_agent, 'FireFox')!==false ||
        stripos($user_agent, 'linux')!==false ||
        stripos($user_agent, 'unix')!==false ||
        stripos($user_agent, 'Macintosh')!==false
    )
    {
        if (!(stripos($user_agent, 'Opera Mini')!==false
              || stripos($user_agent, 'WAP')!==false
              || stripos($user_agent, 'Mobile')!==false
              || stripos($user_agent, 'Symbian')!==false
              || stripos($user_agent, 'NetFront')!==false
              || stripos($user_agent, ' PPC')!==false
              || stripos($user_agent, 'iPhone')!==false
              || stripos($user_agent, 'Android')!==false
              || stripos($user_agent, 'Nokia')!==false
              || stripos($user_agent, 'Samsung')!==false
              || stripos($user_agent, 'SonyEricsson')!==false
              || stripos($user_agent, 'LG')!==false
              || stripos($user_agent, 'Obigo')!==false
              || stripos($user_agent, 'SEC-SGHX')!==false
              || stripos($user_agent, 'Fly')!==false
              || stripos($user_agent, 'MOT-')!==false
              || stripos($user_agent, 'Motorola')!==false
        )
        ) return false;
    }

    return true;
}

Или что-то лучше, смеется:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...