PDA

View Full Version : Display Theme According To Resolution?


Gemma
08-01-2012, 07:05 AM
Does anyone know of a way to display a theme automatically in accordance to the user's screen resolution?

I had some code before which stopped certain elements of my theme appearing on lower resolution screens but was never able to suss out how to load a theme automatically if, for example, your monitor resolution was 1600*900 or higher.

I'm not even sure if it is possible - if I remember correctly my attempts just caused my index page to loop, constantly trying to load 'theme A' or 'theme B' depending on my resolution setting.

Sarteck
08-01-2012, 09:35 AM
It'd likely have to be passed to PHP by JavaScript, if you were to do it. And that would mean that the first page a user loads would NOT display the correct Style-By-Resolution, but subsequent ones would.

Let's see, you could do something like... Make a page that basically says "Please wait a moment while we detect your browser resolution." On that page, you could have JavaScript set the URL according to the screen size.

<script type="text/javascript" language="javascript">
function get_styleid_by_resolution()
{
var x = screen.width;
var y = screen.height;
var resolution = x+'x'+y;
var styleid_by_res = 0;
switch(resoltuion)
{
case '1024x768': styleid_by_res = 1; break;
case '1280x800': styleid_by_res = 2; break;
case '1920x1080': styleid_by_res = 3; break;
case '320xwhatever': styleid_by_res = 4; break;
/* Etc. */
}
return styleid_by_res;
}
function set_styleid_in_url(sid)
{
location.href = 'http://my.forum/respage.php?styleid='+sid+'&res_set=1';
}
</script>

The res_set is a variable your respage.php would have to set into the cookie, like so:

vbsetcookie('res_set',1);


Then you'd need a plugin (maybe somewhere in the Global stuff) to check to see if the res_set is set.

$res_set = $vbulletin->input->clean_gpc('c', 'res_set', 'TYPE_BOOL');
if (!$res_set)
{
/// Do some redirection to resolution setting page, I guess
$vbulletin->url = 'res_page.php'.$vbulletin->session->vars['sessionurl'];
print_standard_redirect('We\'re, like, gunna try to detect your resolution and shit.', false, true);
die();
}






Mind you, this isn't meant to be followed step-by-step; it's just a general idea of what you'd have to code for it. (Although someone else probably has a better idea.)

Gemma
08-01-2012, 09:43 AM
Thanks, I'll have a play around later :)