Making phpBB3 Mobile Compatible

by Admin on March 30, 2009

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.

Code:
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% [?]

Leave a Comment

Previous post: Changing Logo in phpBB3 complete tutorial

Next post: How to Add a Sidebar in phpbb prosilver Tutorial