Для определения типа устройства пользователя воспользуемся библиотекой Mobile_Detect.php, через так называемое «PHP выражение» в настройках сайта. Едиственная проблема — туда можно писать только выражение PHP, а Mobile_Detect требует создание объекта. Не беда. Отнаследуемся от него и напишем синглтон.

<?php
 
namespace Olepro\Classes\Helpers;
 
require $_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/classes/inc/Mobile_Detect.php';
 
class MobileDetect extends \Mobile_Detect {
 
    /** @var \Mobile_Detect */
    protected static $instance;
 
    /**
     * @return \Mobile_Detect
     */
    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self();
        }
 
        return self::$instance;
    }
 
}

Добавим его автозагрузку в init.php.

use \Bitrix\Main\Loader;
 
Loader::registerAutoLoadClasses(null, array(
    '\Olepro\Classes\Helpers\MobileDetect' => '/local/php_interface/classes/helpers/mobiledetect.php',
));

В папку /local/php_interface/classes/inc/ нужно положить оригинальный класс Mobile_Detect.

Осталось дело за малым.

Идём в настроки сайта, в раздел «Шаблон сайта», выбираем свой шаблон. Ставим сортировку меньше (важно!), чем у основного шаблона. В «Тип условия» ставим «Выражение PHP». Ну а в условие пишем:

(class_exists('Olepro\Classes\Helpers\MobileDetect') && (Olepro\Classes\Helpers\MobileDetect::getInstance()->isMobile() || (isset($_COOKIE['mobile']) && $_COOKIE['mobile'] == 'Y')))



Материалы: Mobile_Detect.php