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

Тема в разделе "DLE", создана пользователем Sunday, 4 май 2012.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Подскажите, как работает механизм, который определяет телефон и редиректит на нужный шаблон. Какие файлы движка здесь задействованы?
     
  2. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Через .htaccess перенаправить по юзерагенту телефона на нужный шаблон выглядит примерно вот так:
    1) Определяется реф, который конкретной модели телефона
    2) Делается в .htaccess переадресания при заходе с этим рефом на страницу примерно таким макаром
    Код:
    RewriteCond %{HTTP_USER_AGENT} ^.*тут-юзерагент.*$
    RewriteRule ^(.*)$ тут-url-переключения-шаблона-для-этого-типа-юзерагента [R=301]
    Это если тебе такое перенаправление новое сделать надо. А как там штатно оно переадресовывает я не знаю, скорее всего что то подобное, но на пхп. Можно поискать по содержимому файлов юзерагенты мобильные и найти этот кусок кода. А можно забить и самому сделать по тому принципу, как я выше дал, и не разбираться в чужих тараканах.
     
    Sunday нравится это.
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Ок, посмотрю, что там у них, мне нужно именно на DLE это расковырять.
     
  4. deling2

    deling2

    Регистр.:
    27 янв 2008
    Сообщения:
    326
    Симпатии:
    216
    Как уже озвучил 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'] );
       
                    }
     
                }
     
            }
     
    lift и Sunday нравится это.