SlideShare a Scribd company logo
1 of 88
Taking Your Website
Mobile with TYPO3
Jeremy Greenawalt
Hi.
I live in Dallas with my
beautiful wife,
Rebekah.
I live in Dallas with my
                 beautiful wife,
                 Rebekah.




We have a dog.
45678)4-#,29'-1
-1

#& )*0%&&
  %*($-B&
        &     :;9')("$)>&22)2-9.%)?."#)';&1)<""=
0D& 4+%#&
        &     !& O>+/(&(-'$)+5&$'(&.*1#",>/&39:;<&%#)./$%#0&
E5+#'%/-&
        &        >0+'?&3-.*45"+.%B&3#)./$6*+/$B&$'(&*%2#"&5*"#&
(& )*"#&&        %#52'*/*?+#0&

              !& !>0%*)+G#&(-'$)+5&)#'>0B&/*?*0B&$'(&
  )+G+'?&&       2#$(#"0&>0+'?&%"+5=0&-*>&1*'K%&E'(&+'&%2#&&
 $+/$A/#D&
                 *,E5+$/&(*5>)#'%$%+*'&
)./#& %*&&
*45"+.%B&&    !& O>+/(&5*'%#'%&#/#)#'%0&$'(&%#)./$%#&
                 #C%#'0+*'0&%*&*@#"2$>/&$'(&+)."*@#&&
                 39:;<K0&(#,$>/%&A$5=H#'(&#(+%+'?&#C.#"+#'5#
C$)./#&
>"& *1'&      !& N((&(-'$)+5&A$''#"0&$'(&/*?*0&%*&$'&#C+0%+'?&
 #D&9*>&         %#)./$%#&(#0+?'
 ?$%+*'B&
0&+'&%2#&     !& !"#$%#&5>0%*)&)#'>0&>0+'?&)>/%+./#&
)./$%#0&         $.."*$52#0&$'(&%#52'+F>#0                                                      ! " # # $ % & ' ( ) * + , - . & - % / - ) 0 & 1 ' & 2 2 - 3
 *>&1+//&
