I have a Drupal site which is quite big and practically unreadable on most mobile devices, by using this scipt, I have managed to get the site to redirect to a sub-domain for each mobile browser.

As the pages on the sub-domains are very minimal with little information, I also wanted to have the option to allow users to actually visit the main site if they wanted to. I've managed to accomplish this by adding a conditional to the code and creating a link on the sub-domains to send a request in URL (?redirect=none). The code in the conditional is this;

 if ($_REQUEST['redirect'] == 'none')

I'm sure there's a better way of doing it (And I'm all ears) but that works fine and does stop the site from redirecting.

However when I click a link on the main site, it then redirects me back to the sub-domain again.

Anyone know how I can stop it from doing this?

Kind Regards

--Matt

Recommended Answers

All 4 Replies

This is just my personal opinion. I think it is a bad practice and convention to forcefully redirect your mobile users to the minimum version of the site. Most iphones are able to take on the regular site. What would I do if I am in your shoes, I would just definitely detect the mobile phones , and then show the link for the mobile version of my site. This way you don't have to worry about auto redirect.

Detecting mobile browser is not that hard, so if they present just show them the link somewhere near the header.

I have a Galaxy Tab and the standard site isn't too bad on it but I tested this on my sisters iPhone and I seriously doubt anyone would see a link to send them to the mobile version.

I was just wanting to give users on mobile devices the very basic information needed about us in an easy to read format and then give them the option to go to the full site if they need it.

In all honesty the kind of people who would access our site via a mobile would be people like builders who want the phone number to check on stock etc.

Just in case people want to do the same, which I don't really recommend. However, there are some cases where the content of the site requires mobile users to be redirected to the mobile version of the mainsite. Here is the code for it.

<?php

## borrowed these codes from someone, but forgot his site url

$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))

## Redirect URL
header('Location: mobileVersion.xml');

?>

If you don't want an auto redirection, then just modify this part of the code

  ## mobile content redirect url
header('Location: mobileVersion.xml');

To something else like link to the mobile version of the site. Something like this

 $showMobileLink = true;

Then somewhere in the header section of the stie if so equiped, I would do like this.

 if($showMobileLink){
  $mobilelink = '<a href="mobileVersion.xml")>Mobile Version</a>';

 }
 else{
 ## you can remove this or just keep it this way
  $mobilelink = '';
 }

Just call it anywhere you want the link to show up.

  echo $mobilelink;

That's it.. the good thing about my recommendation is you don't have to spend a single penny. You can always use .html for the file. I use xml, because that was the one I used on my previous project, but apple turn it down, because my plugin was not sutiable for general audience.. I wrote an iphone apps to spice up the mobile surfers, but did not work. So, I just sold it to overseas company for a dime..

commented: Thank you. +0

The more common implementation of cross-device web development is found in the trend of Responsive Design.
For the few of you who may not know what Responsive Design is, here's a rough idea. It is the method of developing a site where the styles and elements are designed in a manner whereby the site scales and re-destributes its content whether the scren is 32inches or a small phone.
The Drupal OMEGA theme is among the mor epopular in this arena. http://drupal.org/project/omega
I used it on the recent relaunch of my site at http://dougvann.com

Granted.... Respnosive Design doesn't cover ALL use cases. There will be still be times when you want to take a highly specialized site like COMMERCE ite or maybe a MEDIA site and make some very spcific designs for targeted devices. BUT using a responsive design will usually satisfy most if not nearly all device requirements.
Check it out! :-)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.