vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Mobile Detection (https://vborg.vbsupport.ru/showthread.php?t=279152)

MikeTrin 02-25-2012 12:22 PM

Mobile Detection
 
There's a lot of info on changing a users theme if they are using a mobile browser. I'm looking to just change a few images and adsense code on various templates.

I have a taken some code out of init.php that vbulletin uses to detect various mobile browsers.

I'm trying to create a single global variable that I can use vb if condition on it from any template on any theme. I've seen the VB_Template::preRegister code that lets you push php variables to single templates but I need it go to any template.

So the question is, which hook and how do create a global variable that can be accessed from any template. I'ved attempted to use global $mobilemt as seen below in the global_bootstrap_init_start hook and {vb:raw mobilemt} in a template with no luck.

PHP Code:

global $mobilemt 

$mobilemt 
"no"

if (
stripos($_SERVER['HTTP_USER_AGENT'], 'windows') === false)  
    {  
        if (  
            
preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i'strtolower($_SERVER['HTTP_USER_AGENT']))  
            OR  
            
stripos($_SERVER['HTTP_ACCEPT'],'application/vnd.wap.xhtml+xml') !== false  
            
OR  
            ((isset(
$_SERVER['HTTP_X_WAP_PROFILE']) OR isset($_SERVER['HTTP_PROFILE'])))  
            OR  
            
stripos($_SERVER['ALL_HTTP'],'OperaMini') !== false  
        
)  
        {  
            
$mobile_browser true;  
        }  
        
// This array is big and may be bigger later on. So we move it to a second if.  
        
elseif (in_array(  
                    
strtolower(substr($_SERVER['HTTP_USER_AGENT'], 04)),  
                    array(  
                    
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',  
                    
'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',  
                    
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',  
                    
'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',  
                    
'newt','noki','oper','palm','pana','pant','phil','play','port','prox',  
                    
'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',  
                    
'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',  
                    
'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',  
                    
'wapr','webc','winw','winw','xda ','xda-')  
                )  
            )  
        {  
            
$mobile_browser true;  
        }  
    }  

    if (  
        
$mobile_browser  
        
AND  
        
preg_match('/(ipad|ipod|iphone|blackberry|android|pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i'strtolower($_SERVER['HTTP_USER_AGENT'])) 
    )  
    {  
        
$mobile_browser_advanced true;  
    }  

    if (
$mobile_browser_advanced||$mobile_browser
    { 
        { 
            
$mobilemt="yes"
        } 
    } 


MikeTrin 03-22-2012 01:21 AM

i know how much i love when google indexes questions with no solutions...

I was able to solve this using a hidden profile field. It seems to work...


At the end of the plug in (global_start) i set it.

Code:

*** snip ***

    if ($mobile_browser_advanced||$mobile_browser) 
    { 
        { 
            $mobilemt="yes"; 
        } 
    } 

$vbulletin->userinfo['field15'] = $mobilemt;

Then to do an IF Condition in a template I just...

Code:

<vb:if condition="$bbuserinfo[field15] == 'no'">
.....
</vb:if>

I didn't really want to use a profile field but it does seem to work.

If anyone has any better suggestions, i'm open.


All times are GMT. The time now is 05:21 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01516 seconds
  • Memory Usage 1,742KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (2)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete