About the Authors |
|
iii | |
Introduction |
|
v | |
Who Should Read This Book |
|
v | |
How This Book Is Organized |
|
vi | |
Icons |
|
vii | |
Minimum Requirements |
|
viii | |
Where to Go from Here |
|
viii | |
|
|
1 | (92) |
|
Chapter 1 Introducing the Drupal Content Management System |
|
|
3 | (18) |
|
Discovering Open-Source Content Management |
|
|
3 | (6) |
|
|
4 | (1) |
|
|
4 | (1) |
|
Why should you use a CMS? |
|
|
5 | (1) |
|
Empowering content authors |
|
|
5 | (1) |
|
Controlling content authors |
|
|
6 | (2) |
|
Managing content presentation |
|
|
8 | (1) |
|
Why should you use open source? |
|
|
8 | (1) |
|
|
9 | (7) |
|
Considering Drupal's strengths and weaknesses |
|
|
9 | (1) |
|
The Drupal open-source license |
|
|
10 | (1) |
|
|
10 | (1) |
|
Programming languages used |
|
|
11 | (1) |
|
Fundamental architecture concepts |
|
|
11 | (4) |
|
|
15 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
16 | (4) |
|
|
17 | (1) |
|
Drupal core project maintainers |
|
|
17 | (1) |
|
Drupal module project maintainers |
|
|
18 | (1) |
|
Important Drupal Web sites |
|
|
18 | (1) |
|
How to participate in the community |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (1) |
|
Chapter 2 Obtaining and Installing Drupal |
|
|
21 | (20) |
|
Getting the Installation Files |
|
|
21 | (7) |
|
Exploring the Drupal.org site |
|
|
24 | (2) |
|
Knowing which files you need |
|
|
26 | (2) |
|
|
28 | (1) |
|
|
28 | (1) |
|
Requirements for site visitors and administrators |
|
|
29 | (1) |
|
|
29 | (10) |
|
Creating a local development site |
|
|
29 | (2) |
|
Installing on a Web-hosting service |
|
|
31 | (1) |
|
Running the Drupal installer |
|
|
32 | (7) |
|
|
39 | (2) |
|
Chapter 3 Taking Your First Look at Drupal |
|
|
41 | (22) |
|
The Front End: Drupal's Public Interface |
|
|
41 | (9) |
|
|
45 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
48 | (2) |
|
The Back End: Drupal's Admin Interface |
|
|
50 | (11) |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
|
|
53 | (1) |
|
|
54 | (1) |
|
|
54 | (1) |
|
|
55 | (1) |
|
|
56 | (1) |
|
|
57 | (1) |
|
|
58 | (1) |
|
Working with the dashboard |
|
|
58 | (1) |
|
Customizing the admin interface |
|
|
58 | (3) |
|
|
61 | (2) |
|
Chapter 4 Configuring Your Drupal Site |
|
|
63 | (30) |
|
|
63 | (13) |
|
Modifying site information |
|
|
65 | (2) |
|
Configuring Regional and Language settings |
|
|
67 | (1) |
|
Options for error handling |
|
|
68 | (1) |
|
Configuring media management |
|
|
69 | (2) |
|
|
71 | (4) |
|
|
75 | (1) |
|
|
76 | (4) |
|
Global theme configuration |
|
|
76 | (2) |
|
Theme-specific configuration |
|
|
78 | (2) |
|
Managing Search and URL Settings |
|
|
80 | (6) |
|
|
80 | (2) |
|
|
82 | (2) |
|
|
84 | (2) |
|
Setting Up Logging and Reporting |
|
|
86 | (5) |
|
|
87 | (1) |
|
Using the Database Logging module |
|
|
87 | (1) |
|
Configuring the Statistics module |
|
|
88 | (2) |
|
Managing update notifications |
|
|
90 | (1) |
|
Configuring Your Site's RSS Feeds |
|
|
91 | (1) |
|
|
92 | (1) |
|
Part II Using Drupal's Site Building Tools |
|
|
93 | (64) |
|
Chapter 5 The Default Drupal Themes |
|
|
95 | (10) |
|
Working with the Theme Manager |
|
|
95 | (2) |
|
Reviewing the Default Themes |
|
|
97 | (6) |
|
|
98 | (2) |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
103 | (2) |
|
Chapter 6 Working with the Default Modules |
|
|
105 | (18) |
|
Enabling and Disabling Modules |
|
|
105 | (3) |
|
|
108 | (1) |
|
Reviewing the Default Modules |
|
|
109 | (12) |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
111 | (1) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
|
115 | (1) |
|
|
115 | (1) |
|
|
115 | (1) |
|
|
115 | (1) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
121 | (2) |
|
Chapter 7 Working with Blocks |
|
|
123 | (10) |
|
|
123 | (3) |
|
Overview of the Blocks Manager |
|
|
126 | (5) |
|
Understanding the key concepts |
|
|
126 | (2) |
|
Managing and configuring blocks |
|
|
128 | (3) |
|
Reviewing the Default Blocks |
|
|
131 | (1) |
|
|
132 | (1) |
|
Chapter 8 Working with the Menus Manager |
|
|
133 | (14) |
|
Overview of the Menus Manager |
|
|
133 | (2) |
|
Creating and Managing Menus |
|
|
135 | (7) |
|
|
135 | (1) |
|
|
136 | (1) |
|
Configuring global Menu module settings |
|
|
137 | (3) |
|
Configuring menus for content types |
|
|
140 | (2) |
|
Creating and Managing Menu Items |
|
|
142 | (4) |
|
|
143 | (2) |
|
|
145 | (1) |
|
|
146 | (1) |
|
Chapter 9 Using Actions and Triggers |
|
|
147 | (10) |
|
The Default Simple Actions |
|
|
147 | (2) |
|
Adding an Advanced Action |
|
|
149 | (4) |
|
Introducing Advanced actions |
|
|
150 | (1) |
|
Creating an Advanced action |
|
|
151 | (2) |
|
Assigning Triggers to Actions |
|
|
153 | (2) |
|
|
153 | (1) |
|
Assigning the advanced action's trigger |
|
|
154 | (1) |
|
|
155 | (2) |
|
Part III Working with Content |
|
|
157 | (170) |
|
Chapter 10 Content Management with Drupal |
|
|
159 | (42) |
|
Understanding the Key Concepts |
|
|
159 | (3) |
|
|
159 | (1) |
|
|
160 | (1) |
|
|
160 | (1) |
|
Versioning of content items |
|
|
161 | (1) |
|
Publish status and lifecycles |
|
|
161 | (1) |
|
|
162 | (1) |
|
Understanding Drupal Content Types and Fields |
|
|
162 | (14) |
|
Discovering the default content types |
|
|
163 | (1) |
|
|
163 | (1) |
|
|
164 | (1) |
|
|
165 | (1) |
|
|
165 | (1) |
|
|
166 | (1) |
|
|
166 | (1) |
|
|
166 | (4) |
|
|
170 | (1) |
|
|
170 | (2) |
|
|
172 | (1) |
|
Editing basic content-type options |
|
|
172 | (2) |
|
|
174 | (1) |
|
|
175 | (1) |
|
Controlling How Content Is Created |
|
|
176 | (10) |
|
Configuring standard content-item defaults |
|
|
177 | (1) |
|
|
177 | (1) |
|
|
178 | (2) |
|
|
180 | (1) |
|
|
180 | (2) |
|
|
182 | (1) |
|
Understanding field settings and field instance settings |
|
|
183 | (1) |
|
|
183 | (1) |
|
|
184 | (1) |
|
|
185 | (1) |
|
Limiting the length of a text field |
|
|
185 | (1) |
|
|
186 | (9) |
|
Understanding authoring basics |
|
|
186 | (2) |
|
Working with the standard content item options |
|
|
188 | (1) |
|
|
188 | (2) |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
192 | (1) |
|
|
192 | (2) |
|
|
194 | (1) |
|
Managing Existing Content |
|
|
195 | (5) |
|
Publishing and unpublishing content |
|
|
197 | (1) |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
Chapter 11 Managing Taxonomies |
|
|
201 | (20) |
|
Understanding Key Concepts |
|
|
201 | (4) |
|
|
202 | (1) |
|
|
203 | (1) |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
|
205 | (1) |
|
Introducing the Taxonomy Manager |
|
|
205 | (3) |
|
Listing available vocabularies |
|
|
205 | (1) |
|
|
206 | (1) |
|
Viewing vocabulary fields |
|
|
207 | (1) |
|
|
208 | (7) |
|
Defining a new vocabulary |
|
|
209 | (1) |
|
Binding to a content type |
|
|
210 | (5) |
|
|
215 | (5) |
|
Adding new vocabulary terms |
|
|
216 | (2) |
|
Editing and deleting vocabulary terms |
|
|
218 | (2) |
|
|
220 | (1) |
|
Chapter 12 Formatting Content and Media |
|
|
221 | (26) |
|
Understanding Text Formatting |
|
|
221 | (7) |
|
Introducing text format management |
|
|
222 | (1) |
|
Creating and customizing text formats |
|
|
223 | (3) |
|
Controlling the use of text formats |
|
|
226 | (2) |
|
|
228 | (8) |
|
|
228 | (2) |
|
Configuring the image toolkit |
|
|
230 | (1) |
|
|
231 | (3) |
|
|
234 | (1) |
|
Applying image styles to user profile pictures |
|
|
234 | (1) |
|
Applying image styles to content fields |
|
|
234 | (2) |
|
|
236 | (3) |
|
|
236 | (1) |
|
|
237 | (1) |
|
Exploring contributed modules |
|
|
238 | (1) |
|
|
239 | (7) |
|
|
239 | (2) |
|
Creating Wysiwyg profiles |
|
|
241 | (5) |
|
|
246 | (1) |
|
Chapter 13 Managing the Front Page of Your Site |
|
|
247 | (10) |
|
Controlling the Front-Page Layout |
|
|
247 | (1) |
|
Using a Distinct Template for the Front Page |
|
|
248 | (2) |
|
Publishing Content on the Front Page |
|
|
250 | (1) |
|
Publishing Module Output on the Front Page |
|
|
251 | (3) |
|
Publishing content from modules |
|
|
252 | (1) |
|
Publishing content from custom blocks |
|
|
253 | (1) |
|
Publishing Blocks on the Front Page |
|
|
254 | (2) |
|
|
256 | (1) |
|
Chapter 14 Employing Advanced Content Management Techniques |
|
|
257 | (22) |
|
Creating Content Versions |
|
|
257 | (4) |
|
Understanding the business drivers for content versions |
|
|
257 | (1) |
|
Configuring content versioning |
|
|
258 | (3) |
|
Implementing Authoring Workflows |
|
|
261 | (3) |
|
Using Rules and Views for workflow |
|
|
261 | (2) |
|
Using Maestro for workflow |
|
|
263 | (1) |
|
Using the Workflow module |
|
|
264 | (1) |
|
|
264 | (7) |
|
Controlling access to commenting functions |
|
|
264 | (2) |
|
Thwarting robots with CAPTCHA and reCAPTCHA |
|
|
266 | (1) |
|
|
266 | (1) |
|
Using the reCAPTCHA module |
|
|
267 | (2) |
|
Automating comment moderation with Mollom |
|
|
269 | (2) |
|
Creating Content Hierarchies |
|
|
271 | (1) |
|
Structuring content relationships with the Book module |
|
|
272 | (1) |
|
Creating content hierarchies with taxonomies |
|
|
272 | (1) |
|
|
272 | (5) |
|
Introducing Drupal Web feeds |
|
|
273 | (1) |
|
Configuring content syndication |
|
|
274 | (3) |
|
|
277 | (2) |
|
Chapter 15 Working with the Comment Functionality |
|
|
279 | (14) |
|
Introducing the Comment Module |
|
|
279 | (7) |
|
Enabling and disabling the module |
|
|
280 | (1) |
|
|
280 | (3) |
|
Defining fields for comments |
|
|
283 | (3) |
|
Controlling the Styling of Comments |
|
|
286 | (2) |
|
Reviewing the default templates |
|
|
286 | (1) |
|
Reviewing comment.tpl.php |
|
|
286 | (1) |
|
Reviewing comment-wrapper.tpl.php |
|
|
287 | (1) |
|
Reviewing the default style sheets |
|
|
288 | (1) |
|
Reviewing the themable functions |
|
|
288 | (1) |
|
|
288 | (4) |
|
|
292 | (1) |
|
Chapter 16 Managing Blog Content |
|
|
293 | (14) |
|
Introducing the Blog Module |
|
|
293 | (5) |
|
Enabling and disabling the module |
|
|
296 | (1) |
|
|
297 | (1) |
|
|
298 | (7) |
|
|
298 | (4) |
|
|
302 | (1) |
|
|
302 | (3) |
|
Controlling the Styling of the Blog Module |
|
|
305 | (1) |
|
Using the Most Recent Blog Posts Block |
|
|
305 | (1) |
|
|
306 | (1) |
|
Chapter 17 Using the Book Module |
|
|
307 | (20) |
|
Introducing the Book Module |
|
|
307 | (7) |
|
Enabling and disabling the module |
|
|
309 | (1) |
|
|
310 | (4) |
|
Administering Books and Pages |
|
|
314 | (8) |
|
Adding a top-level book page |
|
|
315 | (2) |
|
|
317 | (1) |
|
|
318 | (2) |
|
|
320 | (2) |
|
Controlling the Styling of the Book Module |
|
|
322 | (2) |
|
Reviewing the default templates |
|
|
322 | (1) |
|
Reviewing book-all-books-block.tpl.php |
|
|
322 | (1) |
|
Reviewing book-export-html.tpl.php |
|
|
323 | (1) |
|
Reviewing book-navigation.tpl.php |
|
|
323 | (1) |
|
Reviewing book-node-export-html.tpl.php |
|
|
324 | (1) |
|
Reviewing the default style sheets |
|
|
324 | (1) |
|
Reviewing the themable functions |
|
|
324 | (1) |
|
Using the Book Navigation Block |
|
|
324 | (2) |
|
|
326 | (1) |
|
Part IV Working with Content-Related Modules |
|
|
327 | (106) |
|
Chapter 18 Using the Aggregator Module |
|
|
329 | (18) |
|
Introducing the Aggregator Module |
|
|
329 | (5) |
|
Enabling and disabling the module |
|
|
330 | (1) |
|
|
331 | (3) |
|
Administering the Aggregator |
|
|
334 | (8) |
|
Adding and deleting feed categories |
|
|
336 | (2) |
|
Adding and deleting feeds |
|
|
338 | (4) |
|
Controlling the Styling of the Aggregator |
|
|
342 | (3) |
|
Reviewing the default templates |
|
|
342 | (1) |
|
Reviewing aggregator-feed-source.tpl.php |
|
|
343 | (1) |
|
Reviewing aggregator-item.tpl.php |
|
|
343 | (1) |
|
Reviewing aggregator-summary-item.tpl.php |
|
|
344 | (1) |
|
Reviewing aggregator-summary-items.tpl.php |
|
|
344 | (1) |
|
Reviewing aggregator-wrapper.tpl.php |
|
|
344 | (1) |
|
Reviewing the default style sheets |
|
|
345 | (1) |
|
Reviewing the themable functions |
|
|
345 | (1) |
|
Using the Latest Items Block |
|
|
345 | (1) |
|
|
346 | (1) |
|
Chapter 19 Working with Forms |
|
|
347 | (20) |
|
Using Drupal's Contact Module |
|
|
347 | (6) |
|
Creating site-wide contact forms |
|
|
349 | (1) |
|
Creating user contact forms |
|
|
350 | (3) |
|
|
353 | (13) |
|
Installing and configuring the Webforms module |
|
|
354 | (2) |
|
Creating new forms with Webforms |
|
|
356 | (1) |
|
Adding new fields to a custom form |
|
|
357 | (3) |
|
Controlling submission settings |
|
|
360 | (4) |
|
Gathering data with Webforms |
|
|
364 | (2) |
|
|
366 | (1) |
|
Chapter 20 Using the Forum Module |
|
|
367 | (26) |
|
Introducing the Forum Module |
|
|
367 | (6) |
|
Enabling and disabling the module |
|
|
368 | (2) |
|
|
370 | (3) |
|
|
373 | (13) |
|
|
374 | (1) |
|
|
374 | (1) |
|
|
375 | (1) |
|
|
376 | (1) |
|
|
376 | (1) |
|
|
377 | (1) |
|
|
378 | (1) |
|
|
378 | (1) |
|
Working with forum topics |
|
|
379 | (1) |
|
|
380 | (4) |
|
|
384 | (1) |
|
|
384 | (2) |
|
Controlling the Styling of the Forum Module |
|
|
386 | (3) |
|
Reviewing the default templates |
|
|
386 | (1) |
|
Reviewing forum-icon.tpl.php |
|
|
387 | (1) |
|
Reviewing forum-list.tpl.php |
|
|
387 | (1) |
|
Reviewing forum-submitted.tpl.php |
|
|
388 | (1) |
|
Reviewing forum-topic-list.tpl.php |
|
|
388 | (1) |
|
|
389 | (1) |
|
Reviewing the default style sheets |
|
|
389 | (1) |
|
Using the Active Forum Topics Block |
|
|
389 | (2) |
|
Using the New Forum Topics Block |
|
|
391 | (1) |
|
|
392 | (1) |
|
Chapter 21 Using the Poll Module |
|
|
393 | (16) |
|
Introducing the Poll Module |
|
|
393 | (5) |
|
Enabling and disabling the module |
|
|
395 | (1) |
|
|
396 | (2) |
|
|
398 | (6) |
|
|
399 | (3) |
|
|
402 | (1) |
|
|
402 | (2) |
|
Controlling the Styling of the Poll Module |
|
|
404 | (3) |
|
Reviewing the default templates |
|
|
404 | (1) |
|
Reviewing poll-bar-block.tpl.php |
|
|
405 | (1) |
|
Reviewing poll-bar.tpl.php |
|
|
405 | (1) |
|
Reviewing poll-results-block.tpl.php |
|
|
406 | (1) |
|
Reviewing poll-results.tpl.php |
|
|
406 | (1) |
|
Reviewing poll-vote.tpl.php |
|
|
407 | (1) |
|
Reviewing the default style sheets |
|
|
407 | (1) |
|
Using the Most Recent Poll Block |
|
|
407 | (1) |
|
|
408 | (1) |
|
Chapter 22 Managing Multilingual Content |
|
|
409 | (24) |
|
Understanding Key Concepts |
|
|
409 | (3) |
|
|
410 | (1) |
|
Internationalization (i18n) |
|
|
410 | (1) |
|
|
410 | (1) |
|
|
411 | (1) |
|
|
411 | (1) |
|
|
411 | (1) |
|
|
412 | (1) |
|
|
412 | (1) |
|
Introducing Multilingual Content Management |
|
|
412 | (2) |
|
|
412 | (1) |
|
The Content translation module |
|
|
413 | (1) |
|
Drupal translation packages |
|
|
414 | (1) |
|
Enabling Multilingual Content |
|
|
414 | (5) |
|
Enabling multiple languages |
|
|
414 | (1) |
|
Enabling the Locale module |
|
|
414 | (1) |
|
|
415 | (1) |
|
Enabling multilingual content |
|
|
416 | (1) |
|
Enabling the Content translation module |
|
|
416 | (1) |
|
Configuring content types |
|
|
417 | (2) |
|
Authoring and Managing Multilingual Content |
|
|
419 | (5) |
|
Creating a new translation set |
|
|
419 | (3) |
|
Managing translation sets |
|
|
422 | (1) |
|
Managing translation synchronization |
|
|
423 | (1) |
|
Controlling Multilingual Content and Interface Presentation |
|
|
424 | (8) |
|
Understanding language negotiation |
|
|
425 | (1) |
|
Configuring language negotiation |
|
|
426 | (1) |
|
Planning your language negotiation strategy |
|
|
426 | (1) |
|
Enabling language negotiation |
|
|
427 | (1) |
|
|
428 | (3) |
|
Configuring the Session language negotiation option |
|
|
431 | (1) |
|
|
432 | (1) |
|
|
433 | (50) |
|
Chapter 23 Understanding the Drupal User System |
|
|
435 | (24) |
|
Introducing the User System |
|
|
435 | (9) |
|
Reviewing the People Manager |
|
|
436 | (1) |
|
Configuring Account Settings |
|
|
437 | (1) |
|
Reviewing the Settings tab |
|
|
438 | (2) |
|
Reviewing the Manage Fields tab |
|
|
440 | (2) |
|
Reviewing the Manage Display tab |
|
|
442 | (1) |
|
Reviewing the My Account page |
|
|
443 | (1) |
|
|
444 | (2) |
|
|
446 | (4) |
|
|
446 | (1) |
|
|
447 | (1) |
|
|
448 | (2) |
|
Working with the Default Profiles |
|
|
450 | (3) |
|
Controlling the Styling of the Default Profiles |
|
|
453 | (3) |
|
Reviewing the default templates |
|
|
454 | (1) |
|
Reviewing user-picture.tpl.php |
|
|
454 | (1) |
|
Reviewing user-profile.tpl.php |
|
|
454 | (1) |
|
Reviewing user-profile-category.tpl.php |
|
|
455 | (1) |
|
Reviewing user-profile-item.tpl.php |
|
|
455 | (1) |
|
Reviewing the default style sheets |
|
|
455 | (1) |
|
Reviewing the themable functions |
|
|
455 | (1) |
|
|
456 | (1) |
|
|
457 | (1) |
|
|
457 | (2) |
|
Chapter 24 Controlling User Access |
|
|
459 | (10) |
|
Introducing Drupal's Access Controls |
|
|
459 | (2) |
|
|
461 | (2) |
|
|
463 | (1) |
|
|
464 | (4) |
|
Controlling global access |
|
|
465 | (1) |
|
|
465 | (1) |
|
Controlling block level access |
|
|
466 | (2) |
|
|
468 | (1) |
|
Chapter 25 Configuring User Registration |
|
|
469 | (14) |
|
Enabling User Registration |
|
|
469 | (7) |
|
|
472 | (1) |
|
|
473 | (3) |
|
|
476 | (1) |
|
Working with the User Login Function |
|
|
477 | (3) |
|
|
477 | (1) |
|
|
478 | (1) |
|
The Request Password function |
|
|
479 | (1) |
|
|
480 | (1) |
|
|
481 | (2) |
|
Part VI Customizing and Extending the System |
|
|
483 | (134) |
|
Chapter 26 Customizing Drupal's Appearance |
|
|
485 | (32) |
|
Understanding How Themes Work |
|
|
485 | (1) |
|
Knowing the Parts of a Theme |
|
|
486 | (5) |
|
|
486 | (2) |
|
|
488 | (1) |
|
|
488 | (2) |
|
|
490 | (1) |
|
The role of the template.php file |
|
|
490 | (1) |
|
|
491 | (3) |
|
|
494 | (17) |
|
Modifying themes through configuration |
|
|
494 | (1) |
|
Changing page element options |
|
|
495 | (1) |
|
|
495 | (3) |
|
|
498 | (2) |
|
Modifying themes by changing the code |
|
|
500 | (1) |
|
|
501 | (4) |
|
|
505 | (2) |
|
Controlling template display through template suggestions |
|
|
507 | (1) |
|
|
508 | (3) |
|
|
511 | (4) |
|
|
511 | (2) |
|
Creating a custom sub-theme |
|
|
513 | (1) |
|
|
513 | (1) |
|
|
514 | (1) |
|
Customizing the sub-theme |
|
|
514 | (1) |
|
Working with an Admin Theme |
|
|
515 | (1) |
|
|
516 | (1) |
|
Chapter 27 Customizing the Display of Content |
|
|
517 | (28) |
|
|
517 | (1) |
|
|
518 | (14) |
|
Overview of the Views framework |
|
|
519 | (1) |
|
|
519 | (1) |
|
Getting started with Views |
|
|
520 | (4) |
|
|
524 | (5) |
|
Editing and deleting views |
|
|
529 | (3) |
|
|
532 | (11) |
|
|
532 | (1) |
|
Getting started with Panels |
|
|
533 | (3) |
|
|
536 | (7) |
|
Editing and deleting panels |
|
|
543 | (1) |
|
|
543 | (2) |
|
Chapter 28 Customizing Drupal Functionality |
|
|
545 | (16) |
|
|
545 | (2) |
|
|
547 | (2) |
|
|
547 | (1) |
|
|
548 | (1) |
|
|
548 | (1) |
|
|
549 | (1) |
|
|
549 | (1) |
|
|
550 | (1) |
|
|
551 | (5) |
|
Creating a new module folder |
|
|
551 | (1) |
|
|
551 | (2) |
|
Creating the .module file |
|
|
553 | (2) |
|
Interacting with the database |
|
|
555 | (1) |
|
Adding blocks to a module |
|
|
556 | (1) |
|
|
556 | (4) |
|
Reusing existing theme hooks |
|
|
557 | (1) |
|
Implementing hook_theme() |
|
|
557 | (2) |
|
Using preprocess functions |
|
|
559 | (1) |
|
|
560 | (1) |
|
Chapter 29 Extending Your Site |
|
|
561 | (24) |
|
|
561 | (3) |
|
|
564 | (8) |
|
Adding new modules automatically |
|
|
564 | (3) |
|
Adding new modules manually |
|
|
567 | (1) |
|
Adding new themes automatically |
|
|
567 | (3) |
|
Adding new themes manually |
|
|
570 | (1) |
|
Uninstalling extensions automatically |
|
|
570 | (1) |
|
Uninstalling extensions manually |
|
|
571 | (1) |
|
Key Extensions to Address Common Issues |
|
|
572 | (12) |
|
Improving content management and presentation |
|
|
572 | (1) |
|
|
572 | (1) |
|
|
573 | (1) |
|
Printer, e-mail, and PDF versions |
|
|
573 | (1) |
|
|
573 | (1) |
|
|
573 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
|
574 | (1) |
|
|
575 | (1) |
|
|
575 | (1) |
|
|
575 | (1) |
|
Apache Solr Search Integration |
|
|
575 | (1) |
|
|
575 | (1) |
|
|
576 | (1) |
|
|
576 | (1) |
|
|
576 | (1) |
|
|
576 | (1) |
|
|
576 | (1) |
|
|
577 | (1) |
|
|
577 | (1) |
|
|
577 | (1) |
|
|
577 | (1) |
|
|
577 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
578 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
579 | (1) |
|
|
580 | (1) |
|
|
580 | (1) |
|
|
580 | (1) |
|
Adding geolocation functionality |
|
|
580 | (1) |
|
|
580 | (1) |
|
|
581 | (1) |
|
|
581 | (1) |
|
|
581 | (1) |
|
|
581 | (1) |
|
|
581 | (1) |
|
|
582 | (1) |
|
|
582 | (1) |
|
|
582 | (1) |
|
|
582 | (1) |
|
|
582 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
584 | (1) |
|
|
584 | (1) |
|
|
584 | (1) |
|
|
584 | (1) |
|
|
584 | (1) |
|
Chapter 30 Implementing eCommerce with Ubercart |
|
|
585 | (32) |
|
|
585 | (2) |
|
|
586 | (1) |
|
|
586 | (1) |
|
|
586 | (1) |
|
|
587 | (1) |
|
Obtaining and Installing Ubercart |
|
|
587 | (2) |
|
Installation requirements |
|
|
587 | (1) |
|
Integrating with an existing site |
|
|
588 | (1) |
|
|
589 | (18) |
|
Configuring the required core |
|
|
590 | (1) |
|
|
591 | (4) |
|
Managing Checkout settings |
|
|
595 | (3) |
|
Managing Country settings |
|
|
598 | (1) |
|
|
599 | (1) |
|
Managing Price handler settings |
|
|
600 | (1) |
|
Managing Product settings |
|
|
601 | (2) |
|
|
603 | (2) |
|
|
605 | (1) |
|
|
606 | (1) |
|
|
606 | (1) |
|
|
606 | (1) |
|
|
607 | (10) |
|
|
607 | (1) |
|
|
607 | (2) |
|
Working with existing products |
|
|
609 | (1) |
|
|
609 | (2) |
|
|
611 | (1) |
|
|
612 | (1) |
|
Creating conditional actions |
|
|
613 | (1) |
|
|
614 | (1) |
|
|
615 | (2) |
|
Part VII Drupal in the Enterprise |
|
|
617 | (70) |
|
Chapter 31 Securing Your Site |
|
|
619 | (6) |
|
|
619 | (4) |
|
|
620 | (1) |
|
Protect directories and files |
|
|
620 | (1) |
|
|
620 | (1) |
|
|
620 | (1) |
|
|
621 | (1) |
|
Maintain a sensible server setup |
|
|
621 | (1) |
|
Securing third-party extensions |
|
|
622 | (1) |
|
|
622 | (1) |
|
Keeping Up with Security Notices |
|
|
623 | (1) |
|
|
624 | (1) |
|
Chapter 32 Managing Site Performance |
|
|
625 | (12) |
|
Addressing Typical Performance Concerns |
|
|
625 | (8) |
|
Reducing server load via caching and resource aggregation |
|
|
625 | (1) |
|
Introducing the site cache |
|
|
626 | (1) |
|
Configuring the site cache |
|
|
627 | (2) |
|
Reducing server load by controlling block visibility |
|
|
629 | (1) |
|
Configuring additional performance settings |
|
|
630 | (3) |
|
|
633 | (3) |
|
|
633 | (1) |
|
Using the Devel module to analyze performance |
|
|
634 | (1) |
|
Analyzing the performance of Views |
|
|
635 | (1) |
|
|
636 | (1) |
|
Chapter 33 Creating a Search Engine-Friendly Site |
|
|
637 | (32) |
|
Creating Search Engine-Friendly URLs |
|
|
638 | (13) |
|
Enabling the Clean URLs feature |
|
|
639 | (1) |
|
Configuring Clean URLs with Apache 2.2 |
|
|
640 | (2) |
|
Configuring Clean URLs with IIS 7 |
|
|
642 | (4) |
|
Working with the Path and Pathauto modules |
|
|
646 | (2) |
|
|
648 | (1) |
|
Managing Path module aliases |
|
|
648 | (1) |
|
Enabling the Pathauto module |
|
|
649 | (1) |
|
Configuring Pathauto alias patterns |
|
|
649 | (2) |
|
Managing Canonicalization Issues |
|
|
651 | (9) |
|
Understanding canonicalization issues |
|
|
651 | (1) |
|
Configuring a canonical homepage URL |
|
|
652 | (1) |
|
Configuring Apache 2.2 for canonical redirects |
|
|
652 | (1) |
|
Configuring IIS 7.0 for canonical redirects |
|
|
653 | (1) |
|
Configuring canonical content URLs |
|
|
654 | (1) |
|
Installing and enabling the Global Redirect module |
|
|
654 | (1) |
|
Configuring the Global Redirect module |
|
|
655 | (2) |
|
Configuring Pathauto to work with the Redirect module |
|
|
657 | (3) |
|
|
660 | (2) |
|
Understanding the types of metadata |
|
|
660 | (1) |
|
Taking control of your metadata |
|
|
661 | (1) |
|
Adding Sitemaps with XML Sitemaps |
|
|
662 | (1) |
|
Optimizing Page Templates |
|
|
662 | (2) |
|
Understanding HTML semantics and templating practices |
|
|
662 | (1) |
|
Understanding content semantics and RDFa |
|
|
663 | (1) |
|
Creating Custom Error Pages |
|
|
664 | (3) |
|
Creating custom 404 error pages |
|
|
665 | (1) |
|
Choosing which approach to use |
|
|
665 | (1) |
|
Configuring custom 404 content |
|
|
665 | (1) |
|
Creating custom 403 error pages |
|
|
666 | (1) |
|
Configuring custom 403 content |
|
|
666 | (1) |
|
|
667 | (2) |
|
Chapter 34 Making an Accessible Site |
|
|
669 | (6) |
|
|
669 | (1) |
|
|
670 | (4) |
|
Improving theme accessibility |
|
|
671 | (1) |
|
Support semantic structure |
|
|
671 | (1) |
|
|
672 | (1) |
|
|
672 | (1) |
|
Use system fonts for your nav menus |
|
|
672 | (1) |
|
Use appropriate capitalization |
|
|
672 | (1) |
|
Use a suitable color scheme |
|
|
672 | (1) |
|
Order elements on the screen logically |
|
|
672 | (1) |
|
Make sure your text resizes |
|
|
672 | (1) |
|
|
672 | (1) |
|
|
673 | (1) |
|
Provide hover states and visited states |
|
|
673 | (1) |
|
Provide alternatives to applets and plugins |
|
|
673 | (1) |
|
Avoid requiring timed responses |
|
|
673 | (1) |
|
Creating accessible content |
|
|
673 | (1) |
|
Use headings and styles correctly |
|
|
673 | (1) |
|
|
673 | (1) |
|
|
674 | (1) |
|
Summarize graphs and charts |
|
|
674 | (1) |
|
|
674 | (1) |
|
Format tabular data properly |
|
|
674 | (1) |
|
|
674 | (1) |
|
Chapter 35 Handling Change Management |
|
|
675 | (12) |
|
|
675 | (2) |
|
|
677 | (1) |
|
|
678 | (1) |
|
Using the Update Manager Module |
|
|
678 | (4) |
|
|
682 | (4) |
|
|
683 | (2) |
|
Handling major version upgrades |
|
|
685 | (1) |
|
|
686 | (1) |
|
|
687 | (2) |
|
Appendix A The Directory Structure of a Drupal Installation |
|
|
689 | (4) |
|
Appendix B Location of Key Files |
|
|
693 | (8) |
|
|
693 | (1) |
|
|
693 | (1) |
|
|
693 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
694 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
695 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
696 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
697 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
699 | (1) |
|
|
699 | (1) |
|
|
699 | (1) |
|
|
699 | (1) |
|
|
699 | (1) |
|
|
699 | (1) |
|
|
700 | (1) |
|
|
700 | (1) |
|
|
700 | (1) |
|
|
700 | (1) |
|
|
700 | (1) |
|
|
700 | (1) |
|
Appendix C Installing XAMPP |
|
|
701 | (2) |
|
Appendix D Installing MAMP |
|
|
703 | (2) |
|
Appendix E Beyond the Book---Additional Help Resources Online |
|
|
705 | (4) |
|
The Help Files Inside Drupal |
|
|
705 | (1) |
|
Online Help and Support Resources |
|
|
706 | (1) |
|
Using Community Support Options |
|
|
707 | (1) |
|
Finding Commercial Support |
|
|
708 | (1) |
Index |
|
709 | |