• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь редирект на шаблон для телефонов

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Подскажите, как работает механизм, который определяет телефон и редиректит на нужный шаблон. Какие файлы движка здесь задействованы?
 
Через .htaccess перенаправить по юзерагенту телефона на нужный шаблон выглядит примерно вот так:
1) Определяется реф, который конкретной модели телефона
2) Делается в .htaccess переадресания при заходе с этим рефом на страницу примерно таким макаром
Код:
RewriteCond %{HTTP_USER_AGENT} ^.*тут-юзерагент.*$
RewriteRule ^(.*)$ тут-url-переключения-шаблона-для-этого-типа-юзерагента [R=301]
Это если тебе такое перенаправление новое сделать надо. А как там штатно оно переадресовывает я не знаю, скорее всего что то подобное, но на пхп. Можно поискать по содержимому файлов юзерагенты мобильные и найти этот кусок кода. А можно забить и самому сделать по тому принципу, как я выше дал, и не разбираться в чужих тараканах.
 
Ок, посмотрю, что там у них, мне нужно именно на DLE это расковырять.
 
Как уже озвучил lift, в ДЛЕ подобное реализовано на php.
Какие файлы движка здесь задействованы?
functions.php
Для 9.4 строки 1064-1079.
PHP:
function check_smartphone() {
 
    if ( $_SESSION['mobile_enable'] ) return true;
 
    $phone_array = array('iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'operamobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'symbos', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser', 'android');
    $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
 
    foreach ($phone_array as $value) {
 
        if ( strpos($agent, $value) !== false ) return true;
 
    }
 
    return false;
 
}
Сам в свое время искал, когда необходимо было выдрать список признаков, по которым DLE определяет телефон.

Ну а далее в каждом файле отвечающий за вывод, например тот же show.custom, show.full и т.д. DLE уже вырезает то, что не нужно показывать для смартфонов.
PHP:
if ($smartphone_detected) {
 
            if (!$config['allow_smart_format']) {
 
                    $row['short_story'] = strip_tags( $row['short_story'], '<p><br><a>' );
                    $row['full_story'] = strip_tags( $row['full_story'], '<p><br><a>' );
 
            } else {
 
                if ( !$config['allow_smart_images'] ) {
   
                    $row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
                    $row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
                    $row['full_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['full_story'] );
                    $row['full_story'] = preg_replace( "#<img(.+?)>#is", "", $row['full_story'] );
   
                }
   
                if ( !$config['allow_smart_video'] ) {
   
                    $row['short_story'] = preg_replace( "#<!--dle_video_begin(.+?)<!--dle_video_end-->#is", "", $row['short_story'] );
                    $row['short_story'] = preg_replace( "#<!--dle_audio_begin(.+?)<!--dle_audio_end-->#is", "", $row['short_story'] );
                    $row['full_story'] = preg_replace( "#<!--dle_video_begin(.+?)<!--dle_video_end-->#is", "", $row['full_story'] );
                    $row['full_story'] = preg_replace( "#<!--dle_audio_begin(.+?)<!--dle_audio_end-->#is", "", $row['full_story'] );
   
                }
 
            }
 
        }
 
В новых версиях целый класс используется для этого.

Кто подскажет, чтобы всё работало, этого достаточно?

PHP:
require_once 'mobiledetect.class.php';

$mobile_detect = new Mobile_Detect;

if ($mobile_detect->isTablet() or $mobile_detect->isMobile()) {

       echo "It's Mobile or Tablet";

     }

PS
Доки, как всегда рулят. Здесь всё понятно: Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху