I’ve found a way of making phpBB3 completely mobile compatible, regardless of the template or theme.
Because the developers were ingenious enough to implement proper CSS formatting, this is fairly simple. My approach will be to use style.php (which is the #1 resource hog on the server, by the way – it’d be nice if you guys fixed this before 3.0) to determine if the HTTP_HEADER matches a mobile client – and if it does, do not return any stylesheet.
This function will detect most of the possible signs of a mobile client – and will return true (is a mobile) or false (not a mobile) based on this logic.
You can wrap your style.php in a conditional statement based on the result of this function to make your phpBB3 board compatible with mobile devices.
function detect_mobile_device(){ // check if the user agent value claims to be windows but not windows mobile if(stristr($_SERVER['HTTP_USER_AGENT'],'windows')&&!stristr($_SERVER['HTTP_USER_AGENT'],'windows ce')){ return false; } // check if the user agent gives away any tell tale signs it's a mobile browser if(eregi('up.browser|up.link|windows ce|iemobile|mini|mmp|symbian|midp|wap|phone|pocket|mobile|pda|psp',$_SERVER['HTTP_USER_AGENT'])){ return true; } // check the http accept header to see if wap.wml or wap.xhtml support is claimed if(stristr($_SERVER['HTTP_ACCEPT'],'text/vnd.wap.wml')||stristr($_SERVER['HTTP_ACCEPT'],'application/vnd.wap.xhtml+xml')){ return true; } // check if there are any tell tales signs it's a mobile device from the _server headers if(isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE'])||isset($_SERVER['X-OperaMini-Features'])||isset($_SERVER['UA-pixels'])){ return true; } // build an array with the first four characters from the most common mobile user agents $a = array('acs-','alav','alca','amoi','audi','aste','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','opwv','palm','pana','pant','pdxg','phil','play','pluc','port','prox','qtek','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','w3c ','wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda','xda-'); // check if the first four characters of the current user agent are set as a key in the array if(isset($a[substr($_SERVER['HTTP_USER_AGENT'],0,4)])){ return true; }}
This is obviously not the GREATEST solution, and special devices (like the every failing Apple iPhone) will likely require a special theme. Rather than using the CSS to style a beautiful page on a really tiny screen, we’re going to let the mobile handle it as raw content. Images and embedded objects will still display.
Popularity: 15% [?]
