1-888-365-2779
+1-888-365-2779
Try Now
More in this section

Forums / Developing with Sitefinity / Change Master and Theme for Mobile depending on outcome of logic

Change Master and Theme for Mobile depending on outcome of logic

2 posts, 0 answered
  1. Jason
    Jason avatar
    23 posts
    Registered:
    17 Jun 2009
    19 Jan 2012
    Link to this post
    Hi,

    I am developing a project which includes my first venture in to Mobile web development.  I am trying to change the Master page (template) and theme depending on the outcome of the boolean I have.  I have trawled for answers but it seems that nothing really makes sense as its either too old to not relevant.  Your help would be appreciated.  We will be using Sitefinity 4.4.

    Also... is there plans to make this kind of development a part of sitefinity in future versions?

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Cms;
     
    public partial class App_Master_wms_main : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (isMobileBrowser() == true)
            {
            }         
     
        }
     
        public static bool isMobileBrowser()
        {
            //GETS THE CURRENT USER CONTEXT
            HttpContext context = HttpContext.Current;
     
            //FIRST TRY BUILT IN ASP.NT CHECK
            if (context.Request.Browser.IsMobileDevice)
            {
                return true;
            }
            //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER
            if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
            {
                return true;
            }
            //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP
            if (context.Request.ServerVariables["HTTP_ACCEPT"] != null &&
                context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
            {
                return true;
            }
            //AND FINALLY CHECK THE HTTP_USER_AGENT
            //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING
            if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
            {
                //Create a list of all mobile types
                string[] mobiles =
                    new string[]
                    {
                        "midp", "j2me", "avant", "docomo",
                        "novarra", "palmos", "palmsource",
                        "240x320", "opwv", "chtml",
                        "pda", "windows ce", "mmp/",
                        "blackberry", "mib/", "symbian",
                        "wireless", "nokia", "hand", "mobi",
                        "phone", "cdm", "up.b", "audio",
                        "SIE-", "SEC-", "samsung", "HTC",
                        "mot-", "mitsu", "sagem", "sony"
                        , "alcatel", "lg", "eric", "vx",
                        "NEC", "philips", "mmm", "xx",
                        "panasonic", "sharp", "wap", "sch",
                        "rover", "pocket", "benq", "java",
                        "pt", "pg", "vox", "amoi",
                        "bird", "compal", "kg", "voda",
                        "sany", "kdd", "dbt", "sendo",
                        "sgh", "gradi", "jb", "dddi",
                        "moto", "iphone"
                    };
     
                //Loop through each item in the list created above
                //and check if the header contains that text
                foreach (string s in mobiles)
                {
                    if (context.Request.ServerVariables["HTTP_USER_AGENT"].
                                                        ToLower().Contains(s.ToLower()))
                    {
                        return true;
                    }
                }
            }
     
            return false;
        }
    }

    Cheers
    Jason
  2. Boyan Barnev
    Boyan Barnev avatar
    1429 posts
    Registered:
    16 Aug 2017
    21 Jan 2012
    Link to this post
    Hi Jason,

    That's a tough one, unfortunately there is no straightforward way to change dynamically the template of a Sitefinity page. However, I believe you might achieve similar results using CSS 3 media queries, for example you might want to check this blog post out.
    Another option, if you still prefer to keep the mobile version separated from the desktop browsers one, you can create different pages and use a simple user control on a page to detect whether the browser is mobile or not, and redirect to the desired version.

    "Also... is there plans to make this kind of development a part of sitefinity in future versions?" - yes, we are currently working on extending the default functionality with mobile support, and the feature should be available in an upcoming release.

    Please do not hesitate to get back to us if you need some additional information, or have some other questions.

    All the best,
    Boyan Barnev
    the Telerik team
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
2 posts, 0 answered