*'$/+G#&      !& !"#$%#&)>/%+./#&%#)./$%#0&1+%2*>%&
                 "#.#$%+'?&-*>"0#/,

              !& !>0%*)+G#&%2#&A$5=#'(&#(+%+'?&#C.#"+#'5#&
                                                                    7#"#)-&8"##'$1$/%




                 ,*"&0.#5+E5&%#)./$%#0



                                                                                        45678)4-#,29'-1
 $'%0&%*&
)>/%+./#&     !& N((&)>/%+./#&5*/>)'0&$'(&0.#5+$/&,*")$%%+'?&
#B&%2#'&         1+%2&Q#C+A/#&5*'%#'%&#/#)#'%0
(&>0#"0&      !& !"#$%#&.*1#",>/&5*'%#'%&#/#)#'%0&1+%2&
 #(+%+'?&        @$"+$A/#0&$'(&+'%#//+?#'%&,*")$%%+'?


             @)ABCBB)L4                                                                 !"#$%#&$'(&)*(+,-&%#)./$%#0&1+%2&3-.*45"+.%&$'(&3#)./$6*+/$
             D)8ECBB)LM


             :"+5#0&(*&'*%&+'5/>(#&
             /*5$/&0$/#0&%$C&*"&6N3&
             12#"#&$../+5$A/#




?B&O+")+'?2$)&H&P>)A$+
 9/='6$<C/"#                                                                            F-.-#()G.--%9>92'
Contact Me:
email: jeremy@vin56.com
twitter: @jgreenawalt
What We’re
Talking About:
•How much do you optimize for mobile
 devices?

•Mobile best practices

•Four basic paths to mobile devices using CSS,
 TypoScript, and TemplaVoila.
How much do you
optimize for mobile
devices?
Mobile design happens on a spectrum.
The Mobile
Development
Spectrum
Desktop       Native
Website       App
The Mobile
Development
Spectrum
Desktop                Native
Website                App
          Compatible
          Design
The Mobile
Development
Spectrum
Desktop                           Native
Website                           App
          Compatible   Mobile
          Design       Template
The Mobile
Development
Spectrum
Desktop                                     Native
Website                                     App
          Compatible   Mobile     Mobile
          Design       Template   Content
The Mobile
Development
Spectrum
Desktop                                               Native
Website                                               App
          Compatible   Mobile     Mobile    Mobile
          Design       Template   Content   Version
Mobile Best Practices
First, we learn from everybody else.
Mobile is about
context.
Mobile is not a screen size.
Mobile Users:
•Have a smaller screen

•Have limited bandwidth

•Need different information

•Need everything faster

•Don’t have keyboards or mice
Mobile Changes:
•Navigation

•Content

•Layout
Ideal target-size =
44x44
Apple HIG.
http://developer.apple.com/
Simplify Navigation
•Reduce menus to the minimum # of items.

•Highlight the menu items that people need
 in a mobile context.

•Don’t rely on hover or drop-down behavior.
Navigation
•Highlights most helpful
 links for mobile users

•Provides large buttons for
 highlighted links

•Provides link back to
 desktop version



            http://lifechurch.tv
Content
•Replace large or unnecessary images

•Make sure text is easily readable

•Optimize forms
Content
•Removed large images

•Readable text




         http://alistapart.com
Mobile Form
•Large target areas

•Minimal fields

•HTML5 and autofill
 helpers




       http://trinitychurch.org
Layout
•Reduce multi-column layouts

•Use simple design to highlight
 content

•Mimic mobile design patterns from
 native apps (sometimes)
Layout
•Simple design highlights
 content

•Single-column text with
 single large image




              http://wfaa.com
Layout
•Single-column layout

•Table mimics iOS and
 Android apps




          http://wfaa.com
Tools
•CSS

•TYPO3

 •TypoScript

 •TemplaVoila

•Mobile frameworks (e.g. Sencha Touch)
Advantages of TYPO3
•Built-in checks for browser, device, etc.

•Multiple templates for the same content.
Paths to Mobile
Devices
•Responsive web design

•Pure TypoScript

•TemplaVoila Subtemplates

•External mobile site (redirect)
Responsive Web
Design
The new awesomeness
Layout Techniques
•Fluid grids

•Responsive layouts

•Flexible images
Fluid Grids




   http://www.designinfluences.com/fluid960gs/
Responsive Layouts




             http://hicksdesign.co.uk/
Flexible Images
img,object { max-width: 100%; }



Internet Explorer:
img { width: 100%; }



http://unstoppablerobotninja.com/entry/fluid-images/
Media Queries
  •CSS

  •JavaScript
Single CSS Stylesheet
 /* Smartphones (portrait and landscape) ----------- */
 @media only screen
 and (min-device-width : 320px)
 and (max-device-width : 480px) {
 
   /* Styles */
 }

 /* Smartphones (landscape) ----------- */
 @media only screen
 and (min-width : 321px) {
 
   /* Styles */
 }

 /* Smartphones (portrait) ----------- */
 @media only screen
 and (max-width : 320px) {
 
   /* Styles */
 }
 "Hardboiled CSS3 Media Queries" by Andy Clarke
 http://stuffandnonsense.co.uk/blog/about/
 hardboiled_css3_media_queries
Separate CSS Stylesheets

<link media="only screen and (max-device-
width:480px)" href="iphone.css" type="text/css"
rel="stylesheet" />
JavaScript
http://code.google.com/p/css3-mediaqueries-js/
More Information




           http://abookapart.com
Pros
•Can be a great starting place

•Adaptable for screens of all sizes
Cons
•Introduces a whole new design process

•Not a complete “mobile solution”

•Still downloads large content

•No way to see full desktop site
TypoScript
The purest TYPO3 method
Original Site
Original vs. Final
TypoScript
Conditions
Example Condition
[browser = msie]

page.headerData.30.value = <link rel="stylesheet"
type="text/css" href="fileadmin/templates/
common_ie.css">

[else]

page.headerData.30.value = <link rel="stylesheet"
type="text/css" href="fileadmin/templates/common.css">

[end]
Useragent String
Condition
[useragent = agent]
What is a useragent
string?
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0
like Mac OS X; en-us) AppleWebKit/532.9
(KHTML, like Gecko) Version/4.0.5
Mobile/8A293 Safari/6531.22.7
What is a useragent
string?
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0
like Mac OS X; en-us) AppleWebKit/532.9
(KHTML, like Gecko) Version/4.0.5
Mobile/8A293 Safari/6531.22.7
iPhone useragent
condition
[useragent = *iPhone*]
Our mobile useragent
condition
[useragent = *iPhone*]||[useragent = *iPod*]||
[useragent = *Android*]||[useragent = *Opera
Mini*]||[useragent = *BlackBerry*]
 ## Mobile information
[end]
User Functions

[userFunc = function(parameter)]
Adding a user function
to localconf.php
 function mobile_check($cmd){
    switch($cmd){
        case "appleDevices":
 
    
    
   if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||
 strstr($_SERVER['HTTP_USER_AGENT'],'iPod') ||
 strstr($_SERVER['HTTP_USER_ AGENT'],'iPad')) {
 
    
    
   
    return true;
 
    
    
   }
 
    
    
   break;
 
    
    case "androidDevices":
 
    
    
   // ....
 
    
    
   break;
 
    }
 }
User Function
Condition
[userFunc = mobile_check(appleDevices)]
Our user function
condition
[userFunc = mobile_check(appleDevices)]||
[userFunc = mobile_check(androidDevices)]
 ## Mobile information
[end]
Loading Mobile CSS
with TypoScript
Why did we just learn conditions?
Mobile Stylesheet
/* Resize all fonts for mobile devices */
p, ul, div, h2, h3, h4, h5, h6 {

   font-size: 24px;

   line-height: 30px;
}

/* Resize menu items for mobile devices */
li.menu-item a {

   font-size: 30px;

   line-height: 36px;

   margin-right: 10px;
}
         
/* Reset all columns to 100% width and single-column */
#column_1, #column_2 {

   float: none;

   width: 100%;
}
Load CSS with TypoScript

[useragent = *iPhone*]||[useragent = *iPod*]||[useragent =
*Android*]||[useragent = *Opera Mini*]||[useragent =
*BlackBerry*]
page.headerData.30 = TEXT
page.headerData.30.value = <link rel="stylesheet"
type="text/css" href="fileadmin/templates/css/mobile.css" />
[end]
Updating TypoScript
Objects
Harnessing the power of TYPO3.
Common Objects to
Update
 •Images

 •Menus

 •Generated HTML
Updating an image
[useragent = *iPhone*]||[useragent = *iPod*]||[useragent =
*Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]
       
page.headerData.30 = TEXT
page.headerData.30.value = <link rel="stylesheet" type="text/css"
href="fileadmin/templates/css/mobile.css" />
       
lib.logo.file = fileadmin/templates/logo_mobile.png

lib.mainMenu >
lib.mainMenu = HMENU
lib.mainMenu {

   entryLevel = 0

   wrap = <ul id="menu-area">|</ul>

   1 = TMENU

   1.NO.allWrap = <li class="menu-item">|</li>
}

[end]
Updating an image
[useragent = *iPhone*]||[useragent = *iPod*]||[useragent =
*Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]
       
page.headerData.30 = TEXT
page.headerData.30.value = <link rel="stylesheet" type="text/css"
href="fileadmin/templates/css/mobile.css" />
       
lib.logo.file = fileadmin/templates/logo_mobile.png

lib.mainMenu >
lib.mainMenu = HMENU
lib.mainMenu {

   entryLevel = 0

   wrap = <ul id="menu-area">|</ul>

   1 = TMENU

   1.NO.allWrap = <li class="menu-item">|</li>
}

[end]
Bring it all together
[useragent = *iPhone*]||[useragent = *iPod*]||[useragent =
*Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]
       
page.headerData.30 = TEXT
page.headerData.30.value = <link rel="stylesheet" type="text/css"
href="fileadmin/templates/css/mobile.css" />
       
lib.logo.file = fileadmin/templates/logo_mobile.png

