Pro Drupal DevelopmentDrupal 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.
|
Avis des internautes - Rédiger un commentaire
Avis des utilisateurs
5 étoiles |
| ||
4 étoiles |
| ||
3 étoiles |
| ||
2 étoiles |
| ||
1 étoile |
|
LibraryThing Review
Avis d'utilisateur - BrauerFamily - LibraryThingThis 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. Consulter l'avis complet
Table des matières
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 |
13 | |
14 | |
16 | |
17 | |
19 | |
21 | |
25 | |
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 |
399 | |
405 | |