Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Functional FIPS
PHP for Drupal Designers and Themers




www.hicktech.com
@emmajanedotnet
                    
About this talk
    ●
        There are a lot of theme snippets available in the Theme Guide. There 
        is not, howev...
 
    Stick around, I've got copies to give away.
                           
Drupal Theme Guide
    http://drupal.org/theme­guide




                   
Theme snippets
    http://drupal.org/node/45471




                   
Learning through analogies
                 
 
    www.travelinghoedowners.com
                  
    bootstrapping
           
Variables



   
http://www.jontwest.com/Pro­Bono.php    
Variables




         
Contents of variables
    exist inside their containers




                   
Contents of variables
         exist inside their containers




http://www.laboutiquedupetitprince.com/en/figures­56/pixi...
Regions



   
http://opswingers.free.fr/cestquoi.htm    
Regions




        
Functions



                                       
    http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
Functions

user_is_logged_in ()

user_access ('access administration pages')

in_array ('admin', array_values ($user­>role...
 
                    Theming
http://usawestwa.com/Outfit/
                                
 
                Theming
www.squaredanceomaha.org/dress
                                  
PHPtemplate

Decide on the dance
                      Choose your clothes                                        Dance th...
PHPtemplate




Collect the content from 
 Drupal using modules          Run through the                                  ...
How to create themes
    1.Download an existing theme.
    2.Look for variables and functions.
    3.Alter the placement o...
page.tpl.php template file
<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1...
page.tpl.php template file
<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1...
Variables must be printed


    <?php print                               ?>




                                 
Variables must be printed

<title><?php print $head_title ?></title>




                      
Zomg what are those variables?
    ●
        Look at /modules/system/page.tpl.php
        OR
    ●
        http://api.drup...
page.tpl.php template file
<!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"
          "http://www.w3.org/TR/xhtml1...
Conditionals
                                                if (you're the inside couple) {
                             ...
What's an “if”?
if ($logo) {
    <?php print                               ?>
}




                                 
Fancy data structures: arrays + objects
                     Grouping and sorting your data




                        
Fancy data structures: arrays


                                          Multiple “drawers” of sorted content




       ...
Devel Module: Themer Info




                 
$node object

$node­>nid
$node­>body
$node­>content['body'][#value]




                                  
“Advanced” PHP
    ●
        Never be afraid to try something.
    ●
        Always back up your files first.
    ●
      ...
template.php: what's up with that?
    ●
        Preparing variables that weren't assembled by 
        Drupal and its mod...
Using template.php




Collect the content from 
 Drupal using modules             Create new                             ...
PHP Snippet
                   from: http://drupal.org/node/21401


    <?php if ($submitted) { ?>
    <span class="submit...
Summarizing PHP for Designers
    ●
        PHP is a linear “programming” language, 
        just like a dance.
    ●
    ...
 
                    Theming
http://usawestwa.com/Outfit/
                                
Variables



   
http://www.jontwest.com/Pro­Bono.php    
Regions



   
http://opswingers.free.fr/cestquoi.htm    
Functions



                                       
    http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
Conditionals
                                                if (you're the inside couple) {
                             ...
Ready to rope 
  yourself a 
  theme?
@emmajanedotnet
www.hicktech.com <­­­ theming classes
Front End Drupal <­­­ theming ...
Upcoming SlideShare
Loading in …5
×

Functional FIPS: Learning PHP for Drupal Theming

10,523 views

Published on

Published in: Technology

Functional FIPS: Learning PHP for Drupal Theming

  1. 1. Functional FIPS PHP for Drupal Designers and Themers www.hicktech.com @emmajanedotnet    
  2. 2. About this talk ● There are a lot of theme snippets available in the Theme Guide. There  is not, however, a lot of information about PHP which is the language  that makes up these snippets. If you're tired of copying, pasting and  praying and are ready to understand some of the magic behind those  snippets, this session is for you! ● In this session you will learn how to manipulate and master: ● The very, very basics of PHP and the popular theming engine  PHPtemplate ● Variables and tpl.php template files ● Arrays and objects and other crow­bar­worthy data containers. ● The really scary looking stuff that's in the mysterious file  template.php ● Examples will be pulled from the Drupal.org Theme Guide as well as  the wildly successful book on theming, Front End Drupal (co­authored  by Emma Jane and Konstantin Kaefer).    
  3. 3.   Stick around, I've got copies to give away.  
  4. 4. Drupal Theme Guide http://drupal.org/theme­guide    
  5. 5. Theme snippets http://drupal.org/node/45471    
  6. 6. Learning through analogies    
  7. 7.   www.travelinghoedowners.com  
  8. 8.   bootstrapping  
  9. 9. Variables   http://www.jontwest.com/Pro­Bono.php  
  10. 10. Variables    
  11. 11. Contents of variables exist inside their containers    
  12. 12. Contents of variables exist inside their containers http://www.laboutiquedupetitprince.com/en/figures­56/pixi­81/pixi­figure­the­little­     prince­sheep­box­518.html
  13. 13. Regions   http://opswingers.free.fr/cestquoi.htm  
  14. 14. Regions    
  15. 15. Functions     http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
  16. 16. Functions user_is_logged_in () user_access ('access administration pages') in_array ('admin', array_values ($user­>roles))    
  17. 17.   Theming http://usawestwa.com/Outfit/  
  18. 18.   Theming www.squaredanceomaha.org/dress  
  19. 19. PHPtemplate Decide on the dance Choose your clothes Dance the dance     http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0
  20. 20. PHPtemplate Collect the content from  Drupal using modules Run through the  Print the variables  Drupal theme  in your template  functions & your  files custom theme layer     http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0
  21. 21. How to create themes 1.Download an existing theme. 2.Look for variables and functions. 3.Alter the placement of the “printed” things. 4.Save and upload the theme files. 5.Clear the theme registry (Drupal admin). 6.Enjoy your new theme.    
  22. 22. page.tpl.php template file <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1­strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print  $language­>language ?>" xml:lang="<?php print $language­>language ? >">   <head>     <title><?php print $head_title ?></title>     <?php print $head ?>     <?php print $styles ?>   </head>   <body>     <div id="container">       <div id="header">         <div id="logoWrapper">           <?php if ($logo) { ?>           <div id="logo">             <a href="<?php print $base_path ?>" title="<?php print  t('Home') ?>"><img src="<?php print $logo ?>" alt="<?php print  t('Home') ?>" /></a>           </div><?php } ?>    
  23. 23. page.tpl.php template file <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1­strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print  $language­>language ?>" xml:lang="<?php print $language­>language ? >">   <head>     <title><?php print $head_title ?></title>     <?php print $head ?>     <?php print $styles ?>   </head>   <body>     <div id="container">       <div id="header">         <div id="logoWrapper">           <?php if ($logo) { ?>           <div id="logo">             <a href="<?php print $base_path ?>" title="<?php print  t('Home') ?>"><img src="<?php print $logo ?>" alt="<?php print  t('Home') ?>" /></a>           </div><?php } ?>    
  24. 24. Variables must be printed     <?php print                               ?>    
  25. 25. Variables must be printed <title><?php print $head_title ?></title>    
  26. 26. Zomg what are those variables? ● Look at /modules/system/page.tpl.php OR ● http://api.drupal.org/api/drupal/modules­­ system­­page.tpl.php/6    
  27. 27. page.tpl.php template file <!DOCTYPE html PUBLIC "­//W3C//DTD XHTML 1.0 Strict//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1­strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print  $language­>language ?>" xml:lang="<?php print $language­>language ? >">   <head>     <title><?php print $head_title ?></title>     <?php print $head ?>     <?php print $styles ?>   </head>   <body>     <div id="container">       <div id="header">         <div id="logoWrapper">           <?php if ($logo) { ?>           <div id="logo">             <a href="<?php print $base_path ?>" title="<?php print  t('Home') ?>"><img src="<?php print $logo ?>" alt="<?php print  t('Home') ?>" /></a>           </div><?php } ?>    
  28. 28. Conditionals if (you're the inside couple) { go clockwise } } else { go counter clockwise. }     http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
  29. 29. What's an “if”? if ($logo) {     <?php print                               ?> }    
  30. 30. Fancy data structures: arrays + objects Grouping and sorting your data    
  31. 31. Fancy data structures: arrays Multiple “drawers” of sorted content     Multiple values stored in one array
  32. 32. Devel Module: Themer Info    
  33. 33. $node object $node­>nid $node­>body $node­>content['body'][#value]    
  34. 34. “Advanced” PHP ● Never be afraid to try something. ● Always back up your files first. ● Take a LOT of notes. ● Be bold! And be brave!    
  35. 35. template.php: what's up with that? ● Preparing variables that weren't assembled by  Drupal and its modules. ● Altering the contents of variables that were  prepared by Drupal and its modules. ● Special theming functions to do fun things like  'edit this block' links and random images. ● Read the Zen base theme documentation and  template.php file.    
  36. 36. Using template.php Collect the content from  Drupal using modules  Create new  Print the variables  and run it through the  information to feed  in your template  default theme functions  to your theme files provided by Drupal.     http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0
  37. 37. PHP Snippet from: http://drupal.org/node/21401 <?php if ($submitted) { ?> <span class="submitted"> <?php  if ($node­>type == 'blog') {        print 'Posted ' . format_date($node­>created, 'custom',  "F jS, Y") . ' by ' . theme('username', $node);        }        else {        print 'By ' . theme('username', $node) . ' <br /> ' .  format_date($node­>created, 'custom', "F jS, Y") ;        }       ?> </span> <?php } ?>    
  38. 38. Summarizing PHP for Designers ● PHP is a linear “programming” language,  just like a dance. ● PHP stores information in variables. ● Sometimes variables hold lots of information  in special variables called “arrays.” ● Drupal has lots of magic variables that are  loaded with content. Check out:  http://drupal.org/theme­guide    
  39. 39.   Theming http://usawestwa.com/Outfit/  
  40. 40. Variables   http://www.jontwest.com/Pro­Bono.php  
  41. 41. Regions   http://opswingers.free.fr/cestquoi.htm  
  42. 42. Functions     http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
  43. 43. Conditionals if (you're the inside couple) { go clockwise } } else { go counter clockwise. }     http://www.dehnbase.org/sd/tutorial/counter­rotate.php?p=4
  44. 44. Ready to rope  yourself a  theme? @emmajanedotnet www.hicktech.com <­­­ theming classes Front End Drupal <­­­ theming book     http://www.flickr.com/photos/fkehren/3352577815/

×