lib.mainMenu >
lib.mainMenu = HMENU
lib.mainMenu {

   entryLevel = 0

   wrap = <ul id="menu-area">|</ul>

   1 = TMENU

   1.NO.allWrap = <li class="menu-item">|</li>
}

[end]
Bring it all together
Adding a Link to the
Desktop Version
Some people still want the whole experience.
Global Variable
http://example.com/index.php?id=73&full=1
Set the link variable
config.linkVars = full

[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent =
*iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] &&
[globalVar = GP:full<1] || [useragent = *Opera Mini*] &&
[globalVar = GP:full<1] || [useragent = *BlackBerry*] &&
[globalVar = GP:full<1]

 ## Mobile information

 lib.footerLink {
   value = Full Version
   typolink {
     parameter.data = page:uid
     addQueryString = 1
     addQueryString.exclude = id
     additionalParams = &full=1
   }
 }

[end]
Check global variables
config.linkVars = full

[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent =
*iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] &&
[globalVar = GP:full<1] || [useragent = *Opera Mini*] &&
[globalVar = GP:full<1] || [useragent = *BlackBerry*] &&
[globalVar = GP:full<1]

 ## Mobile information

 lib.footerLink {
   value = Full Version
   typolink {
     parameter.data = page:uid
     addQueryString = 1
     addQueryString.exclude = id
     additionalParams = &full=1
   }
 }

[end]
Add link to full site
config.linkVars = full

[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent =
*iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] &&
[globalVar = GP:full<1] || [useragent = *Opera Mini*] &&
[globalVar = GP:full<1] || [useragent = *BlackBerry*] &&
[globalVar = GP:full<1]

 ## Mobile information

 lib.footerLink {
   value = Full Version
   typolink {
     parameter.data = page:uid
     addQueryString = 1
     addQueryString.exclude = id
     additionalParams = &full=1
   }
 }

[end]
Bring it all together
config.linkVars = full

[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent =
*iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] &&
[globalVar = GP:full<1] || [useragent = *Opera Mini*] &&
[globalVar = GP:full<1] || [useragent = *BlackBerry*] &&
[globalVar = GP:full<1]

 ## Mobile information

 lib.footerLink {
   value = Full Version
   typolink {
     parameter.data = page:uid
     addQueryString = 1
     addQueryString.exclude = id
     additionalParams = &full=1
   }
 }

[end]
Bring it all together
TemplaVoila
Subtemplates
Creating a mobile HTML template.
Mobile HTML
<!DOCTYPE HTML>
<html>

 <head>

 
 <meta charset="utf-8" />

 </head>

 <body>

 
 <div id="logo"></div>

 
 <ul id="menu-area">

 
 
 <li class="menu-item"><a href="">Menu Item</a></li>

 
 </ul>

 
 <div id="content">This is our content</div>

 
 <div id="print_link"></div>

 </body>
</html>
Page TSConfig
Page TSConfig
TCEFORM.tx_templavoila_tmplobj.rendertype.
addItems.mobile = Mobile version
Create new
template object
Setup subtemplate
TypoScript Setup
[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent =
*iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] &&
[globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar =
GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1]

page.10.childTemplate = mobile

## The rest of our mobile code

[end]
Original vs. Final
Mobile Site Redirect
“...if the user goals for your mobile site are
more limited in scope than its desktop
equivalent, then serving different content
to each might be the best approach.”



                                     Ethan Marcotte
    http://m.alistapart.com/articles/responsive-web-design/
TypoScript Redirect
[useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent
= *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*]
&& [globalVar = GP:full<1]

config.additionalHeaders = Location: m.example.com

[end]

[useragent = *Opera Mini*] && [globalVar = GP:full<1] ||
[useragent = *BlackBerry*] && [globalVar = GP:full<1]

## Generic mobile code goes here

[end]
TrinityChurch.org
Contact Me:
email: jeremy@vin56.com
twitter: @jgreenawalt
www: pocketrevolutionary.com
slides: slideshare.net/jeremygreenawalt

More Related Content

Recently uploaded

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Featured

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 

