vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Display Theme According To Resolution? (https://vborg.vbsupport.ru/showthread.php?t=286175)

Gemma 08-01-2012 07:05 AM

Display Theme According To Resolution?
 
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.

HTML Code:

<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:

PHP Code:

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.

PHP Code:

$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.'falsetrue);
  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 :)


All times are GMT. The time now is 03:34 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.01350 seconds
  • Memory Usage 1,721KB
  • 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
  • (1)bbcode_html_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (3)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