Drupal 5 Themes
By Ric Shreves
()
About this ebook
Drupal is an award winning open source Content Management System. Based on PHP/MySQL, its power and flexibility combined with its exceptional design mean it is already on the way to becoming the de facto standard for CMS Websites. Drupal's modular design and structured source code make it both highly flexible and easily extended and modified. Drupal is extremely scalable, making it ideal for both a simple personal website as well as an industrial strength commercial or institutional web presence.
Drupal is a model open source project in that it has a large, friendly community of people who contribute to the project in various ways. Drupal is not only free and easy to use, but this community provides on going mutual support.
This book is the ideal introduction to theming with Drupal 5. If you want to create a striking new look for your Drupal website, this book is for you. Starting from the basics of theme setup and configuration, you will learn about the Drupal theming architecture and the PHPTemplate engine, and then move on to modifying existing themes and building new themes from scratch. Included is a complete guide to the various style sheets and themeable functions in Drupal 5, making this book a valuable resource even to experienced theme developers. It covers:
- Finding your way around Drupal 5's theming architecture
- Locating and identifying the various elements, functions, and styles
- Working with the PHPTemplate templating engine
- Intercepting and overriding default templates and styles
The main requirements to make use of this book are knowledge of HTML, CSS, and a touch of creativity! Although this book aims to make Drupal theming accessible to designers, theming in Drupal 5 involves writing some PHP code, and a basic knowledge of PHP will be helpful.
"One of the things we set out to accomplish was to create a resource. We put together a catalog of the system's 20+ stylesheets and we go through all the default themeable functions. The information is organized logically and will make this a resource people can put on their shelf and turn to when needed. Being able to quickly lay your hands on the information concerning the styles and the themeable functions is a real time-saver." - Ric Shreves, author.
Visit the Drupal 5 Themes Free Online Edition to view chapter introductions and a full chapter.
Ric Shreves
Ric Shreves is one of the founding partners of water&stone, an interactive agency that specialises in open source web content management systems. Ric has been building CMS websites for over 10 years, and during that time has been involved in projects for a number of global brands, including BASF, BearingPoint, Colgate-Palmolive, Tesco Lotus, FPDSavills CBRichard Ellis, Mercy Corps and many others. Ric has published a number of books on open source in general and on open source content management systems in particular. Past work includes books on Mambo, Drupal, Joomla! and Ubuntu.
Read more from Ric Shreves
Social Media Optimization For Dummies Rating: 0 out of 5 stars0 ratingsJoomla! Search Engine Optimization Rating: 1 out of 5 stars1/5Drupal Search Engine Optimization Rating: 0 out of 5 stars0 ratings
Related to Drupal 5 Themes
Related ebooks
Drupal 8 Theming with Twig Rating: 4 out of 5 stars4/5WordPress 3.7 Complete Rating: 5 out of 5 stars5/5WordPress 2.8 Theme Design Rating: 0 out of 5 stars0 ratingsMastering Magento Theme Design Rating: 0 out of 5 stars0 ratingsJoomla! 1.5 SEO Rating: 0 out of 5 stars0 ratingsDrupal 7 Bible Rating: 4 out of 5 stars4/5Drupal 7 Social Networking Rating: 0 out of 5 stars0 ratingsPrestaShop 1.3 Theming – Beginner’s Guide Rating: 0 out of 5 stars0 ratingsMastering Drupal 8 Views Rating: 0 out of 5 stars0 ratingsSilverStripe 2.4 Module Extension, Themes, and Widgets: Beginner's Guide Rating: 0 out of 5 stars0 ratingsBootstrap 4 Site Blueprints Rating: 5 out of 5 stars5/5Mastering Bootstrap 5: From Basics to Expert Projects Rating: 0 out of 5 stars0 ratingsWordPress Web Application Development - Second Edition Rating: 0 out of 5 stars0 ratingsJoomla! 3 Beginner's Guide Second Edition Rating: 0 out of 5 stars0 ratingsInDesign CS4 Bible Rating: 0 out of 5 stars0 ratingsMastering TypoScript: TYPO3 Website, Template, and Extension Development Rating: 0 out of 5 stars0 ratingsBuilding Business Websites with Squarespace 7 Rating: 0 out of 5 stars0 ratingsMoodle 1.9 Extension Development Rating: 0 out of 5 stars0 ratingsDrupal 7 Business Solutions Rating: 0 out of 5 stars0 ratingsMoodle 1.9 Theme Design: Beginner's Guide Rating: 0 out of 5 stars0 ratingsIBM Lotus Domino: Classic Web Application Development Techniques Rating: 0 out of 5 stars0 ratingsLearning Drupal 8 Rating: 0 out of 5 stars0 ratingsElgg 1.8 Social Networking Rating: 0 out of 5 stars0 ratingsLearning Bootstrap 4 - Second Edition Rating: 5 out of 5 stars5/5Drupal 7 First Look Rating: 0 out of 5 stars0 ratingsPractical Plone 3: A Beginner's Guide to Building Powerful Websites Rating: 0 out of 5 stars0 ratingsWordPress Web Application Development Rating: 5 out of 5 stars5/5Developing Microsoft Dynamics GP Business Applications Rating: 0 out of 5 stars0 ratingsHTML5 and CSS3: Building Responsive Websites Rating: 0 out of 5 stars0 ratingsCMS Made Simple 1.6 Beginner's Guide Rating: 5 out of 5 stars5/5
Information Technology For You
Health Informatics: Practical Guide Rating: 0 out of 5 stars0 ratingsCreating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Computer Science: A Concise Introduction Rating: 4 out of 5 stars4/5CompTIA ITF+ CertMike: Prepare. Practice. Pass the Test! Get Certified!: Exam FC0-U61 Rating: 0 out of 5 stars0 ratingsHow to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Data Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5AWS Certified Cloud Practitioner: Study Guide with Practice Questions and Labs Rating: 5 out of 5 stars5/5Visual Studio Code for Python Programmers Rating: 0 out of 5 stars0 ratingsAn Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5Investigating Child Exploitation and Pornography: The Internet, Law and Forensic Science Rating: 5 out of 5 stars5/5Hacking Essentials - The Beginner's Guide To Ethical Hacking And Penetration Testing Rating: 3 out of 5 stars3/5The iPadOS 17: The Complete User Manual to Quick Set Up and Mastering the iPadOS 17 with New Features, Pictures, Tips, and Tricks Rating: 0 out of 5 stars0 ratingsLinux Command Line and Shell Scripting Bible Rating: 3 out of 5 stars3/5How to Find a Wolf in Siberia (or, How to Troubleshoot Almost Anything) Rating: 0 out of 5 stars0 ratingsCODING INTERVIEW: Advanced Methods to Learn and Excel in Coding Interview Rating: 0 out of 5 stars0 ratingsInformation Security Best Practices: 205 Basic Rules Rating: 0 out of 5 stars0 ratingsThe Programmer's Brain: What every programmer needs to know about cognition Rating: 5 out of 5 stars5/5How To Use Chatgpt: Using Chatgpt To Make Money Online Has Never Been This Simple Rating: 0 out of 5 stars0 ratingsRaspberry Pi :Raspberry Pi Guide On Python & Projects Programming In Easy Steps Rating: 3 out of 5 stars3/5ChatGPT: The Future of Intelligent Conversation Rating: 4 out of 5 stars4/5Data Governance For Dummies Rating: 0 out of 5 stars0 ratingsWindows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry Rating: 4 out of 5 stars4/5Summary of Super-Intelligence From Nick Bostrom Rating: 5 out of 5 stars5/5Beginner's Guide to Information Security Rating: 0 out of 5 stars0 ratingsPractical Ethical Hacking from Scratch Rating: 5 out of 5 stars5/5Handbook of Digital Forensics and Investigation Rating: 4 out of 5 stars4/5Cybersecurity for Beginners : Learn the Fundamentals of Cybersecurity in an Easy, Step-by-Step Guide: 1 Rating: 0 out of 5 stars0 ratings
Reviews for Drupal 5 Themes
0 ratings0 reviews
Book preview
Drupal 5 Themes - Ric Shreves
Table of Contents
Drupal 5 Themes
Credits
About the Author
About the Reviewer
Preface
What This Book Covers
What You Need for This Book
Who is This Book for
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. The Elements of a Drupal Theme
What is a Theme?
Official Drupal Online Resources
What is a Templating Engine?
The Range and Flexibility of Drupal Themes
Who's using Drupal? Some big names...
What You See on the Screen
The Big Picture: How Drupal Displays a Page
The Importance of Themes in Drupal
Key Concepts
You Can Theme It All
Build with Blocks
Intercept and Override
The Contents of the Drupal Distro
The Theme Files
The Files of a PHPTemplate Theme
The Files of a Pure PHP Theme
Summary
2. Theme Set Up and Configuration
Finding Additional Themes
Installing an Additional Theme
Configuring a Theme
Theme-Specific Configuration Options
Color Picker
Enable/Disable Page Elements
Logo Settings
Favicon Settings
Global Configuration Settings
Managing Modules and Blocks
The Module Manager
The Blocks Manager
Configuring Individual Blocks
Block Title
User Specific Visibility Settings
Role Specific Visibility Settings
Page Specific Visibility Settings
Adding PHP to Blocks
Theming in Action: Dressing Up Garland
Set the Color Scheme
Change Display Settings
Upload Logo
Global Configuration
Enable Modules
Manage Blocks
Add Some Dummy Content and Links
Set Access Levels
Create a Custom Block
Set Block Visibility
Uninstalling Themes
Summary
3. Working with Theme Engines
What is PHPTemplate?
How does it Work?
Getting Started with PHPTemplate
A Look at the Theme Engine Files
block.tpl.php
box.tpl.php
comment.tpl.php
default.tpl.php
node.tpl.php
template.engine
A Look at the Key PHPTemplate File Contained in the Theme
Two Contrasting Examples
A Basic PHPTemplate Theme—Gagarin
A More Complex PHPTemplate Theme—Garland
Alternative Theme Engines
PHPTAL
Smarty
PHP XTemplate
Installing Additional Theme engines
Summary
4. Style Sheets and Themeable Functions
A Guide to Drupal Style Sheets
admin.css
aggregator.css
block.css
book.css
color.css
comment.css
defaults.css
farbtastic.css
forum.css
help.css
locale.css
maintenance.css
node.css
poll.css
search.css
style.css
system.css
tracker.css
user.css
watchdog.css
Identifying Themeable Functions
A Guide to Themeable Functions
Aggregator Module Functions
theme_aggregator_block_item
theme_aggregator_feed
theme_aggregator_page_item
theme_aggregator_page_list
theme_aggregator_summary_item
Block Module Functions
theme_block_admin_display
Book Module Functions
theme_book_admin_table
theme_book_export_html
theme_book_navigation
Color Module Functions
theme_color_scheme_form
Comment Module Functions
theme_comment_admin_overview
theme_comment
theme_comment_block
theme_comment_controls
theme_comment_flat_collapsed
theme_comment_flat_expanded
theme_comment_folded
theme_comment_post_forbidden
theme_comment_preview
theme_comment_thread_collapsed
theme_comment_thread_expanded
theme_comment_view
theme_comment_wrapper
Drupal Module Functions
theme_client_list
Filter Module Functions
theme_filter_admin_order
theme_filter_admin_overview
theme_filter_tips
theme_filter_tips_more_info
Form Functions
theme_button
theme_checkbox
theme_checkboxes
theme_date
theme_fieldset
theme_file
theme_form
theme_form_element
theme_hidden
theme_item
theme_markup
theme_password
theme_password_confirm
theme_radio
theme_radios
theme_textarea
theme_textfield
theme_token
theme_select
Forum Module Functions
theme_forum_display
theme_forum_icon
theme_forum_list
theme_forum_topic_list
theme_forum_topic_navigation
Locale Functions
theme_locale_admin_manage_screen
Menu Functions
theme_menu_item
theme_menu_item_link
theme_menu_links
theme_menu_local_task
theme_menu_tree
Node Module Functions
theme_node_admin_nodes
theme_node_filter_form
theme_node_filters
theme_node_form
theme_node_list
theme_node_log_message
theme_node_preview
theme_node_search_admin
Pagination Functions
theme_pager
theme_pager_first
theme_pager_last
theme_pager_list
theme_pager_link
theme_pager_next
theme_pager_previous
Poll Module Functions
theme_poll_bar
theme_poll_results
theme_poll_view_voting
Profile Module Functions
theme_profile_block
theme_profile_listing
Search Module Functions
theme_search_block_form
theme_search_item
theme_search_page
theme_search_theme_form
System Module Functions
theme_admin_block
theme_admin_block_content
theme_admin_page
theme_system_admin_by_module
theme_system_theme_select_form
theme_system_themes
theme_system_modules
theme_system_modules_uninstall
Taxonomy Module Functions
theme_taxonomy_term_select
Theme Functions
theme_block
theme_blocks
theme_box
theme_breadcrumb
theme_closure
theme_feed_icon
theme_get_setting
theme_help
theme_image
theme_install_page
theme_item_list
theme_links
theme_maintenance_page
theme_mark
theme_more_help_link
theme_node
theme_page
theme_placeholder
theme_progress_bar
theme_status_messages
theme_submenu
theme_table
theme_tablesort_indicator
theme_table_select_header_cell
theme_username
theme_xml_icon
Upload Module Functions
theme_upload_attachments
theme_upload_form_current
theme_upload_form_new
User Module Functions
theme_user_admin_account
theme_user_admin_new_role
theme_user_admin_perm
theme_user_filter_form
theme_user_filters
theme_user_list
theme_user_picture
theme_user_profile
Watchdog Module Functions
theme_watchdog_form_overview
Summary
5. Intercepts and Overrides
Overriding the Default CSS
CSS Overrides in Action
Overriding Functions
Where to Place Overrides
How to Name Your Overrides
Overrides in Action: How Garland Works
Intercepting PHPTemplate Files
Overriding Themeable Functions in Garland
Various Approaches to Overrides
Intercepting and Substituting Files
Placing Overrides in the Theme's template.php File
Modifying the PHPTemplate Engine Files
Placing Overrides in Dedicated Files
Intercepting Template Files
Summary
6. Modifying an Existing Theme
Setting Up the Workspace
Planning the Modifications
Cloning a Theme
First Look at Zen/Tao
CSS in Zen/Tao
Themeable Functions in Zen/Tao
Turning Zen into Tao
Configuring the Theme
Set Global and Theme Configuration Options
Enable Modules
Set User Access
Create Dummy Content
Set Up Menus
Add New Regions
Enable and Configure Blocks
Position Blocks
Adapting the CSS
Setting the Page Dimensions
Formatting the New Regions
Fonts and Colors
Formatting the Sidebars and Footer
Formatting the Menus
Creating the Horizontal Menu
Formatting the Vertical Menu
Formatting the Search Box
Formatting the Comments Form and Output
Adapting the Themeable Functions
Modifying template.php
Creating a New Template File
Before and After
Summary
7. Building a New Theme
Planning the Build
Build a New PHPTemplate Theme
Building a page.tpl.php File
Insert DocType and Head
Insert Body Tags
Lay Out the Page Divisions
Place the Functional Elements
Insert the Secondary Links
Inside the Header Wrapper
Logo
Site Name
Theme Search Box
Site Slogan
Site Mission
Header Region
Insert the Primary Links
Inside the Main Wrapper
Sidebar Left
The Main Content Area
Breadcrumb Trail
Title
Tabs
Help
Messages
Content Region
Sidebar Right
Inside the Footer
Feed Icons
Footer Region
Insert the Template Closing Tag
The Final page.tpl.php File
The style.css File
A Look at Our New Theme
Extending Your PHPTemplate Theme
Working with Template Variables
Variables Available in block.tpl.php
Variables Available in box.tpl.php
Variables Available in comment.tpl.php
Variables Available in node.tpl.php
Variables Available in page.tpl.php
Intercepting and Overriding Variables
Making New Variables Available
Dynamic Theming
Using Multiple Templates
A Separate Admin Theme
Multiple Page or Section Templates
Creating A Unique Homepage Template
Using a Different Template for a Group of Pages
Assigning a Specific Template to a Specific Page
Designating a Specific Template for a Specific User
Dynamically Theming Page Elements
Associating Elements with the Front Page
Dynamically Styling Modules and Blocks
Dynamically Styling Nodes
Creating Dynamic CSS Styling
Using Dynamic Selectors for Nodes
Changing the Selector Based on $layout
Build a New Pure PHP Theme
Required Elements
HTML Headers
Head of Document
Implementing the Features
Favicon
Logo
Site Name
Site Slogan
Primary and Secondary Links
Sidebars
Sidebar Left
Sidebar Right
Main Content Area
Title and Breadcrumb Trail
Tabs
Help
Messages
Content Region
Footer
Theme Closure
Overriding Functions
Summary
8. Dealing with Forms
How Forms Work in Drupal
Modifying and Overriding Form Functions
Adding HTML via Function Attributes
Using form_alter()
Overriding Form Functions from template.php
Creating Custom Templates for Forms
Page Templates
Block Templates
Templates for Forms Output
Common Form Issues
Modifying Data Labels and Other Text
Using form_alter()
Override the Function
Create a New Template
Add a Node
Modifying the Styling of a Form
Using form_alter()
Override the Function
Create a New Template
Using Images for Buttons
The Default Forms
The User Forms
The Login Forms
The Login Block Form
The Login Page Form
The User Registration Form
The Request Password Form
The Edit User Info Form
The Default Contact Form
The Search Forms
The Theme Search Form
The Block Search Form
The Page Search Form
The Advanced Search Form
The Search Results Page
The Poll Module Forms
The Poll Block Form
The Poll Page Form
Summary
A. Appendix A
Index
Drupal 5 Themes
Ric Shreves
Drupal 5 Themes
Copyright © 2007 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: December 2007
Production Reference: 1171207
Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-847191-82-3
www.packtpub.com
Cover Image by Vinayak Chittar(<vinayak.chittar@gmail.com>)
Credits
Author
Ric Shreves
Reviewer
Dave Myburgh
Senior Acquisition Editor
Douglas Paterson
Development Editor
Rashmi Phadnis
Technical Editor
Ajay S.
Editorial Team Leader
Mithil Kulkarni
Project Manager
Patricia Weir
Indexer
Hemangini Bari
Proofreaders
Harminder Singh
Chris Smith
Production Coordinator
Aparna Bhagat
Shantanu Zagade
Cover Designer
Aparna Bhagat
About the Author
Ric Shreves is a partner in water & stone (www.waterandstone.com), a web development company that specializes in open-source content management systems. He works primarily as a consultant and business systems analyst and is currently on extended assignment with Peace Dividend Trust. He lives in Bali with his wife Nalisa, one dog, two cats, three turtles, and a mind-boggling number of fish.
First and foremost, I thank my loving wife Nalisa for her support and patience. It would also be remiss of me to fail to acknowledge my friend (and editor at ComputerWorld) Stefan Hammond, who provides more than a modicum of support and encouragement—together with much-needed reality checks.
About the Reviewer
Dave Myburgh started out in computers when entire operating systems ran on a single floppy disk and 640kb of RAM was a lot! He studied to become a molecular biologist, but never lost his passion for computers. Later, he ran a successful computer company for a couple of years in South Africa, before moving to Canada with his wife. He went back to science on his arrival in Canada, and since discovering Drupal almost two years ago, he has once again started his own company, MybesInformatik. He loves working with Drupal, and is quite handy at theming, as well as hacking modules to make them do what he wants (sometimes, patches even get submitted back to the community). Now, he divides his time—unevenly—between family and Drupal.
I would like to thank Dries and the Drupal community for making Drupal what it is today. Without you guys and gals, I'd probably still be doing static
—I can't wait for Drupal 6! I'd also like to thank my wife for putting up with my frequent late nights in front of the computer. I tell her it's work, but in reality, it's a lot of fun—just don't tell her I told you that.
Preface
This book sets out to explain the workings of the Drupal theme framework, and how you can use it effectively. The goal of this book is to explain basic principles, demonstrate practical solutions to common problems, and create a reference for theming.
The book begins with an overview of the theme system and an explanation of what is included in the default Drupal distro. We next look at how you can squeeze the most out of the default system. The middle chapters discuss PHPTemplate and introduce using themeable functions and manipulating the Drupal style sheets. To illustrate the principles, we take a common theme and modify it. In the final chapters, we delve into creating themes from scratch and more advanced issues, like forms.
For purposes of this text, we focus on the theme engine included in the default distro—PHPTemplate. Similarly, we only touch on creating themes in pure PHP, without the use of a theme engine.
This book is all about controlling the presentation layer of your Drupal site; accordingly, we do not cover creating new modules, or writing custom functionality.
The author of this text comes from a design background and has only basic programming skills. The explanations given, and the rational for many of the choices, reflect the author's background. In that light, this book may not always satisfy hardcore programmers who expect the technical issues to be explained in detail. It should, however, make the life of many designers a little easier and hopefully, with the reference materials we've included, find a lasting home on the shelves of many Drupal developers.
What This Book Covers
Chapter 1 covers the elements of a Drupal theme. It also takes a look at the contents of the Drupal distro and examines the different approaches of the default themes.
Chapter 2 explains how to set up and configure a theme in Drupal. By way of example, we take a default theme and customize it using only the options provided by the system.
Chapter 3 discusses the use of theme engines in general and the PHPTemplate engine in particular. This chapter also lays the groundwork for techniques to modify themes through the system's CSS and themeable functions.
Chapter 4 takes an in-depth look at the system's default style sheets and the various themeable functions.
Chapter 5 explains the process behind intercepting and overriding the Drupal style sheets and themeable functions. This is a key concept for obtaining full control over the presentation layer—without the necessity of modifying the core files.
Chapter 6 provides a hands-on example of the techniques covered in the previous chapters by taking a default theme and then modifying it extensively.
Chapter 7 covers creating a theme from scratch with the PHPTemplate theme engine and also looks at the basics of implementing a theme without a theme engine.
Chapter 8 discusses modifying the look and feel of the many different forms in the Drupal system.
Appendix A is a listing of all the selectors in the various style sheets.
What You Need for This Book
Throughout this book, we will assume that you have the following package installed and available:
Drupal CMS (version 5.x)
Who is This Book for
The main requirements of this book are knowledge of HTML, CSS, and a touch of creativity! Though this book aims to make Drupal theming accessible to designers, theming in Drupal 5 involves writing some PHP code, and a basic knowledge of PHP will be helpful.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
There are three styles for code. Code words in text are shown as follows: We can include other contexts through the use of the include directive.
A block of code will be set as follows:
title {color: #666;
font-size: 1.8em;
line-height: 2.0em;
font-style: italic;
When we wish to draw your attention to a particular part of a code block, the relevant lines or items will be made bold:
class=clear-block block block-module ?>
>
subject): ?>
subject ?>
New terms and important words are introduced in a bold-type font. Words that you see on the screen, in menus or dialog boxes for example, appear in our text like this: clicking the Next button moves you to the next screen
.
Note
Important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader Feedback
Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply drop an email to <feedback@packtpub.com>, making sure to mention the book title in the subject of your message.
If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Customer Support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the Example Code for the Book
Visit http://www.packtpub.com/support, and select this book from the list of titles to download any example code or extra resources for this book. The files available for download will then be displayed.
Note
The downloadable files contain instructions on how to use them.
Errata
Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration,