[MobileDetect] Мобильная версия для вашего сайта
Предлагаю вашему вниманию новое дополнение для создания мобильной версии сайта.
Еще вчера утром я не знал, что буду его писать, но так вышло. Логика целиком повторяет Mobile Detection из официального репозитория, но:
Плагин парсит страницу при выводе и убирает из неё теги для других версий устройств.
Всего можно использовать три вида тегов: standard, tablet и mobile.
Если посетитель заходит на сайт с мобильного — убирается контент тегов standard и tablet. Если с компьютера — то tablet и mobile. Таким образом, вы легко можете организовать мобильную версию сайта.
Проблем с кэшированием нет, потому что ненужные теги убираются при выводе юзеру. Работает это быстро, простейшие регулярки.
Все возможные опции вынесены в системные настройки. Это значит, что их можно указывать раздельно для каждого контекста.

Помимо автоопределения, можно и напрямую указывать требуемую версию через url.
Компонент уже можно загрузить из магазина, безвозмездно.
Исходный код в репозитории на GitHub. Встроенный Mobile Detect в директории core можно без проблем обновлять из его репозитория.
Посмотреть в работе можно на демо-сайте.
Если вам хочется отблагодарить автора за проделанную работу — это можно сделать у меня на сайте.
Еще вчера утром я не знал, что буду его писать, но так вышло. Логика целиком повторяет Mobile Detection из официального репозитория, но:
- Используется класс mobiledetect.net
- Отдельно определяются планшеты
- Всё написано с нуля, так что код гораздо лучше
- Тем более, что оригинал не обновлялся с мая 2011 года
Принцип работы
Плагин парсит страницу при выводе и убирает из неё теги для других версий устройств.
Всего можно использовать три вида тегов: standard, tablet и mobile.
<!DOCTYPE html>
<html>
<head>
<title>[[++site_name]] - [[*pagetitle]]</title>
<base href="[[++site_url]]" />
</head>
<body>
<standard><p>This is a <b>standard</b> view.</p></standard>
<tablet><p>This is a <b>tablet</b> view.</p></tablet>
<mobile><p>This is a <b>mobile</b> view.</p></mobile>
<p>Parse time: [^t^]</p>
</body>
</html>Если посетитель заходит на сайт с мобильного — убирается контент тегов standard и tablet. Если с компьютера — то tablet и mobile. Таким образом, вы легко можете организовать мобильную версию сайта.
Проблем с кэшированием нет, потому что ненужные теги убираются при выводе юзеру. Работает это быстро, простейшие регулярки.
Настройки
Все возможные опции вынесены в системные настройки. Это значит, что их можно указывать раздельно для каждого контекста.
- disable_plugin — Выключить плагин
- use_cookie — Запоминать тип браузера юзера.
- tablet_is_standard — Считать планшеты компьютерами и выводить для них тег standard.
- + разные настройки для указания переменных и тегов версий

Помимо автоопределения, можно и напрямую указывать требуемую версию через url.
Заключение
Компонент уже можно загрузить из магазина, безвозмездно.
Исходный код в репозитории на GitHub. Встроенный Mobile Detect в директории core можно без проблем обновлять из его репозитория.
Посмотреть в работе можно на демо-сайте.
Если вам хочется отблагодарить автора за проделанную работу — это можно сделать у меня на сайте.
Комментарии: 46
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Только не качает:
Не могу скачать пакет в: store.simpledream.ru/extras/download?package_id=96&version_id=387&username=***&api_key=***&http_host=***
Меньше вес — быстрее загрузка, плюс можно вообще иначе расположить элементы на странице. А могут быть еще и такие ситуации.
Адаптив никто не отменяет. Если нравится — используй его, но это именно что адаптация, а не отдельная мобильная версия.
В остальном идея хорошая, многие кардинально меняют сайт и редиректят на поддомен.
Не знаю на сколько это расширение может задержать первичный вызов страницы… м… кеширование, как он с ним будет работать? Запрет?
Порой так хочется выиграть пару десятков миллисекунд при загрузке страницы, а статей на эту тему не так много.
В заметке же написано
Шаблон
Содержимое ресурса
Для вывода Содержимое ресурса
Или что? вопрос не понятен
и новый:
конструкции типа:
нет желания городить, и не ясно как в итоге это воспримет парсер modx и куда будет вставлять свой код, и переписывать половину старого CSS, которое завязано на этих классах тоже желания нет
Если использую вообще чужой код — все работает корректно.
Другой вопрос, что там сам файл с определением нужно обновлять регулярно, ибо выходят новые устройства, которые он не знает.
раньше уже пробовал MobileDetect и все отлично работало. Сам сайт union-box.ru/contacts. Версия PHP 5.5
Все ок. Нет?
Проверка адаптивного дизайна в инструменте веб-разработки показывает одновременно все три тега.
Интересно, как на это реагируют поисковики?
Василий, обновление файлов mobiledetect.net/ сейчас весьма существенно улучшает определение устройств. Если будет у тебя возможность, плиз, обновленный пакет не помешал бы в магазине.
PS проверял в новомодном браузере blisk.io — все срабатывает, чует он юзер агент четко.
PS правда, обновленный мной mobiledetect срабатывает не всегда, ищу что не так:)
Вообще, по-моему, планшеты — это подмножество мобильных устройств. Т.е. mobile — это и телефоны и планшеты.
п.с. по поводу что это одно и тоже согласен, если человеку нужен полный сайт, то для это есть кнопка у них — отобразить полный сайт!
Так в документации mobileDetect написано.
Подскажите по поводу этой ошибки, консоль заспамлена прям ей.
[2019-03-19 16:03:52] (ERROR @ /home/.../docs/core/components/mobiledetect/mobiledetect.class.php: 81) PHP warning: Expiry date cannot have a year greater than 9999
В системных настройках в разделе MobileDetect пусто и сниппет MobileDetect не появился.
Вставил на страницу:
На экран выводится «This is a mobile view via Fenom output filter.» как на компьютере так и на мобилке. Пробовал в шаблоне, в чанке, во вложеном в чанк, чанке. Не хочет работать хоть ты тресни.
Кто-нибудь сталкивался с подобным?
Почему то если зайти с Ipad или другого планшета, все равно показывает версию для Десктопа (standard)а точнее то что тут На телефоне работает. В настройках стоит «Считать планшеты десктопом» — НЕТ.
Большое спасибо за плагин! До этого использовал Mobile Detection, но на php8.1 он почему то не заработал. Установил Ваш плагин — все заработало, даже переделывать ничего не пришлось.