You are previewing Beginning Drupal®.
O'Reilly logo
Beginning Drupal®

Book Description

A thorough introduction that lessens the learning curve to building sites with Drupal 7

Drupal 7 is the latest version of the free, open source content management system Drupal. A powerful content management system and framework Drupal has an unfortunate reputation of having a steep learning curve. This guide to Drupal 7 methodically demystifies Drupal and shortening the learning curve.

Author Jacob Redding is deeply embedded in the Drupal community, and walks first-time Drupal developers through the installation and configuration of a Drupal system. In-depth information on key areas of Drupal explore the Drupal hook system, Drupal's theming layer, and Drupal's API. You'll also get sample code, and lessons that guide you through various aspects of Drupal.

  • Introduces you to every aspect of Drupal 7

  • Demystifies key areas of Drupal and shortens the learning curve for even the most novice beginner

  • Features lessons and sample code that offer extra insight into a Drupal web site

  • Exploring simple single website installations and more advanced multiple site installations that share users and/or content.

  • Addresses how to use Drupal's theming layer to your advantage.

With this comprehensive and clear book by your side, you will quickly learn to leverage Drupal's impressive power.

Note: CD-ROM/DVD and other supplementary materials are not included as part of eBook file.

Table of Contents

  1. Copyright
  2. CREDITS
  3. ABOUT THE AUTHOR
  4. ACKNOWLEDGMENTS
  5. INTRODUCTION
      1. Who This Book Is For
      2. What This Book Covers
      3. How This Book Is Structured
      4. What You Need to Use This Book
    1. CONVENTIONS
    2. SOURCE CODE
    3. ERRATA
    4. P2P.WROX.COM
  6. 1. Introducing Drupal
    1. 1.1. HISTORY OF DRUPAL
      1. 1.1.1. Why is the Name Drupal?
      2. 1.1.2. Who is Drupal?
    2. 1.2. THE DRUPAL COMMUNITY
    3. 1.3. WHERE IS THE COMMUNITY?
    4. 1.4. PROFESSIONAL SUPPORT
    5. 1.5. THE DRUPAL ASSOCIATION
    6. 1.6. SUMMARY
  7. 2. Installing Drupal
    1. 2.1. GETTING STARTED WITH DRUPAL
    2. 2.2. INSTALLING A SINGLE DRUPAL WEBSITE
    3. 2.3. INSTALLING DRUPAL
      1. 2.3.1. Installation Profiles
      2. 2.3.2. Installing Drupal in Different Languages
    4. 2.4. ACQUIA'S STACK INSTALLER
      1. 2.4.1. Breaking It Down
      2. 2.4.2. Don't Hack Core
      3. 2.4.3. Core Files
      4. 2.4.4. Sites Folder
      5. 2.4.5. What's in a Site's Folder?
      6. 2.4.6. Inheritance and Overrides
    5. 2.5. SUMMARY
  8. 3. Your First Drupal Website
    1. 3.1. ADDING CONTENT
      1. 3.1.1. Differences between Articles and Pages
        1. 3.1.1.1. Nodes Are Content
      2. 3.1.2. Content Summaries
      3. 3.1.3. Modifying the Defaults
    2. 3.2. MODIFYING YOUR MENUS
    3. 3.3. ADDING BLOCKS TO YOUR WEBSITE
    4. 3.4. GETTING IN CONTACT
      1. 3.4.1. TRY IT OUT: Adding the Contact Form to Your Main Menu
      2. 3.4.2. Summing Up the Contact Form
    5. 3.5. EXPLORING YOUR SITE'S PERMISSIONS
    6. 3.6. CREATING A MEMBERS-ONLY SITE
      1. 3.6.1. Exploring Roles
        1. 3.6.1.1. For Members Only
        2. 3.6.1.2. Access Denied? Create an Account
        3. 3.6.1.3. Lonely? Add a Few Users
      2. 3.6.2. Wrapping up Users and Permissions
    7. 3.7. TIME FOR A NEW LOOK
      1. 3.7.1. Time for Something Different
    8. 3.8. CRON
      1. 3.8.1. Manually? No Way! Let the Computer Do It
      2. 3.8.2. A Need for Speed
    9. 3.9. SUMMARY
  9. 4. Administration — Configuration, Modules, and Reporting
    1. 4.1. CONFIGURATION
    2. 4.2. SYSTEM — SITE INFORMATION
      1. 4.2.1. System — Actions
      2. 4.2.2. Regional and Language — Settings
        1. 4.2.2.1. Time Zone Issues
        2. 4.2.2.2. Time Zones When Creating Content
      3. 4.2.3. Regional and Language — Translate
      4. 4.2.4. Media
      5. 4.2.5. Media — File System
        1. 4.2.5.1. Public vs. Private Files
        2. 4.2.5.2. The Private File Tax
        3. 4.2.5.3. Put Your Files on Lock Down
        4. 4.2.5.4. Set It and Forget It
      6. 4.2.6. Temporary Directory
      7. 4.2.7. PHP File Size Limitations
        1. 4.2.7.1. settings.php
        2. 4.2.7.2. .htaccess
        3. 4.2.7.3. php.ini or php5.ini
      8. 4.2.8. Media — Image Toolkit
      9. 4.2.9. People and Permissions
      10. 4.2.10. Web Services
      11. 4.2.11. Web Services — RSS Publishing
      12. 4.2.12. Web Services — Feed Aggregator
      13. 4.2.13. Content Authoring — Text Formats
    3. 4.3. EXPLORE THE FILTERED HTML TEXT FORMAT
      1. 4.3.1. Modify Text
      2. 4.3.2. Add Text
      3. 4.3.3. Remove Text
      4. 4.3.4. Interpreting Text
      5. 4.3.5. Choosing Roles and the Importance of the Order
      6. 4.3.6. Configuring the Filters
      7. 4.3.7. The Order Matters
      8. 4.3.8. Additional Filters
      9. 4.3.9. Writing Your Own Filter
      10. 4.3.10. Search and Metadata - Clean URLs
    4. 4.4. APACHE
    5. 4.5. A NEED FOR SPEED
    6. 4.6. IIS
      1. 4.6.1. Search and Metadata — URL Aliases
      2. 4.6.2. Alias Your Way to a Better Search Ranking
      3. 4.6.3. Maintenance Mode
      4. 4.6.4. IP Address Blocking
    7. 4.7. SUMMARY
  10. 5. Administration — Blocks, Menus, and Themes
    1. 5.1. BLOCKS
      1. 5.1.1. Block Visibility
      2. 5.1.2. Block Visibility Using PHP
    2. 5.2. MENUS
      1. 5.2.1.
        1. 5.2.1.1. Reviewing Menu Links
      2. 5.2.2. Adding a Menu Link Directly on Content
      3. 5.2.3. A Word On Permissions
      4. 5.2.4. Menu Settings
        1. 5.2.4.1. Default Content Menu
        2. 5.2.4.2. Main and Secondary Links
      5. 5.2.5. Related Modules
    3. 5.3. URL ALIASES AKA CUSTOM PATHS
      1. 5.3.1. A Word on Permissions
    4. 5.4. THEMES
      1. 5.4.1. Theme Administration
      2. 5.4.2. Theme Global Settings
      3. 5.4.3. Theme Settings Summary
      4. 5.4.4. Installing New Themes
        1. 5.4.4.1. Watch the Version
        2. 5.4.4.2. Theme Location
        3. 5.4.4.3. User Specific Themes
        4. 5.4.4.4. Custom Theme per _____
      5. 5.4.5. Administrative Theme
      6. 5.4.6. Post Information
    5. 5.5. SUMMARY
  11. 6. Content
    1. 6.1. NODES
      1. 6.1.1. What is a Node?
        1. 6.1.1.1. Why Nodes?
    2. 6.2. CREATING CUSTOM CONTENT TYPES
      1. 6.2.1.
        1. 6.2.1.1. Before You Begin Consider Your Options
        2. 6.2.1.2. Machine Name
      2. 6.2.2. Submission Form Settings
        1. 6.2.2.1. Text Formats
      3. 6.2.3. Publishing Options
      4. 6.2.4. Display Settings
      5. 6.2.5. Comment Settings
      6. 6.2.6. Menu Settings
    3. 6.3. ADDING AN IMAGE UPLOAD FIELD
      1. 6.3.1. Multiple Fields for Multiple Images?
      2. 6.3.2. The Power of Image Field
        1. 6.3.2.1. Image Styles
        2. 6.3.2.2. Image Style Requirements
        3. 6.3.2.3. Maximum Upload Size
          1. 6.3.2.3.1. settings.php
          2. 6.3.2.3.2. .htaccess
          3. 6.3.2.3.3. php.ini or php5.ini
    4. 6.4. PERMISSIONS
      1. 6.4.1. Revisions
    5. 6.5. DIGGING DEEPER INTO FIELDS
      1. 6.5.1. Fields
      2. 6.5.2. Field Types (Type of Data to Store)
      3. 6.5.3. Widgets (Form Element)
      4. 6.5.4. Allowed Values List
    6. 6.6. CONTENT CONSTRUCTION KIT (CCK)
    7. 6.7. VIEWS
    8. 6.8. ADMINISTERING NODES
    9. 6.9. CONTENT MODERATION
      1. 6.9.1. Quick and Easy Moderation
    10. 6.10. NODES IN A NUTSHELL
    11. 6.11. COMMENTS
    12. 6.12. PERMISSIONS
      1. 6.12.1. Comment Administration
      2. 6.12.2. Comment Administration Page
      3. 6.12.3. Comment Approval Queue (A.K.A Comment Moderation)
      4. 6.12.4. Comment Form
      5. 6.12.5. Allowing Rich Text Comments
      6. 6.12.6. WYSIWYG
    13. 6.13. SPAM
    14. 6.14. RSS AGGREGATION
      1. 6.14.1. Displaying the Feed
      2. 6.14.2. Configuring the Aggregation Settings
    15. 6.15. SUMMARY
  12. 7. User Management
    1. 7.1. CREATING USER ACCOUNTS
      1. 7.1.1. People
      2. 7.1.2. Anonymous Users
    2. 7.2. CREATING ACCOUNTS
      1. 7.2.1. Approving Accounts in Moderation
      2. 7.2.2. Setting a Password During Registration
    3. 7.3. CANCELING ACCOUNTS
    4. 7.4. SETTING UP ACCOUNT E-MAILS
    5. 7.5. USING OPENID
      1. 7.5.1.
        1. 7.5.1.1. What If a User Doesn't Have an Account?
        2. 7.5.1.2. What If Your Users Don't Have OpenIDs?
    6. 7.6. CREATING ROLES AND PERMISSIONS
      1. 7.6.1. Administrator Role
    7. 7.7. CREATING CUSTOM USER PROFILES
      1. 7.7.1. Profiles in Drupal 7
      2. 7.7.2. User Profiles vs. User Fields
        1. 7.7.2.1. Give It to Me Straight
      3. 7.7.3. Using Fields for Profiles
      4. 7.7.4. Using the Core Profile Module
      5. 7.7.5. Controlling Access to User Profiles
      6. 7.7.6. Hidden Fields
      7. 7.7.7. Visibility Options Summarized
    8. 7.8. TRACKING USER ACTIVITY
      1. 7.8.1. Using Views to Create Custom Tracking Pages and Blocks
    9. 7.9. CUSTOM ADMINISTRATION PAGES WITH VIEWS
    10. 7.10. USER SESSIONS
      1. 7.10.1. Forcing Sessions to Expire
        1. 7.10.1.1. The Short Answer
        2. 7.10.1.2. The Longer and More Detailed Answer
    11. 7.11. SUMMARY
  13. 8. Taxonomy
    1. 8.1. IN SIMPLE TERMS
    2. 8.2. TERMINOLOGY
    3. 8.3. VOCABULARIES
    4. 8.4. TERMS
      1. 8.4.1. Advanced Options
        1. 8.4.1.1. Weight
    5. 8.5. USING TERMS ON YOUR CONTENT
    6. 8.6. TAXONOMY TERM FIELD SETTINGS
      1. 8.6.1.
        1. 8.6.1.1. Requiring a Term to be Selected
        2. 8.6.1.2. Allowing Multiple Terms
        3. 8.6.1.3. Allowing Users to Freely Add Terms (freetagging)
    7. 8.7. A TERM'S PARENT/CHILD RELATIONSHIP
    8. 8.8. USING VIEWS TO DISPLAY TERM PAGES
      1. 8.8.1. Display Multiple Terms on a Single Page
    9. 8.9. API
    10. 8.10. THEMING CONSIDERATIONS
      1. 8.10.1. Customizing Each Section
        1. 8.10.1.1. Fields
        2. 8.10.1.2. Individually Themed Landing Pages
        3. 8.10.1.3. Views
    11. 8.11. USEFUL CONTRIBUTED MODULES
      1. 8.11.1.
        1. 8.11.1.1. Menus from Taxonomy
        2. 8.11.1.2. Interface
        3. 8.11.1.3. Administration
    12. 8.12. SUMMARY
  14. 9. Search, Performance, Statistics, and Reporting
    1. 9.1. SEARCH
      1. 9.1.1. Indexing Your Content
      2. 9.1.2. Advanced Search Settings
      3. 9.1.3. Indexing Settings
      4. 9.1.4. CJK Handling
      5. 9.1.5. Content Ranking
      6. 9.1.6. Faceted Search
      7. 9.1.7. Outsourcing Search
      8. 9.1.8. If You Don't Want to Outsource
    2. 9.2. PERFORMANCE
      1. 9.2.1. Caching
      2. 9.2.2. Cache Blocks
      3. 9.2.3. Page Cache for Anonymous Users
      4. 9.2.4. Minimum Cache Lifetime
      5. 9.2.5. Bandwidth Optimization
      6. 9.2.6. Clearing Cached Data
      7. 9.2.7. The Need for Speed
    3. 9.3. REPORTING
      1. 9.3.1. Status Report
      2. 9.3.2. Recent Log Entries
        1. 9.3.2.1. Syslog
        2. 9.3.2.2. Using Syslog for Database Logging
    4. 9.4. STATISTICS
      1. 9.4.1. Access Log
      2. 9.4.2. Content Views
      3. 9.4.3. Performance Considerations
    5. 9.5. SUMMARY
  15. 10. Triggers, Actions, Workflow, and Rules
    1. 10.1. TRIGGERS AND ACTIONS
      1. 10.1.1. Working with Actions
      2. 10.1.2. Working with Triggers
      3. 10.1.3. Next Steps
    2. 10.2. WORKFLOW
    3. 10.3. RULES
    4. 10.4. FEATURES OF THE RULES MODULE
    5. 10.5. CONDITIONS
    6. 10.6. SCHEDULER AND RULE SETS
    7. 10.7. INPUT EVALUATORS
    8. 10.8. SUMMARY
  16. 11. Views
    1. 11.1. ADVANCED HELP
    2. 11.2. OVERVIEW OF VIEWS
    3. 11.3. THE FRONTPAGE VIEW
      1. 11.3.1. Explore the Frontpage View
    4. 11.4. DISPLAYS
      1. 11.4.1.
        1. 11.4.1.1. Page Display
        2. 11.4.1.2. Feed Display
        3. 11.4.1.3. Why All Displays Are the Same
        4. 11.4.1.4. Overrides
    5. 11.5. STYLE SETTINGS
      1. 11.5.1.
        1. 11.5.1.1. Row Style
        2. 11.5.1.2. Style
    6. 11.6. CREATING A PHOTO GALLERY
    7. 11.7. ARGUMENTS
      1. 11.7.1.
        1. 11.7.1.1. Link the User's Name to Their Photo Gallery
    8. 11.8. EXPOSED FILTERS
      1. 11.8.1. Exposed Items in a Block
      2. 11.8.2. Making Your View Accessible via a Tab
    9. 11.9. RELATIONSHIPS
    10. 11.10. PERMISSIONS
      1. 11.10.1. All-Views Permissions
      2. 11.10.2. Per-View Permissions
    11. 11.11. CACHING (AKA PERFORMANCE)
      1. 11.11.1. Caching
      2. 11.11.2. Block Caching
      3. 11.11.3. Best Practices
    12. 11.12. ADVANCED VIEWS
    13. 11.13. SUMMARY
  17. 12. Internationalization
    1. 12.1. A BIT OF TERMINOLOGY
    2. 12.2. LOCALIZING
      1. 12.2.1. Regional Settings
      2. 12.2.2. Date and Time
      3. 12.2.3. Localizing Your Site's Interface
        1. 12.2.3.1. Portable Object (.po) Files
        2. 12.2.3.2. The Current State of Drupal Translation
      4. 12.2.4. Your Site's Primary Language
        1. 12.2.4.1. Accessing Your Localized Site
      5. 12.2.5. Language Negotiation
        1. 12.2.5.1. URL
        2. 12.2.5.2. Session
        3. 12.2.5.3. User
        4. 12.2.5.4. Browser
        5. 12.2.5.5. Content
      6. 12.2.6. Completing Your Site's Localization
        1. 12.2.6.1. Notes on String Translation
      7. 12.2.7. Making Translation Easy with the L10N Client
    3. 12.3. TRANSLATING YOUR CONTENT
    4. 12.4. BEYOND THE BASICS
    5. 12.5. SUMMARY
  18. 13. Theming
    1. 13.1. ADMINISTERING THEMES
      1. 13.1.1. Installing New Themes
        1. 13.1.1.1. Administration Theme
      2. 13.1.2. Configuring Your Themes
        1. 13.1.2.1. Theme Settings
    2. 13.2. CUSTOM THEMING
      1. 13.2.1.
        1. 13.2.1.1. Look Ma, No HTML!
      2. 13.2.2. Template Files
        1. 13.2.2.1. Learning How to Override
        2. 13.2.2.2. The Theme Registry
      3. 13.2.3. Theme Functions
        1. 13.2.3.1. How to Override Theme Functions
        2. 13.2.3.2. Template.php
        3. 13.2.3.3. Preprocess Functions
      4. 13.2.4. Reviewing the Last Five Exercises
    3. 13.3. SUB-THEMES
      1. 13.3.1. Zen Base Theme
    4. 13.4. .INFO FILE
      1. 13.4.1. Removing Theme Settings
      2. 13.4.2. Style Sheets
      3. 13.4.3. JavaScript
      4. 13.4.4. Regions
        1. 13.4.4.1. Creating Custom Regions
    5. 13.5. TEMPLATE FILES (.TPL.PHP)
      1. 13.5.1. page.tpl.php
      2. 13.5.2. node.tpl.php
      3. 13.5.3. comment.tpl.php
      4. 13.5.4. block.tpl.php
      5. 13.5.5. Template Suggestions
    6. 13.6. PREPROCESS FUNCTIONS
      1. 13.6.1. Adding New Variables
      2. 13.6.2. Template Suggestions
    7. 13.7. SWAPPING THEME FUNCTIONS AND TEMPLATE FILES
      1. 13.7.1. Moving a Theme Function to a Template File
      2. 13.7.2. Moving a Template File to a Theme Function
    8. 13.8. THEME REGISTRY
      1. 13.8.1.
        1. 13.8.1.1. Template Variables
        2. 13.8.1.2. Theme Registry
    9. 13.9. THEME ENGINES
      1. 13.9.1.
        1. 13.9.1.1. Which Engine Does Your Theme Use?
    10. 13.10. SUMMARY
  19. 14. Contributed Modules
    1. 14.1. CONTRIBUTED AND CUSTOM MODULES
    2. 14.2. DETERMINING YOUR NEEDS
    3. 14.3. FULFILLING YOUR NEEDS
      1. 14.3.1. Lullabot Podcast
      2. 14.3.2. Top Drupal Modules
      3. 14.3.3. Showcases
      4. 14.3.4. Planet Drupal
    4. 14.4. FINDING MODULES
      1. 14.4.1. Search Drupal.org
        1. 14.4.1.1. Filter by Compatibility
        2. 14.4.1.2. Sort by
        3. 14.4.1.3. Recommendations Block
        4. 14.4.1.4. Projects
      2. 14.4.2. Google
      3. 14.4.3. Drupalmodules.com
      4. 14.4.4. IRC and the Drupal Community
      5. 14.4.5. RSS Feeds
      6. 14.4.6. Twitter
    5. 14.5. IS IT THE RIGHT MODULE?
      1. 14.5.1. Project Page
        1. 14.5.1.1. Issues Queue
        2. 14.5.1.2. Bug Reports
        3. 14.5.1.3. Usage Statistics
        4. 14.5.1.4. Developer's List, CVS Commits, and Reputation
      2. 14.5.2. Google
      3. 14.5.3. Coder Module
      4. 14.5.4. Tests
    6. 14.6. BE A FOLLOWER
      1. 14.6.1. Take It Slow
        1. 14.6.1.1. Take Your Time
        2. 14.6.1.2. Uninstall, Don't Just Delete
      2. 14.6.2. Set Up a Development Environment
      3. 14.6.3. Avoid the Buffet
    7. 14.7. SUMMARY
  20. 15. Custom Modules
    1. 15.1. WHAT IS A MODULE?
    2. 15.2. HOOKS
      1. 15.2.1. More Information
    3. 15.3. MODULES STEP BY STEP
      1. 15.3.1. Step 1: Choose a Name
      2. 15.3.2. Step 2: Create the .info File
      3. 15.3.3. Step 3: Create the .module File
    4. 15.4. CREATING A PAGE
      1. 15.4.1. Capturing Custom URLs with hook_menu
    5. 15.5. MODIFYING EXISTING MODULES
      1. 15.5.1.
        1. 15.5.1.1. To Modify or Not to Modify, That Is the Question
      2. 15.5.2. Patching
      3. 15.5.3. Creating a Patch
      4. 15.5.4. The Value of the Patch
      5. 15.5.5. When to Modify
    6. 15.6. SUMMARY
  21. 16. Development Hooks
    1. 16.1. HOOKS: A MODULE'S STARTING POINT
    2. 16.2. COMMUNITY DOCUMENTATION
    3. 16.3. THE HOOKS
      1. 16.3.1. hook_menu
        1. 16.3.1.1. hook_permission
        2. 16.3.1.2. hook_node_*
        3. 16.3.1.3. hook_block
        4. 16.3.1.4. hook_user
        5. 16.3.1.5. hook_filter_info
        6. 16.3.1.6. hook_form_alter
        7. 16.3.1.7. hook_help
    4. 16.4. MAKING YOUR MODULES THEMEABLE
      1. 16.4.1. The t() Function
        1. 16.4.1.1. format_plural
      2. 16.4.2. Theme Functions and Template Files
        1. 16.4.2.1. Theme Functions
        2. 16.4.2.2. Template Files
        3. 16.4.2.3. hook_theme
    5. 16.5. SUMMARY
  22. 17. Module Development Start to Finish
    1. 17.1. THE MODULE
      1. 17.1.1.
        1. 17.1.1.1. Before You Build That Module
      2. 17.1.2. Beginning Your Module
      3. 17.1.3. Implementing a hook
    2. 17.2. ADDING CUSTOM CONFIGURATION SETTINGS
      1. 17.2.1. Custom Module Settings
      2. 17.2.2. How Did it Become an Option at Configuration?
      3. 17.2.3. How Did the Settings Form Appear?
      4. 17.2.4. Where Are the Settings Saved?
      5. 17.2.5. Filtering on Multiple Words
      6. 17.2.6. A Quick Review of the New PHP Code
    3. 17.3. HELPING YOUR USERS
    4. 17.4. PERMISSION HANDLING
    5. 17.5. STORING DATA IN A CUSTOM TABLE
      1. 17.5.1. Database Abstraction Layer
        1. 17.5.1.1. Schema API
    6. 17.6. DRUPAL QUERY FUNCTIONS
      1. 17.6.1.
        1. 17.6.1.1. Recording the Count
    7. 17.7. DISPLAYING THE RESULTS ON THE USER'S PROFILE
      1. 17.7.1.
        1. 17.7.1.1. Recap of db_select
        2. 17.7.1.2. Why db_select?
    8. 17.8. DATABASE SUMMARY
    9. 17.9. CREATING A BULLETPROOF SITE WITH SIMPLETEST
      1. 17.9.1. Test Driven Development
      2. 17.9.2. How SimpleTest Performs Its Testing
      3. 17.9.3. Writing Your Own SimpleTest
      4. 17.9.4. SimpleTest Assertions
        1. 17.9.4.1. Naming Test Functions
        2. 17.9.4.2. setUp()
      5. 17.9.5. Adding the Tests to Your Module
      6. 17.9.6. Summing Up SimpleTest
    10. 17.10. SUMMARY
  23. 18. Advanced Drupal Installations
    1. 18.1. DRUSH
      1. 18.1.1. But Wait There's More!
    2. 18.2. USING CVS TO MANAGE DRUPAL
      1. 18.2.1. What is CVS?
      2. 18.2.2. What is SVN?
      3. 18.2.3. Installing CVS
      4. 18.2.4. Installing and Upgrading Drupal using CVS
      5. 18.2.5. Understanding CVS Tags
      6. 18.2.6. How Does This Relate to CVS?
      7. 18.2.7. Branches and Tags
      8. 18.2.8. Installing Modules from the CVS Repository
    3. 18.3. ONE DRUPAL, MANY WEBSITES
      1. 18.3.1. Example 1: Multiple Independent Websites
      2. 18.3.2. Example 2: Multiple Related Websites
      3. 18.3.3. Sites.php
    4. 18.4. SETTINGS.PHP
      1. 18.4.1. $databases
      2. 18.4.2. Scalability
      3. 18.4.3. $db_prefix
      4. 18.4.4. $baseurl
      5. 18.4.5. $ini_set
        1. 18.4.5.1. Killing the White Screen of Death
      6. 18.4.6. $reverse_proxy
      7. 18.4.7. Variable Overrides
      8. 18.4.8. String Overrides
      9. 18.4.9. IP Blocking
    5. 18.5. SUMMARY
  24. 19. Preflight Checklist
    1. 19.1. PREFLIGHT CHECKLIST
      1. 19.1.1. Site Information
      2. 19.1.2. User Settings
      3. 19.1.3. Site Maintenance
      4. 19.1.4. SPAM
      5. 19.1.5. SEO
      6. 19.1.6. Search
      7. 19.1.7. Performance
      8. 19.1.8. Disaster Recovery
    2. 19.2. SEO
      1. 19.2.1. SEO Best Practices
      2. 19.2.2. The Importance of URLs
      3. 19.2.3. XML Sitemap
      4. 19.2.4. Submitting Your Sitemap to Search Engines
        1. 19.2.4.1. Adding Your Sitemap to Google
        2. 19.2.4.2. Keeping Your Site's Information Up-to-Date
    3. 19.3. ANALYZING YOUR SITE WITH GOOGLE
      1. 19.3.1.
        1. 19.3.1.1. Google Analytics Module's Configuration Settings
    4. 19.4. DASHBOARD
    5. 19.5. SUMMARY
  25. A. Exercises and Answers
    1. A.1. CHAPTER 1
    2. A.2. CHAPTER 2
    3. A.3. CHAPTER 3
    4. A.4. CHAPTER 4
    5. A.5. CHAPTER 5
    6. A.6. CHAPTER 6
    7. A.7. CHAPTER 7
    8. A.8. CHAPTER 8
    9. A.9. CHAPTER 9
    10. A.10. CHAPTER 10
    11. A.11. CHAPTER 11
    12. A.12. CHAPTER 12
    13. A.13. CHAPTER 13
    14. A.14. CHAPTER 14
    15. A.15. CHAPTER 15
    16. A.16. CHAPTER 16
    17. A.17. CHAPTER 17
    18. A.18. CHAPTER 18
    19. A.19. CHAPTER 19