Featured (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

Taking Your Website Mobile with TYPO3

  • 1. Taking Your Website Mobile with TYPO3 Jeremy Greenawalt
  • 2. Hi.
  • 3.
  • 4. I live in Dallas with my beautiful wife, Rebekah.
  • 5. I live in Dallas with my beautiful wife, Rebekah. We have a dog.
  • 6.
  • 7. 45678)4-#,29'-1 -1 #& )*0%&& %*($-B& & :;9')("$)>&22)2-9.%)?."#)';&1)<""= 0D& 4+%#& & !& O>+/(&(-'$)+5&$'(&.*1#",>/&39:;<&%#)./$%#0& E5+#'%/-& & >0+'?&3-.*45"+.%B&3#)./$6*+/$B&$'(&*%2#"&5*"#& (& )*"#&& %#52'*/*?+#0& !& !>0%*)+G#&(-'$)+5&)#'>0B&/*?*0B&$'(& )+G+'?&& 2#$(#"0&>0+'?&%"+5=0&-*>&1*'K%&E'(&+'&%2#&& $+/$A/#D& *,E5+$/&(*5>)#'%$%+*'& )./#& %*&& *45"+.%B&& !& O>+/(&5*'%#'%&#/#)#'%0&$'(&%#)./$%#& #C%#'0+*'0&%*&*@#"2$>/&$'(&+)."*@#&& 39:;<K0&(#,$>/%&A$5=H#'(&#(+%+'?&#C.#"+#'5# C$)./#& >"& *1'& !& N((&(-'$)+5&A$''#"0&$'(&/*?*0&%*&$'&#C+0%+'?& #D&9*>& %#)./$%#&(#0+?' ?$%+*'B& 0&+'&%2#& !& !"#$%#&5>0%*)&)#'>0&>0+'?&)>/%+./#& )./$%#0& $.."*$52#0&$'(&%#52'+F>#0 ! " # # $ % & ' ( ) * + , - . & - % / - ) 0 & 1 ' & 2 2 - 3 *>&1+//& *'$/+G#& !& !"#$%#&)>/%+./#&%#)./$%#0&1+%2*>%& "#.#$%+'?&-*>"0#/, !& !>0%*)+G#&%2#&A$5=#'(&#(+%+'?&#C.#"+#'5#& 7#"#)-&8"##'$1$/% ,*"&0.#5+E5&%#)./$%#0 45678)4-#,29'-1 $'%0&%*& )>/%+./#& !& N((&)>/%+./#&5*/>)'0&$'(&0.#5+$/&,*")$%%+'?& #B&%2#'& 1+%2&Q#C+A/#&5*'%#'%&#/#)#'%0 (&>0#"0& !& !"#$%#&.*1#",>/&5*'%#'%&#/#)#'%0&1+%2& #(+%+'?& @$"+$A/#0&$'(&+'%#//+?#'%&,*")$%%+'? @)ABCBB)L4 !"#$%#&$'(&)*(+,-&%#)./$%#0&1+%2&3-.*45"+.%&$'(&3#)./$6*+/$ D)8ECBB)LM :"+5#0&(*&'*%&+'5/>(#& /*5$/&0$/#0&%$C&*"&6N3& 12#"#&$../+5$A/# ?B&O+")+'?2$)&H&P>)A$+ 9/='6$<C/"# F-.-#()G.--%9>92'
  • 8.
  • 9.
  • 11. What We’re Talking About: •How much do you optimize for mobile devices? •Mobile best practices •Four basic paths to mobile devices using CSS, TypoScript, and TemplaVoila.
  • 12. How much do you optimize for mobile devices? Mobile design happens on a spectrum.
  • 14. The Mobile Development Spectrum Desktop Native Website App Compatible Design
  • 15. The Mobile Development Spectrum Desktop Native Website App Compatible Mobile Design Template
  • 16. The Mobile Development Spectrum Desktop Native Website App Compatible Mobile Mobile Design Template Content
  • 17. The Mobile Development Spectrum Desktop Native Website App Compatible Mobile Mobile Mobile Design Template Content Version
  • 18. Mobile Best Practices First, we learn from everybody else.
  • 19. Mobile is about context. Mobile is not a screen size.
  • 20. Mobile Users: •Have a smaller screen •Have limited bandwidth •Need different information •Need everything faster •Don’t have keyboards or mice
  • 22. Ideal target-size = 44x44 Apple HIG. http://developer.apple.com/
  • 23. Simplify Navigation •Reduce menus to the minimum # of items. •Highlight the menu items that people need in a mobile context. •Don’t rely on hover or drop-down behavior.
  • 24. Navigation •Highlights most helpful links for mobile users •Provides large buttons for highlighted links •Provides link back to desktop version http://lifechurch.tv
  • 25. Content •Replace large or unnecessary images •Make sure text is easily readable •Optimize forms
  • 26. Content •Removed large images •Readable text http://alistapart.com
  • 27. Mobile Form •Large target areas •Minimal fields •HTML5 and autofill helpers http://trinitychurch.org
  • 28. Layout •Reduce multi-column layouts •Use simple design to highlight content •Mimic mobile design patterns from native apps (sometimes)
  • 29. Layout •Simple design highlights content •Single-column text with single large image http://wfaa.com
  • 30. Layout •Single-column layout •Table mimics iOS and Android apps http://wfaa.com
  • 32. Advantages of TYPO3 •Built-in checks for browser, device, etc. •Multiple templates for the same content.
  • 33. Paths to Mobile Devices •Responsive web design •Pure TypoScript •TemplaVoila Subtemplates •External mobile site (redirect)
  • 36. Fluid Grids http://www.designinfluences.com/fluid960gs/
  • 37. Responsive Layouts http://hicksdesign.co.uk/
  • 38. Flexible Images img,object { max-width: 100%; } Internet Explorer: img { width: 100%; } http://unstoppablerobotninja.com/entry/fluid-images/
  • 39. Media Queries •CSS •JavaScript
  • 40. Single CSS Stylesheet /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width : 320px) and (max-device-width : 480px) { /* Styles */ } /* Smartphones (landscape) ----------- */ @media only screen and (min-width : 321px) { /* Styles */ } /* Smartphones (portrait) ----------- */ @media only screen and (max-width : 320px) { /* Styles */ } "Hardboiled CSS3 Media Queries" by Andy Clarke http://stuffandnonsense.co.uk/blog/about/ hardboiled_css3_media_queries
  • 41. Separate CSS Stylesheets <link media="only screen and (max-device- width:480px)" href="iphone.css" type="text/css" rel="stylesheet" />
  • 43. More Information http://abookapart.com
  • 44. Pros •Can be a great starting place •Adaptable for screens of all sizes
  • 45. Cons •Introduces a whole new design process •Not a complete “mobile solution” •Still downloads large content •No way to see full desktop site
  • 50. Example Condition [browser = msie] page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/ common_ie.css"> [else] page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/common.css"> [end]
  • 52. What is a useragent string? Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
  • 53. What is a useragent string? Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
  • 55. Our mobile useragent condition [useragent = *iPhone*]||[useragent = *iPod*]|| [useragent = *Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*] ## Mobile information [end]
  • 56. User Functions [userFunc = function(parameter)]
  • 57. Adding a user function to localconf.php function mobile_check($cmd){ switch($cmd){ case "appleDevices": if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_ AGENT'],'iPad')) { return true; } break; case "androidDevices": // .... break; } }
  • 58. User Function Condition [userFunc = mobile_check(appleDevices)]
  • 59. Our user function condition [userFunc = mobile_check(appleDevices)]|| [userFunc = mobile_check(androidDevices)] ## Mobile information [end]
  • 60. Loading Mobile CSS with TypoScript Why did we just learn conditions?
  • 61. Mobile Stylesheet /* Resize all fonts for mobile devices */ p, ul, div, h2, h3, h4, h5, h6 { font-size: 24px; line-height: 30px; } /* Resize menu items for mobile devices */ li.menu-item a { font-size: 30px; line-height: 36px; margin-right: 10px; }           /* Reset all columns to 100% width and single-column */ #column_1, #column_2 { float: none; width: 100%; }
  • 62. Load CSS with TypoScript [useragent = *iPhone*]||[useragent = *iPod*]||[useragent = *Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*] page.headerData.30 = TEXT page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/css/mobile.css" /> [end]
  • 64. Common Objects to Update •Images •Menus •Generated HTML
  • 65. Updating an image [useragent = *iPhone*]||[useragent = *iPod*]||[useragent = *Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]         page.headerData.30 = TEXT page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/css/mobile.css" />         lib.logo.file = fileadmin/templates/logo_mobile.png lib.mainMenu > lib.mainMenu = HMENU lib.mainMenu { entryLevel = 0 wrap = <ul id="menu-area">|</ul> 1 = TMENU 1.NO.allWrap = <li class="menu-item">|</li> } [end]
  • 66. Updating an image [useragent = *iPhone*]||[useragent = *iPod*]||[useragent = *Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]         page.headerData.30 = TEXT page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/css/mobile.css" />         lib.logo.file = fileadmin/templates/logo_mobile.png lib.mainMenu > lib.mainMenu = HMENU lib.mainMenu { entryLevel = 0 wrap = <ul id="menu-area">|</ul> 1 = TMENU 1.NO.allWrap = <li class="menu-item">|</li> } [end]
  • 67. Bring it all together [useragent = *iPhone*]||[useragent = *iPod*]||[useragent = *Android*]||[useragent = *Opera Mini*]||[useragent = *BlackBerry*]         page.headerData.30 = TEXT page.headerData.30.value = <link rel="stylesheet" type="text/css" href="fileadmin/templates/css/mobile.css" />         lib.logo.file = fileadmin/templates/logo_mobile.png lib.mainMenu > lib.mainMenu = HMENU lib.mainMenu { entryLevel = 0 wrap = <ul id="menu-area">|</ul> 1 = TMENU 1.NO.allWrap = <li class="menu-item">|</li> } [end]
  • 68. Bring it all together
  • 69. Adding a Link to the Desktop Version Some people still want the whole experience.
  • 71. Set the link variable config.linkVars = full [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] ## Mobile information lib.footerLink { value = Full Version typolink { parameter.data = page:uid addQueryString = 1 addQueryString.exclude = id additionalParams = &full=1 } } [end]
  • 72. Check global variables config.linkVars = full [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] ## Mobile information lib.footerLink { value = Full Version typolink { parameter.data = page:uid addQueryString = 1 addQueryString.exclude = id additionalParams = &full=1 } } [end]
  • 73. Add link to full site config.linkVars = full [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] ## Mobile information lib.footerLink { value = Full Version typolink { parameter.data = page:uid addQueryString = 1 addQueryString.exclude = id additionalParams = &full=1 } } [end]
  • 74. Bring it all together config.linkVars = full [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] ## Mobile information lib.footerLink { value = Full Version typolink { parameter.data = page:uid addQueryString = 1 addQueryString.exclude = id additionalParams = &full=1 } } [end]
  • 75. Bring it all together
  • 77. Mobile HTML <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> </head> <body> <div id="logo"></div> <ul id="menu-area"> <li class="menu-item"><a href="">Menu Item</a></li> </ul> <div id="content">This is our content</div> <div id="print_link"></div> </body> </html>
  • 82. TypoScript Setup [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] || [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] page.10.childTemplate = mobile ## The rest of our mobile code [end]
  • 85. “...if the user goals for your mobile site are more limited in scope than its desktop equivalent, then serving different content to each might be the best approach.” Ethan Marcotte http://m.alistapart.com/articles/responsive-web-design/
  • 86. TypoScript Redirect [useragent = *iPhone*] && [globalVar = GP:full<1] || [useragent = *iPod*] && [globalVar = GP:full<1] || [useragent = *Android*] && [globalVar = GP:full<1] config.additionalHeaders = Location: m.example.com [end] [useragent = *Opera Mini*] && [globalVar = GP:full<1] || [useragent = *BlackBerry*] && [globalVar = GP:full<1] ## Generic mobile code goes here [end]
  • 88. Contact Me: email: jeremy@vin56.com twitter: @jgreenawalt www: pocketrevolutionary.com slides: slideshare.net/jeremygreenawalt

Editor's Notes

  1. \n
  2. T\n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n