Pro Drupal Development

Front Cover
Apress, Sep 9, 2007 - Computers - 428 pages
14 Reviews

Drupal is one of the most popular content management systems in use today. With it, you can create a variety of community-driven sites, including blogs, forums, wiki-style sites, and much more. Pro Drupal Development was written to arm you with knowledge to customize your Drupal installation however you see fit. The book assumes that you already possess the knowledge to install and bring a standard installation online. Then authors John VanDyk and Matt Westgate delve into Drupal internals, showing you how to truly take advantage of its powerful architecture.

Youll learn how to create your own modules, develop your own themes, and produce your own filters. You'll learn the inner workings of each key part of Drupal, including user management, sessions, the node system, caching, and the various APIs available to you. Of course, your Drupal-powered site isnt effective until you can efficiently serve pages to your visitors. As such, the authors have included the information you need to optimize your Drupal installation to perform well under high-load situations. Also featured is information on Drupal security and best practices, as well as integration of Ajax and the internationalization of your Drupal web site. Simply put, if you are working with Drupal at all, then you need this book.

  • This book is written by Drupal core developers.
  • Drupal architecture and behavior are mapped out visually.
  • Common pitfalls are identified and addressed.
  • Chapters provide regular discussion and reference to why things work they way they do, not just how.
  • Features a foreword by Dries Buytaert, Drupal founder.
 

What people are saying - Write a review

User ratings

5 stars
7
4 stars
3
3 stars
3
2 stars
0
1 star
1

LibraryThing Review

User Review  - BrauerFamily - LibraryThing

This must-have book for any aspiring Drupal developer or old pro is a great way to learn Drupal programming as well as reference for review of concepts that one doesn't use day in and day out. It is not a how to build a site book rather it is a programming book. Read full review

User Review - Flag as inappropriate

I downloaded Drupal to power some of my property websites. (www.redsun.com.pk and www.pristinepakistan.com) After spending DAYS trying to get what I wanted out of it, I finally had to admit defeat. I went and used other software such as Joomla and SMF instead and I realised that the learning curve was not just for Drupal but for these types of Content Management/Blogging/Forum type software. Drupal would have been my first choice had I bought this book and spent some time on actually learning about it properly. 

Contents

The prepare op
200
hook_filter_tips
201
Protecting Against Malicious Data
202
Summary
203
Searching and Indexing Content
204
Using the Search HTML Indexer
210
How the Indexer Works
211
Summary
219

