Functional FIPS: Learning PHP for Drupal Theming

Post on 08-May-2015

9.838 views 1 download

Transcript of Functional FIPS: Learning PHP for Drupal Theming

   

Functional FIPSPHP 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, 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).

   Stick around, I've got copies to give away.

   

Drupal Theme Guidehttp://drupal.org/theme­guide

   

Theme snippetshttp://drupal.org/node/45471

   

Learning through analogies

   www.travelinghoedowners.com

   bootstrappingbootstrapping

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

VariablesVariables

   

Variables

   

Contents of variablesexist inside their containers

   

Contents of variablesexist inside their containers

http://www.laboutiquedupetitprince.com/en/figures­56/pixi­81/pixi­figure­the­little­prince­sheep­box­518.html

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

RegionsRegions

   

Regions

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

FunctionsFunctions

   

Functions

user_is_logged_in ()

user_access ('access administration pages')

in_array ('admin', array_values ($user­>roles))

   ThemingTheminghttp://usawestwa.com/Outfit/

   

www.squaredanceomaha.org/dress

ThemingTheming

   

Decide on the danceChoose your clothes Dance the dance

http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0

PHPtemplatePHPtemplate

   

PHPtemplate

Collect the content from Drupal using modules Run through the 

Drupal theme functions & your 

custom theme layer

Print the variables in your template 

files

http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0

   

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.

   

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 } ?>

   

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 } ?>

   

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.drupal.org/api/drupal/modules­­

system­­page.tpl.php/6

   

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 } ?>

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

ConditionalsConditionalsif (you're the inside couple) {

go clockwise}

} else {go counter clockwise.

}

   

What's an “if”?

if ($logo) {

    <?php print                               ?>

}

   

Fancy data structures: arrays + objectsGrouping and sorting your data

   

Fancy data structures: arrays

Multiple values stored in one array

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.● Take a LOT of notes.● Be bold! And be brave!

   

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.

   

Using template.php

Collect the content from Drupal using modules and run it through the 

default theme functions provided by Drupal.

Create new Create new information to feed information to feed 

to your themeto your theme

Print the variables in your template 

files

http://www.kodakgallery.com/Slideshow.jsp?mode=fromshare&Uc=6m9np57.9mj7q0yf&Uy=ripni&Ux=0

   

PHP Snippetfrom: 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 } ?>

   

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

   ThemingTheminghttp://usawestwa.com/Outfit/

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

VariablesVariables

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

RegionsRegions

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

FunctionsFunctions

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

ConditionalsConditionalsif (you're the inside couple) {

go clockwise}

} else {go counter clockwise.

}

   

Ready to rope Ready to rope yourself a yourself a theme?theme?

@emmajanedotnet@emmajanedotnetwww.hicktech.comwww.hicktech.com <­­­ theming classes <­­­ theming classesFront End Drupal <­­­ theming bookFront End Drupal <­­­ theming book

http://www.flickr.com/photos/fkehren/3352577815/