With all those new Mobile Devices that are capable to display and handle any kind of data, it is only reasonable to provide your Online content to as much devices as possible and not only Computer.
In this post you will see how easy it is to setup a mobile version of your Website without any Modules or Online Services that are being offered around.
The first thing we need to do is creating new UDT (User Defined Tag) that takes care of mobile detection.
To do this go to "Extensions -> User Defined Tag" and create new tag called for example "mobile"
function mobile_device_detect(
$iphone=true,
$android=true,
$opera=true,
$blackberry=true,
$palm=true,
$windows=true,
$mobileredirect=false,
$ipad=false,
$desktopredirect=false){
$mobile_browser = false;
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$accept = $_SERVER['HTTP_ACCEPT'];
switch(true){
case (eregi('ipod',$user_agent)||eregi('iphone',$user_agent));
$mobile_browser = $iphone;
if(substr($iphone,0,4)=='http'){
$mobileredirect = $iphone;}
break;
case (eregi('android',$user_agent));
$mobile_browser = $android;
if(substr($android,0,4)=='http'){
$mobileredirect = $android;}
break;
case (eregi('ipad',$user_agent));
$mobile_browser = $ipad;if(substr($ipad,0,4)=='http'){
$mobileredirect = $ipad; } break;
case (eregi('opera mini',$user_agent));
$mobile_browser = $opera;if(substr($opera,0,4)=='http'){
$mobileredirect = $opera;} break;
case (eregi('blackberry',$user_agent));
$mobile_browser = $blackberry; if(substr($blackberry,0,4)=='http'){
$mobileredirect = $blackberry;} break;
case (preg_match('/(palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i',$user_agent));
$mobile_browser = $palm; if(substr($palm,0,4)=='http'){
$mobileredirect = $palm; } break;
case (preg_match('/(windows ce; ppc;|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent));
$mobile_browser = $windows; if(substr($windows,0,4)=='http'){
$mobileredirect = $windows; } break;
case (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|pda|psp|treo)/i',$user_agent));
$mobile_browser = true; break;
case ((strpos($accept,'text/vnd.wap.wml')>0)||(strpos($accept,'application/vnd.wap.xhtml+xml')>0));
$mobile_browser = true; break;
case (isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE']));
$mobile_browser = true; break;
case (in_array(strtolower(substr($user_agent,0,4)),array('1207'=>'1207','3gso'=>
'3gso','4thp'=>'4thp','501i'=>'501i','502i'=>'502i','503i'=>'503i','504i'=>
'504i','505i'=>'505i','506i'=>'506i','6310'=>'6310','6590'=>'6590','770s'=>
'770s','802s'=>'802s','a wa'=>'a wa','acer'=>'acer','acs-'=>'acs-','airn'=>
'airn','alav'=>'alav','asus'=>'asus','attw'=>'attw','au-m'=>'au-m','aur '=>
'aur ','aus '=>'aus ','abac'=>'abac','acoo'=>'acoo','aiko'=>'aiko','alco'=>
'alco','alca'=>'alca','amoi'=>'amoi','anex'=>'anex','anny'=>'anny','anyw'=>
'anyw','aptu'=>'aptu','arch'=>'arch','argo'=>'argo','bell'=>'bell','bird'=>
'bird','bw-n'=>'bw-n','bw-u'=>'bw-u','beck'=>'beck','benq'=>'benq','bilb'=>
'bilb','blac'=>'blac','c55/'=>'c55/','cdm-'=>'cdm-','chtm'=>'chtm','capi'=>
'capi','comp'=>'comp','cond'=>'cond','craw'=>'craw','dall'=>'dall','dbte'=>
'dbte','dc-s'=>'dc-s','dica'=>'dica','ds-d'=>'ds-d','ds12'=>'ds12','dait'=>
'dait','devi'=>'devi','dmob'=>'dmob','doco'=>'doco','dopo'=>'dopo','el49'=>
'el49','erk0'=>'erk0','esl8'=>'esl8','ez40'=>'ez40','ez60'=>'ez60','ez70'=>
'ez70','ezos'=>'ezos','ezze'=>'ezze','elai'=>'elai','emul'=>'emul','eric'=>
'eric','ezwa'=>'ezwa','fake'=>'fake','fly-'=>'fly-','fly_'=>'fly_','g-mo'=>
'g-mo','g1 u'=>'g1 u','g560'=>'g560','gf-5'=>'gf-5','grun'=>'grun','gene'=>
'gene','go.w'=>'go.w','good'=>'good','grad'=>'grad','hcit'=>'hcit','hd-m'=>
'hd-m','hd-p'=>'hd-p','hd-t'=>'hd-t','hei-'=>'hei-','hp i'=>'hp i','hpip'=>
'hpip','hs-c'=>'hs-c','htc '=>'htc ','htc-'=>'htc-','htca'=>'htca','htcg'=>
'htcg','htcp'=>'htcp','htcs'=>'htcs','htct'=>'htct','htc_'=>'htc_','haie'=>
'haie','hita'=>'hita','huaw'=>'huaw','hutc'=>'hutc','i-20'=>'i-20','i-go'=>
'i-go','i-ma'=>'i-ma','i230'=>'i230','iac'=>'iac','iac-'=>'iac-','iac/'=>
'iac/','ig01'=>'ig01','im1k'=>'im1k','inno'=>'inno','iris'=>'iris','jata'=>
'jata','java'=>'java','kddi'=>'kddi','kgt'=>'kgt','kgt/'=>'kgt/','kpt '=>
'kpt ','kwc-'=>'kwc-','klon'=>'klon','lexi'=>'lexi','lg g'=>'lg g','lg-a'=>
'lg-a','lg-b'=>'lg-b','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-f'=>'lg-f','lg-g'=>
'lg-g','lg-k'=>'lg-k','lg-l'=>'lg-l','lg-m'=>'lg-m','lg-o'=>'lg-o','lg-p'=>
'lg-p','lg-s'=>'lg-s','lg-t'=>'lg-t','lg-u'=>'lg-u','lg-w'=>'lg-w','lg/k'=>
'lg/k','lg/l'=>'lg/l','lg/u'=>'lg/u','lg50'=>'lg50','lg54'=>'lg54','lge-'=>
'lge-','lge/'=>'lge/','lynx'=>'lynx','leno'=>'leno','m1-w'=>'m1-w','m3ga'=>
'm3ga','m50/'=>'m50/','maui'=>'maui','mc01'=>'mc01','mc21'=>'mc21','mcca'=>
'mcca','medi'=>'medi','meri'=>'meri','mio8'=>'mio8','mioa'=>'mioa','mo01'=>
'mo01','mo02'=>'mo02','mode'=>'mode','modo'=>'modo','mot '=>'mot ','mot-'=>
'mot-','mt50'=>'mt50','mtp1'=>'mtp1','mtv '=>'mtv ','mate'=>'mate','maxo'=>
'maxo','merc'=>'merc','mits'=>'mits','mobi'=>'mobi','motv'=>'motv','mozz'=>
'mozz','n100'=>'n100','n101'=>'n101','n102'=>'n102','n202'=>'n202','n203'=>
'n203','n300'=>'n300','n302'=>'n302','n500'=>'n500','n502'=>'n502','n505'=>
'n505','n700'=>'n700','n701'=>'n701','n710'=>'n710','nec-'=>'nec-','nem-'=>
'nem-','newg'=>'newg','neon'=>'neon','netf'=>'netf','noki'=>'noki','nzph'=>
'nzph','o2 x'=>'o2 x','o2-x'=>'o2-x','opwv'=>'opwv','owg1'=>'owg1','opti'=>
'opti','oran'=>'oran','p800'=>'p800','pand'=>'pand','pg-1'=>'pg-1','pg-2'=>
'pg-2','pg-3'=>'pg-3','pg-6'=>'pg-6','pg-8'=>'pg-8','pg-c'=>'pg-c','pg13'=>
'pg13','phil'=>'phil','pn-2'=>'pn-2','pt-g'=>'pt-g','palm'=>'palm','pana'=>
'pana','pire'=>'pire','pock'=>'pock','pose'=>'pose','psio'=>'psio','qa-a'=>
'qa-a','qc-2'=>'qc-2','qc-3'=>'qc-3','qc-5'=>'qc-5','qc-7'=>'qc-7','qc07'=>
'qc07','qc12'=>'qc12','qc21'=>'qc21','qc32'=>'qc32','qc60'=>'qc60','qci-'=>
'qci-','qwap'=>'qwap','qtek'=>'qtek','r380'=>'r380','r600'=>'r600','raks'=>
'raks','rim9'=>'rim9','rove'=>'rove','s55/'=>'s55/','sage'=>'sage','sams'=>
'sams','sc01'=>'sc01','sch-'=>'sch-','scp-'=>'scp-','sdk/'=>'sdk/','se47'=>
'se47','sec-'=>'sec-','sec0'=>'sec0','sec1'=>'sec1','semc'=>'semc','sgh-'=>
'sgh-','shar'=>'shar','sie-'=>'sie-','sk-0'=>'sk-0','sl45'=>'sl45','slid'=>
'slid','smb3'=>'smb3','smt5'=>'smt5','sp01'=>'sp01','sph-'=>'sph-','spv '=>
'spv ','spv-'=>'spv-','sy01'=>'sy01','samm'=>'samm','sany'=>'sany','sava'=>
'sava','scoo'=>'scoo','send'=>'send','siem'=>'siem','smar'=>'smar','smit'=>
'smit','soft'=>'soft','sony'=>'sony','t-mo'=>'t-mo','t218'=>'t218','t250'=>
't250','t600'=>'t600','t610'=>'t610','t618'=>'t618','tcl-'=>'tcl-','tdg-'=>
'tdg-','telm'=>'telm','tim-'=>'tim-','ts70'=>'ts70','tsm-'=>'tsm-','tsm3'=>
'tsm3','tsm5'=>'tsm5','tx-9'=>'tx-9','tagt'=>'tagt','talk'=>'talk','teli'=>
'teli','topl'=>'topl','tosh'=>'tosh','up.b'=>'up.b','upg1'=>'upg1','utst'=>
'utst','v400'=>'v400','v750'=>'v750','veri'=>'veri','vk-v'=>'vk-v','vk40'=>
'vk40','vk50'=>'vk50','vk52'=>'vk52','vk53'=>'vk53','vm40'=>'vm40','vx98'=>
'vx98','virg'=>'virg','vite'=>'vite','voda'=>'voda','vulc'=>'vulc','w3c '=>
'w3c ','w3c-'=>'w3c-','wapj'=>'wapj','wapp'=>'wapp','wapu'=>'wapu','wapm'=>
'wapm','wig '=>'wig ','wapi'=>'wapi','wapr'=>'wapr','wapv'=>'wapv','wapy'=>
'wapy','wapa'=>'wapa','waps'=>'waps','wapt'=>'wapt','winc'=>'winc','winw'=>
'winw','wonu'=>'wonu','x700'=>'x700','xda2'=>'xda2','xdag'=>'xdag','yas-'=>
'yas-','your'=>'your','zte-'=>'zte-','zeto'=>'zeto','acs-'=>'acs-','alav'=>
'alav','alca'=>'alca','amoi'=>'amoi','aste'=>'aste','audi'=>'audi','avan'=>
'avan','benq'=>'benq','bird'=>'bird','blac'=>'blac','blaz'=>'blaz','brew'=>
'brew','brvw'=>'brvw','bumb'=>'bumb','ccwa'=>'ccwa','cell'=>'cell','cldc'=>
'cldc','cmd-'=>'cmd-','dang'=>'dang','doco'=>'doco','eml2'=>'eml2','eric'=>
'eric','fetc'=>'fetc','hipt'=>'hipt','http'=>'http','ibro'=>'ibro','idea'=>
'idea','ikom'=>'ikom','inno'=>'inno','ipaq'=>'ipaq','jbro'=>'jbro','jemu'=>
'jemu','java'=>'java','jigs'=>'jigs','kddi'=>'kddi','keji'=>'keji','kyoc'=>
'kyoc','kyok'=>'kyok','leno'=>'leno','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-g'=>
'lg-g','lge-'=>'lge-','libw'=>'libw','m-cr'=>'m-cr','maui'=>'maui','maxo'=>
'maxo','midp'=>'midp','mits'=>'mits','mmef'=>'mmef','mobi'=>'mobi','mot-'=>
'mot-','moto'=>'moto','mwbp'=>'mwbp','mywa'=>'mywa','nec-'=>'nec-','newt'=>
'newt','nok6'=>'nok6','noki'=>'noki','o2im'=>'o2im','opwv'=>'opwv','palm'=>
'palm','pana'=>'pana','pant'=>'pant','pdxg'=>'pdxg','phil'=>'phil','play'=>
'play','pluc'=>'pluc','port'=>'port','prox'=>'prox','qtek'=>'qtek','qwap'=>
'qwap','rozo'=>'rozo','sage'=>'sage','sama'=>'sama','sams'=>'sams','sany'=>
'sany','sch-'=>'sch-','sec-'=>'sec-','send'=>'send','seri'=>'seri','sgh-'=>
'sgh-','shar'=>'shar','sie-'=>'sie-','siem'=>'siem','smal'=>'smal','smar'=>
'smar','sony'=>'sony','sph-'=>'sph-','symb'=>'symb','t-mo'=>'t-mo','teli'=>
'teli','tim-'=>'tim-','tosh'=>'tosh','treo'=>'treo','tsm-'=>'tsm-','upg1'=>
'upg1','upsi'=>'upsi','vk-v'=>'vk-v','voda'=>'voda','vx52'=>'vx52','vx53'=>
'vx53','vx60'=>'vx60','vx61'=>'vx61','vx70'=>'vx70','vx80'=>'vx80','vx81'=>
'vx81','vx83'=>'vx83','vx85'=>'vx85','wap-'=>'wap-','wapa'=>'wapa','wapi'=>
'wapi','wapp'=>'wapp','wapr'=>'wapr','webc'=>'webc','whit'=>'whit','winw'=>
'winw','wmlb'=>'wmlb','xda-'=>'xda-',)));
// check against a list of trimmed user agents to see if we find a match
$mobile_browser = true; break;
}
header('Cache-Control: no-transform');
header('Vary: User-Agent, Accept');
if($redirect = ($mobile_browser==true) ? $mobileredirect : $desktopredirect){
header('Location: '.$redirect); exit; }else{
return $mobile_browser; }
}
global $gCms;$smarty = &$gCms->GetSmarty();
$smarty->assign('mobile_detect', false);
if((mobile_device_detect(true,true,true,true,true,true,false,false))==true){
$smarty->assign('mobile_detect', true); }$smarty->assign('mobile_none', false);
if((mobile_device_detect(true,true,true,true,true,true,false,false))==false){
$smarty->assign('mobile_none', true); }return ''; I have excluded iPad here since it has bigger screen and if your Websites speed is optmizied enough there is no reason to server mobile version for an iPad.
Now when we have our UDT setup we can move to Templates and add this function.
Your Template could look like this.
{process_pagedata}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>{sitename} - {title}</title>
{metadata}
{cms_stylesheet}
</head><body>
<!-- start header -->
<div id="header">
<h1>{sitename}</h1>
</div>
<!-- end header -->
<!-- start menu -->
<div id="menu">{menu}</div>
<!-- end menu -->
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}</div>
<!-- end content -->
</body></html> First we have to call our {mobile} tag and capture the $mobile_detect function, so we are able to use it in multiple sections of our template.
We also have to create new stylesheet that is not linked to any of the templates, name for example "mobile".
{process_pagedata}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
{mobile}{capture assign='mobiletemp'}{$mobile_detect}{/capture}
<head>
<title>{sitename} - {title}</title>
{metadata}
{if $mobiletemp}
{cms_stylesheet name='mobile'}
<link rel="apple-touch-icon" href="path to your mobile icon for iphone" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;" />
{else}
{cms_stylesheet}{/if}
//Our meta data and so on
</head><body>
<!-- start header -->
<div id="header">
<h1>{sitename}</h1>
</div>
<!-- end header -->
<!-- start menu -->
<div id="menu">{menu}</div>
<!-- end menu -->
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}</div>
<!-- end content -->
</body></html> Now if our Website is veiwed on a mobile device only Stylesheet named "mobile" would be loaded and we can style this as needed.
We can go a step further and create a markup only for mobile devices, to speed up our site and load only important content that we want to show to our mobile visitors.
{process_pagedata}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
{mobile}{capture assign='mobiletemp'}{$mobile_detect}{/capture}
<head>
<title>{sitename} - {title}</title>
{metadata}
{if $mobiletemp}
{cms_stylesheet name='mobile'}
<link rel="apple-touch-icon" href="path to your mobile icon for iphone" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;" />
{else}
{cms_stylesheet}
//our meta data
{/if}
</head>{if $mobiletemp}
<body>
<div id="header">
{sitename}
</div>
<div id="menu">
{menu template='mobiletemplate'}
</div>
<div id="content">
{content}
</div>
{else}
<!-- start header -->
<body>
<div id="header">
<h1>{sitename}</h1>
</div>
<!-- end header -->
<!-- start menu -->
<div id="menu">{menu}</div>
<!-- end menu -->
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}</div>
<!-- end content -->
{/if}
</body></html> Optional we could even replace the {content} tag with a content block, where only content for mobile devices would provided and separated.
{content block='Mobile'} This way we have a second WYSIWYG area in our backend that is used only for mobile devices.
I hope this post was helpful for you and if you want to see a working demo visit http://www.ich-mach-das.at with your mobile device.
Hi Goran, thanks for this howto. Really useful!
AW: just got a thing working for only ipad detection. So now the site can check if it is a mobile, desktop or iPad.
ended up with this UDT:
function ipad_device_detect($ipad=true){ $ipad_browser = true; $user_agent = $_SERVER['HTTP_USER_AGENT']; $accept = $_SERVER['HTTP_ACCEPT']; switch(true){
case (preg_match('/(ipad)/i',$user_agent)); return $ipad_browser; }
}
global $gCms;$smarty =
Hey Goran, thanks for this. Have you figured out a way to swap out to a mobile template? I would like a very different look then my current site and I can not just code it down.
Thanks again.
many thanks, most useful !
Working great without any problems! I also tested it on my phone and Device Central for many other phones. Most of them work good. My question is how you add phones not listed on your code and new phones?
Hi Goran
I like the concept, but just tested on my Android 2.3.3 and it does not detect and shows the full site.
We have tried this script below and it works for Android and Iphones etc. to change the css
<!-- Mobile device detection by Bushido Designs: BushidoDesigns.net --> <style type="text/css" media="screen and (min-width: 481px)"> <!-- @import url("/css/layout.css"); @import url("/css/styles.css"); @import url("/css/menu.css"); --> </style> <!--[if IE]><link rel="stylesheet" type="text/css" href="screen.css" media="screen" /><![endif]--> <link href="/css/mobile.css" rel="stylesheet" type="text/css" media="handheld, only screen and (max-device-width: 480px)" /> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" />
Thanks!
Error says, MenuManager can not find a Template called mobiletempalte, mean your {menu} tag is using template='mobiletemplate' which does not exist.
Rule one: don't simply copy paste ;-)
Hi Goran,
Im trying to implement this on tankcleanservices.com on accesing on phone I get the following "string (81) "smarty error: unable to read resource:"module_db_tpl:MenuManager;mobiletemplate""
How can I fix this?
Hi Christina,
i didn't test it in 1.10 but quickly looking at UDT all you would need to do is change global $gCms; to $gCms = cmsms(); and it should work just fine
Will this work with 1.10 and up CMSMS?
Thanks!
Thanks for the great post. This worked perfectly for us!
Hi Joff
thank you and welcome. To be honest i wouldn't have an answer at this moment but probably it would work by passing a parameter to url after clicking on "show full" link.
As i didn't have a need for a solution like this so far and there are now multiple ways to do exactly the same as i described in this post by using Browsertools plugin or SenchaTouch and CMSTouch modules it might even be easier to achieve this with one of those tools.
If i do find time to play and a way for this i will update this post or write new one ;-)
Hi Goran,
Great article! I'm looking to add a mobile version to a CMSMS site in the near future, but I would also like to provide a "view full version" link on the mobile template. I'm not yet at the stage where I can try this out (so hopefully you can give me some pointers to be going on with) but I'm assuming I can add a parameter to the full version link to override the mobile device check? I'm also not that well versed with Smarty's syntax so please bear with me...
So in the mobile version markup, I'd have a link as http://mysite.com/index.php?nomobile=1
Then within the template I'd change the smarty if to: {if $mobiletemp
Hi Goran, well done for the site and thank you for helping us making our website for mobile use. I am willing to do it but when I am creating UDT I am getting error when click submit. Parse error: syntax error, unexpected $end in /xxx/xxx/public_html/admin/adduserplugin.php(100) : eval()'d code on line 1
any idea? maybe I am doing something wrong.
Thank you again for your help
thanks Goran, it's the first time that i use CMSMS (normally i use EE),i've found this CMS very easy to customize, but there are so many errors, every day a new error appear (i use only certified modules, not stale). It would be a great CMS without that problems, i hope the dev team fix it. BTW, i've seen your website, very besautiful and with a very clean markup (i own a web agency too). Nice work, i'll look at you blog more often!! thanks again!
Hi Nick,
since 1.9.xx version there was a change, so {content} can't be used more than once. You can solve this be replacing {process_pagedata} on start of your template with {content assign='mycontent'}.
Now you are able to use {$mycontent} more than once in your template and this replaces {content} tag. Content blocks are still being called like {content block='something' label='some short description'} and if you need them more then once to, you can simply use assign or capture smarty feature.
hi , when i make the mobile version, in the backend there's an error due to the double {content} block calling. I don't know how to fix them properly, i can make another content block, what i've to put on it? can you help me? thanks!
Hi Andrew, i didn't test it so far, but will have a look at it and post a solution as soon as i have an idea. At the moment i am running behind deadlines so ülease forgive me if it takes some time.
Hi again Goran
Ive got this working now but just a quick question, if I did want to do a specific iPad option, how would we do this. If we set the false to true in the user defined tag it will show the mobile version so I guess what I am asking is how can we have three versions of a site, desktop, mobile and iPad?
Regards AW
An excellent tutorial, very useful indeed!
I have been pondering the best way to provide a mobile version of my CMSMS site and you have provided the perfect solution. Now all I have to do is get to work...
Thank you very much :-)
T
Благодарность за материалы! :) Respect www.i-do-this.com
Good :-) If you do not want to show any children in menu you could simply use {menu template="yourtemplate" number_of_levels="1"}. Else if you want children shown on touch, you should change this in your stylesheet.
Regarding your form problem, no idea never had anything similar, it could be some weird server settings, some typo in your config file... Did you try creating new form and adding it to start page, or setting the form to redirect to a specific page after submission, or is there any error in the submission message form?
Regarding blog post, i would be happy of any help i can get, if you have anything interesting simply use the contact form on this site and i will arrange blog access for you.
Hi Goran
Excellent got that working first time although it is bringing in all the pages from the nav inc sub pages, any ideas on how I can only bring in the parent pages / links.
This is a great blog Goran, ive been using CMSMS for about a year now and amazed at how easy it is to use compared to other CMS's. I have posted questions on the CMSMS forum in the past and its taken ages for people to respond. I have a query on there right now which is stopping a site going live, a very simple problem, do you know if you have come across this? http://forum.cmsmadesimple.org/index.php/topic,49608.msg237099.html#msg237099
I would be happy adding some articles if you need a hand
Hi,
with {menu template='mobiletemplate'} you call a different template that you create in MenuManager. So if you simply copy your existing Template name it whatever you want to use for template= and there you go, you have your dynamic menu. The rest is done with CSS.
This is great, ive been looking for an article on how to do this for a while now and this has solved my problem, Many thanks!!!!!!
My only hurdle now is how to use a different menu template so that any time a new page is added it auto updates the nav just like CMSMS does.