Theming the Data
13
Writing a Module
14
Implementing a Hook
16
Adding ModuleSpecific Settings
17
Adding the Data Entry Form
19
Storing Data in a Database Table
21
Further Steps
25
ModuleSpecific Settings
27
Defining Your Own Administration Section
28
Presenting a Settings Form to the User
30
Validating UserSubmitted Settings
31
Storing Settings
33
Retrieving Stored Values with variable_get
34
The Menu System
35
Callback Arguments
40
Menu Nesting
42
Access Control
43
Kinds of Menu Items
44
Common Tasks
46
Programmatically Modifying Existing Menus
48
Using menumodule
50
Common Mistakes
51
Summary
52
Working with Databases
53
Connecting to the Database
55
Retrieving Query Results
57
Getting Results for Paged Display
58
Exposing Queries to Other Modules with hook_db_rewrite_sql
59
Wrapping Queries
60
Connecting to Multiple Databases Within Drupal
61
Using Module install Files
62
Creating Tables
63
Deleting Tables on Uninstall
65
Summary
66
Working with Users
67
Storing Data in the user Object
69
Testing If a User Is Logged In
70
Understanding hook_userview
71
The User Registration Process
72
Using profilemodule to Collect User Information
74
The Login Process
75
Adding Data to the user Object
77
Providing User Information Categories
80
Simple External Authentication
83
External Authentication with Server Provided
84
The info Hook
86
Working with Nodes
88
Not Everything Is a Node
90
Creating a Node Module
91
Creating the info File
92
Providing Information About Our Node Type
93
Defining a Menu Callback
94
Defining Node TypeSpecific Permissions with hook_perm
95
Customizing the Node Form for Our Node Type
96
Adding Filter Format Support
97
Validating Fields with hook_validate
98
Keeping Data Current with hook_update
99
hook_view
100
Manipulating Nodes That Are Not Our Type with hook_nodeapi
103
How Nodes Are Stored
104
Creating a Node Type with CCK
107
Defining Node Grants
108
The Node Access Process
109
Summary
111
The Theme System
113
Themes
115
Installing a Theme
117
Understanding Template Files
121
nodetplphp
124
blocktplphp
126
commenttplphp
127
boxtplphp
128
Defining Additional Template Files
131
Adding and Manipulating Template Variables
132
Defining New Block Regions
135
Theming Drupals Forms
136
Working with Blocks
137
Block Configuration Options
138
Block Placement
139
Defining a Block
140
Understanding How Blocks Are Themed
141
Using the Block Hook
142
Building a Block
143
Adding a Pending Users Block
150
Enabling a Block When a Module Is Installed
151
Displaying a Block to Anonymous Users Only
152
The Form API
154
Initializing the Process
155
Setting a Token
156
Looking for a Validation Function
157
Allowing Modules to Alter the Form Before Its Built
158
Allowing Modules to Modify the Form Before Its Rendered
159
Submitting the Form
160
Form Properties
163
Fieldsets
164
Theming Forms
166
Specifying Validation and Submission Functions with hook_forms
168
Call Order of Theme Validation and Submission Functions
169
Writing a Submit Function
172
Submitting Forms Pro grammatically with drupal_execute
173
Form API Properties
178
Properties Added to All Elements
179
Properties Allowed in All Elements
180
Form Elements
182
Summary
191
Manipulating User Input The Filter System
192
Installing a Filter
195
Creating a Custom Filter
197
The list op
199
Working with Files
221
Public Files
222
Private Files
223
Media Handling
224
Other Generic FileHandling Modules
225
Database Schema
226
Summary
227
Working with Taxonomy
229
Vocabularies
230
Kinds of Taxonomy
232
Multiple Hierarchical
233
Specifying Depth for Hierarchical Vocabularies
234
Automatic RSS Feeds
235
ModuleBased Vocabularies
237
Providing Custom Paths for Terms
238
Common Tasks
240
Building Your Own Taxonomy Queries
241
Taxonomy Functions
244
Retrieving Information About Terms
245
Adding Modifying and Deleting Terms
246
Retrieving Information About Term Synonyms
248
Finding Nodes with Certain Terms
249
Summary
250
Caching
252
Knowing When to Cache
253
How Caching Is Used Within Drupal Core
254
Pages
255
Using the Cache API
260
Summary
261
Sessions
262
Usage
263
In htaccess
264
Requiring Cookies
265
Session Life Cycle
266
Session Conversations
268
Changing the Name of the Session
269
Using jQuery
270
The Old Way
271
How jQuery Works
272
Using a CSS Class Selector
273
jQuery Within Drupal
274
Building a jQuery Voting Widget
276
Building the Module
280
Ways to Extend This Module
287
Localization
289
Replacing Builtin Strings with Custom Strings
292
Exporting Your Translation
296
Portable Object Templates
297
Generating Your Own pot Files with extractorphp
298
Importing an Existing Translation
299
Additional Resources
301
XMLRPC
303
Getting the Time
304
Getting the Name of a State
305
Handling XMLRPC Client Errors
306
A Simple XMLRPC Server
307
Summary
311
Writing Secure Code
313
Thinking About Data Types
314
Using check_plain and t
315
Using filter_xss
318
Using filter_xss_admin
319
Handling URLs Securely
320
Keeping Private Data Private with db_rewrite_sql
323
Permissions and Page Callbacks
325
SSL Support
326
Ajax Security
327
Form API Security
328
Development Best Practices
329
Function Calls
330
Arrays
331
PHP Comments
332
Documentation Examples
333
Function Documentation
334
Checking Your Coding Style Programmatically
335
Taking Advantage of Version Control
336
Using CVSAware Drupal
337
Checking Out Drupal from CVS
338
Tags and Branches
339
Updating Code with CVS
340
Tracking Drupal Code Changes
341
Resolving CVS Conflicts
342
Cleanly Modifying Core Code
343
Creating a Patch
344
Mixing SVN with CVS for Project Management
345
Displaying Queries
346
Other Uses for the devel Module
347
The Module Builder Module
348
Summary
350
Optimizing Drupal
351
Other Web Server Optimizations
354
Database Bottlenecks
357
DrupalSpecific Optimizations
361
Bandwidth Optimization
362
Pruning Error Reporting Logs
363
Architectures
365
Separate Database Server and a Web Server Cluster
366
Multiple Database Servers
367
Summary
368
Installation Profiles
370
How Installation Profiles Work
371
Indicating Which Modules to Enable
373
Final Setup
374
Summary
377
Database Table Reference
378
Resources
399
Index
405
Copyright

Other editions - View all

Common terms and phrases

About the author (2007)

John K. VanDyk has been a Drupal developer since 2004. In 2005, he organized the first Drupal conference in Antwerp, Belgium, with Drupal founder Dries Buytaert. John has contributed several modules to Drupal including the actions, workflow, publish, subscribe, and pubcookie modules and has been instrumental in the design of Drupal's Content Construction Kit. John's day job is as an entomology professor and systems analyst at Iowa State University, where he teaches undergraduate courses about insects. In his spare time, when not hacking on Drupal, John enjoys squash hunting and raising children.

Bibliographic information