Table of Contents
Preface
Chapter 1: The Elements of a Drupal Theme
Chapter 2: Theme Setup and Configuration
Chapter 3: Working with Theme Engines
Chapter 4: Identifying Templates, Stylesheets, and Themable Functions
Chapter 5: Intercepts and Overrides
Chapter 6: Modifying an Existing Theme
Chapter 7: Building a New Theme
Chapter 8: Dynamic Theming
Chapter 9: Dealing with Forms
Appendix A: Drupal CSS Map
Appendix B: The Themers' Toolkit
Index
- Chapter 1: The Elements of a Drupal Theme
- The Importance of Themes in Drupal
- Theme It in Whole or in Part
- Build with Blocks
- Intercept and Override
- What Is a Theme?
- What Is a Theme Engine?
- The Range and Flexibility of Drupal Themes
- What You See on the Screen
- The Big Picture: How Drupal Displays a Page
- The Default Themes of the Drupal Distro
- The Theme Files
- The Files of a PHPTemplate Theme
- The Files of a Pure PHP Theme
- Summary
- The Importance of Themes in Drupal
- Chapter 2: Theme Setup and Configuration
- Finding Additional Themes
- Installing an Additional Theme
- Configuring a Theme
- Theme-Specific Configuration Options
- Color Picker
- Enable/Disable Page Elements
- Logo Settings
- Shortcut Icon Settings
- Global Configuration Settings
- Theme-Specific Configuration Options
- Managing Modules and Blocks
- The Module Manager
- The Blocks Manager
- Configuring Individual Blocks
- Adding PHP to Blocks
- Theming in Action: Dressing Up Garland
- Set the Color Scheme
- Set Page Elements (Toggle Display Settings)
- Upload Logo
- Global Site Information
- Enable Modules
- Manage Blocks
- Add Some Dummy Content and Links
- Set Access Levels
- Create a Custom Block
- Set Block Visibility
- Uninstalling Themes
- Summary
- Chapter 3: Working with Theme Engines
- What is PHPTemplate?
- How Does It Work?
- Getting Started with PHPTemplate
- The Role of the .info File
- The Role of the page.tpl.php File
- Two Contrasting Examples
- A Basic PHPTemplate Theme—Bluemarine
- A More Complex PHPTemplate Theme—Garland
- Alternative Theme Engines
- PHPTAL
- Smarty
- PHP XTemplate
- Installing Additional Theme Engines
- Summary
- Chapter 4: Identifying Templates, Stylesheets, and Themable Functions
- Putting Together the Pieces—Templates, Stylesheets, and Functions
- Default Templates and Variables
- Default Stylesheets
- The Themable Functions
- A Guide to Theming Elements
- Common Theme System Functions
- Theming the Aggregator Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Block Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Book Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Color Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Comment Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the DBLog Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Filter Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Form Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Forum Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Help Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Locale Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Menu Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Node Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the OpenID Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Pagination Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Poll Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Profile Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Search Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Syslog Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the System Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Taxonomy Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Tracker Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Trigger Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Update Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the Upload Module
- Default Templates
- Default Stylesheets
- Themable Functions
- Theming the User Functionality
- Default Templates
- Default Stylesheets
- Themable Functions
- Summary
- Putting Together the Pieces—Templates, Stylesheets, and Functions
- Chapter 5: Intercepts and Overrides
- Overriding the Default CSS
- CSS Overrides in Action
- Overriding Templates and Themeable Functions
- Various Approaches to Overriding Default Styling
- Substituting Templates
- Overriding Templates
- Placing Function Overrides in the template.php File
- Overriding Themable Functions with Dedicated Template Files
- Where to Place Themable Function Overrides
- How to Name Themeable Function Overrides
- Overrides in Action: A Look at Overrides in Garland
- Intercepting the Default Template Files
- Overriding Themable Functions
- Various Approaches to Overriding Default Styling
- Summary
- Overriding the Default CSS
- Chapter 6: Modifying an Existing Theme
- Setting Up the Workspace
- Planning the Modifications
- Creating a New Subtheme
- Making the Transition from Zen to Tao
- Configuring the Theme
- Enabling Modules
- Setting Global and Theme Configuration Options
- Setting User Access
- Creating Dummy Content
- Setting Up Menus
- Adding New Regions
- Enabling and Configuring Blocks
- Adapting the CSS
- Setting the Page Dimensions
- Formatting the New Regions
- Setting Fonts and Colors
- Formatting the Sidebars and Footer
- Formatting the Menus
- Creating the Horizontal Menu
- Formatting the Vertical Menu
- Formatting the Search Box and Syndicate Button
- Formatting the Comments Form and Output
- Adapting the Themable Functions
- Overriding a Themable Function
- Modifying a Default Template
- Before and After
- Configuring the Theme
- Summary
- Chapter 7: Building a New Theme
- Planning the Build
- Creating a New PHPTemplate Theme
- Building a .info File
- Building a page.tpl.php File
- Insert DocType and Head
- Insert Body Tags
- Lay Out the Page Divisions
- Place the Functional Elements
- The Final page.tpl.php File
- The style.css File
- A Look at Our New Theme
- 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
- Chapter 8: Dynamic Theming
- Using Multiple Templates
- Using a Separate Admin Theme
- Multiple Page or Section Templates
- Create a Unique Homepage Template
- Use a Different Template for a Group of Pages
- Assign a Specific Template to a Specific Page
- Designate a Specific Template for a Specific User
- Dynamically Theming Page Elements
- Associating Elements with the Front Page
- Dynamically Styling Modules and Blocks
- Dynamically Styling Blocks
- Dynamically Styling the Comment Module
- Dynamically Styling the Forum Module
- Dynamically Styling the Polls Module
- Dynamically Styling Nodes
- Creating Dynamic CSS Styling
- Using Dynamic Selectors for Nodes
- Changing the Body Class Based on $body_classes
- Working with Template Variables
- Intercepting and Overriding Variables
- Making New Variables Available
- Summary
- Using Multiple Templates
- Chapter 9: Dealing with Forms
- How Forms Work in Drupal
- How to Approach Modifying Forms
- Working with the CSS Styling
- Modifying the Page or Block Holding the Form
- Templates for Pages Containing Forms
- Templates for Blocks Containing Forms
- Override the Default Template Associated with the Form
- Using a Theme Function to Control Elements
- Modifying Forms with Custom Modules
- Solutions to Common Form Issues
- Modifying Data Labels and Other Text
- Using form_alter()
- Using a Function
- Using a Template
- Modifying the Styling of a Form
- Using form_alter()
- Using a Function
- Using a Template
- Using Images for Buttons
- Modifying Data Labels and Other Text
- The Default Forms
- The User Forms
- The Login Forms
- The User Registration Form
- The Request Password Form
- The User Profile 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
- Appendix A: Drupal CSS Map
- A Guide to Drupal Stylesheets
- admin.css
- admin-rtl.css
- aggregator.css
- aggregator-rtl.css
- block.css
- book.css
- book-rtl.css
- color.css
- color-rtl.css
- comment.css
- comment-rtl.css
- dblog.css
- dblog-rtl.css
- defaults.css
- defaults-rtl.css
- forum.css
- forum-rtl.css
- help.css
- help-rtl.css
- locale.css
- maintenance.css
- node.css
- node-rtl.css
- openid.css
- poll.css
- poll-rtl.css
- profile.css
- search.css
- search-rtl.css
- style.css
- system.css
- system-rtl.css
- system-menus.css
- system-menus-rtl.css
- taxonomy.css
- tracker.css
- update.css
- update-rtl.css
- user.css
- user-rtl.css
- The Stylesheets of the Default Themes
- Marvin
- Bluemarine
- Pushbutton
- Garland
- Minnelli
- Chameleon
- A Guide to Drupal Stylesheets
- Appendix B: The Themers' Toolkit
- Drupal Modules
- Content Construction Kit
- Devel Module
- Panels Module
- Views Module
- Firefox Extensions
- Firebug Firefox Extension
- The Web Developer Extension
- Drupal Modules



