7

I've setup a special mobile store/store front under a subdomain - www.m.mydomain.com according to this tutorial.

I was going to put this code in the Miscellaneous scripts to make the system detect that a customer is connecting from a mobile device and forward the traffic to www.m.mydomain.com:

I have a special responsive mobile store at m.MYdomain.com - how to make Magento detect mobile devices and forward the traffic to m.Mydomain.com?

But now I'm thinking a better solution might just be through changing the .htaccess file as explained here.

But I don't understand where to put that code into? Also - that post is from 2010. Is there something newer to go with given the development in the mobile devices and tablets?

I also need to place a large button on the mobile site (at www.m.mydomain.com ) that would re-direct customers to the desktop version of the site (www.mydomain.com) if they choose to. What is the best way to do that?

I mean - How can this work? Will it not be stuck in a loop? When the customer clicks the button that will send it to www.mydomain.com, won't the script once again detect that it is a mobile device and transfer the traffic back to www.m.mydomain.com ? I read about doing it with cookies but how exactly? And how would I set that button up?

I am looking for a simple solution as in: take this code and put it here. Change this code here and you are done! :o)

In my example my desktop site is: www.mydomain.com and my mobile is at: www.m.mydomain.com while my desktop store name and store front name is: mydomain.com and my mobile store name and store front name is: mmydomaincom


Updated December 12th:

Please don't tell me to load a different theme. I already have a nice responsive theme! This is not the problem. The reason I want to redirect to my mobile site (located at www.m.mysite.com) is that I have around 50 products on my desktop front page and a lot of things (such as text put on there by the SEO company) that are just taking up space and I don't need to display that clutter on mobile devices. I think that ordering on a mobile device should be fast and easy without unnecessary junk. That said - I am not trying to reinvent the wheel here. I need 2 things.

1. Detect the mobile device and if that is so - load www.m.mysite.com instead of www.mysite.com

2. Add a button for people who for whatever reason (maybe they are connected to a fast wifi connection) decide they want the desktop version instead and make it work when they click it to display www.mysite.com

If you go to www.ebay.com on your mobile phone - it redirects to "m.ebay.com" Same with YouTube, Facebook, Twitter, LinkedIn...So don't tell me this is an old age approach. If these multi-billion dollar companies are doing it - it has some logic behind it....

2

4 Answers 4

0
<?php

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))

header('Location: http://detectmobilebrowser.com/mobile');

?>

in header location you specify store url of mobile device

3
  • This looks good. Do I place this code into the .htaccess file? And how would you handle the redirect back to the Full Desktop version when the customer clicks on a button to do so?
    – Allysin
    Commented Dec 18, 2016 at 14:18
  • you wil redirect to desktop version when user click on button Commented Dec 19, 2016 at 3:35
  • and this code is not use in .htaccess file . you put this code in header file Commented Dec 19, 2016 at 3:36
0

you should add exceptions for the mobile devices. Navigate to the Magento administrative area -> System -> Configuration -> Design -> Themes. Click on the Add Exceptions buttons beside the Templates, Skin and Layout labels.

And for the Matched exceptions add **iPhone|iPod|BlackBerry|Palm|Googlebot-Mobile|Mobile|mobile|mobi|Windows Mobile|Safari Mobile|Android|Opera Mini**

This solution assumes that you have a different custom theme for mobile store

3
  • Correct, but this doesn't account for the question to have customers be able to show the desktop site on their mobile devices if they want to, because it would simply redirect them back to the mobile site. Commented Dec 12, 2016 at 9:35
  • @Vlad Patru I already have a responsive theme. I am NOT trying to redirect to a different theme. I need to redirect to my mobile store front=www.m.mysite.com If it's good enough for companies like eBay, YouTube, Facebook, Twitter, LinkedIn then it's good enough for me. Not to mention I have many many products on my desktop front page and too much unnecessary text (SEO) & on my mobile website I only have 12 products and none of this useless text. I can't believe in 2016 it's so hard to detect a mobile device, redirect to www.m.mysite.com and put a button there to go back to the desktop version
    – Allysin
    Commented Dec 12, 2016 at 9:43
  • It's not hard to detect a mobile device. But beware of the side-effects: Checking for 'Android' also matches Android tablets that are fully capable of showing the desktop variant. You cannot detect resolution server-side. But if your problem is only the many, many products, why not just load the product block with a XHR request. Since that's done with JavaScript you're able to detect the resolution and determine if you want to load a large or a small set. Commented Dec 13, 2016 at 7:58
0

First off, the link you provided is for setting up a multisite/multi store. For example, when you have a multi language site; it detects patterns in the domain name and sets the proper store code if set.

To answer your second question: The .htaccess code of 2010 should still work. Haven't tested it yet, but it's nothing more than checking the user-agent against a regular expression and nothing much has changed since then.

So you could use the second example to set the redirect. However, you want to be able to redirect back to the site, effectively ignoring the .htaccess-rule.

I think your best bet may be to not use the .htaccess-rule, but rather let Magento handle the redirect according to the user agent. See this article on how to set this up.

The second challenge you have then is to make Magento ignore this redirect if someone explicitly chooses the link on one of those mobile devices. I think you can best handle this by tracking down the code in Magento that handles the redirect and create a module that rewrites this code (or if you're lucky there's an event for that). In your module, you can then check if there's a flag in your URL (like ?noredirect or something), and add a flag to the user session so it never will trigger the redirect.

So no, there's not a 'one-line-solution' for what you're trying to achieve, but if you know how-to-Magento, it's not a very difficult task to setup.

But... why use a mobile site in the first place? Why not make your template responsive? Mobile redirects or so 2001...

3
  • Thank you so much for writing your answer. I hope there will be people reading this later on whom it will help. In my case-I have a responsive site but I really need to redirect to www.m.mydomain.com I have many reasons for that - 1 is that I have 48 products on my front page and that loads extremely slow on a cell phone with just a mobile data connection. 2. - I have a lot of blah blah text on my desktop front page because of SEO but that is NOT necessary for the mobile. If you go to www.ebay.com it redirects to "m.ebay.com" Same with YouTube, Facebook, Twitter, LinkedIn..
    – Allysin
    Commented Dec 12, 2016 at 9:35
  • See my comment on Vlad's answer. Another option is to load your product catalog with XHR requests. "Blah blah blah" can be easily hidden with CSS (I assume your text is not hundreds of kilobytes). But if you really want to take the redirect road, I still think you have to make a model to set a flag in the session to prevent a redirect-loop. Commented Dec 13, 2016 at 8:01
  • I can see you are very smart with Magento. What you say actually makes sense but for me it would actually be difficult to setup loading of the catalog with XHR requests and even hiding text with CSS. I try to work in the KISS (Keep It Simple, Stupid) mode as much as possible and setting up a subdomain with a different responsive theme and different products on the front page is the simplest way to go (it's done already). I am still stuck with how to setup the redirect and the link back :-( I wish someone could just do a 5?step recipe for all the people out there trying to do this
    – Allysin
    Commented Dec 15, 2016 at 21:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.