Работает с последней версией UMI (должно быть доступно событие systemPrepare).
В функции system_is_mobile файла libs/system.php есть проверка, установлена ли cookie 'is_mobile'. Если да - показывать мобильную версию, если нет - обычную.
Добавим свой обработчик события, который проверит тип устройства пользователя. Для этого воспользуемся сторонней библиотекой http://mobiledetect.net/
В папке /classes/modules/content/ext/
Добавляем файл common_content_check_tablet.php с содержанием:
class common_content_check_tablet {
public function onSystemPrepareCheckTablet(iUmiEventPoint $eventPoint) {
if($eventPoint->getMode() !== 'before') {
return false;
}
require_once CURRENT_WORKING_DIR . '/libs/vendor/MobileDetect/Mobile_Detect.php'; /*(указываете путь до файла библиотеки)*/
$detect = new Mobile_Detect();
if($detect->isTablet()) {
setcookie('is_mobile', false); /*Устанавливаем значение в cookie*/
}
}
}
В эту же папку добавляем файл events_content_check_tablet.php
new umiEventListener('systemPrepare', 'content', 'onSystemPrepareCheckTablet');
И файл permissions.content_check_tablet.php
$permissions = array(
'content' => array(
'onSystemPrepareCheckTablet',
)
);
Не проверял на боевом сайте - под рукой нет примера - но должно работать.
Да решили, спасибо e.ioffe
Работает с последней версией UMI (должно быть доступно событие systemPrepare).
В функции system_is_mobile файла libs/system.php есть проверка, установлена ли cookie 'is_mobile'. Если да - показывать мобильную версию, если нет - обычную.
Добавим свой обработчик события, который проверит тип устройства пользователя. Для этого воспользуемся сторонней библиотекой http://mobiledetect.net/
В папке /classes/modules/content/ext/
Добавляем файл common_content_check_tablet.php с содержанием:
<?php
class common_content_check_tablet {
public function onSystemPrepareCheckTablet(iUmiEventPoint $eventPoint) {
if($eventPoint->getMode() !== 'before') {
return false;
}
require_once CURRENT_WORKING_DIR . '/libs/vendor/MobileDetect/Mobile_Detect.php'; /*(указываете путь до файла библиотеки)*/
$detect = new Mobile_Detect();
$isTablet = $detect->isTablet();
if($isTablet && system_is_mobile()) {
setcookie("is_mobile", "0", null, "/");
$this->redirect(getServer('HTTP_REFERER'));
}
}
}
В эту же папку добавляем файл events_content_check_tablet.php
<?php
new umiEventListener('systemPrepare', 'content', 'onSystemPrepareCheckTablet');
?>
И файл permissions.content_check_tablet.php
<?php
$permissions = array(
'content' => array(
'onSystemPrepareCheckTablet',
)
);
?>
Проверяли на 11 и 12 версии все работает.