Check out DrupalEasy around the web:
DrupalEasy is the collective expertise of Ryan Price and Michael Anello, who joined forces to provide training and consulting services worldwide. Read all about them and what they can do.
Drupal is a free, super-powerful content management system for sites that require information posting and collection, including blogs, forums, videos, photos, and databases of information. We think it is the best platform available. Here's why...
More and more savvy organizations are going with Drupal for content management, and its no mystery why. It’s free, flexible, and easy to maintain for small or large volume sites. Learn more...
I was very proud to participate in the official DrupalCon Pre-Conference Training again this year. I decided to repeat my Intro to Drupal Theming class, especially since drupal 7 was such new territory. Our class size was limited to 20 students, which sold out in advance of the conference.
Several months ago Ryan Price interviewed Emma Jane Hogbin, one of the authors of Front End Drupal, for DrupalEasy Podcast 10. At the time I hadn't received a review copy of the book, so I made a mental note to check out the book based on the interview.

Six months later, the folks at Prentice Hall were kind enough to send me a copy, and I was not disappointed.
Emma Jane Hogbin and Konstantin Kafer have written Front End Drupal in a way that makes it a valuble resource for virtually anyone who uses Drupal in one form or another. The strength of the book lies in the fact that it explains core concepts and best practices of how sites are built in Drupal, with an empahsis on theming.
Rather than writing a full-on review for a book that has already been reviewed more than a couple of times elsewhere, I thought that I'd provide a list of 10 things that this book covers really well.
If you've done much Drupal theming, then you're probably aware that you can override the default node.tpl.php template file on a per-content type basis. For example, if you have a content type called "food", then you can create a node-food.tpl.php that will be used only when nodes of type "food" are displayed.
A full list of template suggestions can be found on drupal.org.
I recently presented 45 Modules in 45 Minutes: The Best Modules You're Not Using at DrupalCon Paris. Here's a tip using one of the forty-five modules in my presentation.
The Better Messages module is a quick and simple drop-in module that will instantly give your site a bit of a "wow" factor by displaying all system messages in a floating CSS popup window over your content.
When creating a theme, it is often very handy to break up the CSS into multiple files for the purpose of keeping things better organized. Luckily, Drupal has built-in CSS optimization on the admin/settings/performance page, but during development it is sometime quite easy to run up a large number of CSS files being used.
Need an fast way to theme a submit button on your site? Using one hook_form_alter() function and some simple CSS, it's fairly easy to do.
The method below actually keeps the text of the button as text and not part of the image (this allows you to reuse the button image for multiple buttons), but you can just as easily set the #value attribute to '' to get rid of the text.
You'll use hook_form_alter() to simply add a CSS class to the button you want to theme and to modify the text of the button.
This is your moment, you've decided to step up and make a job board for your local Drupal User Group. You spend some time thinking about everything you'll need, including the job listings themselves. You'll want to gather the standard info, like job title and job description, salary, experience, the works. When it comes to gathering company info, your instincts make you take a few extra moments to plan.
If you think about this from the perspective of the person posting 6 or 7 jobs, she would end up having to type (or at least copy and paste) the business' contact information each time. If you think about collecting 3 or 4 fields for each business, then that's about 20 extra form fields for the user to fill out. If she then decides to change the info, let's say she made a typo, she now must click through each edit screen 6 or 7 times. That amounts to hundreds of clicks and several hundred repeated keystrokes.

There must be a better way. A nodereference can help your users.
Once finished, you will have two nodes, one for a job and another for a company, and yet you will still display the information about the company inside the job listing.

By the end of this tutorial, you should understand what a nodereference is for, how to create and use one, and finally, how to use template files to theme the output of the nodereference and get the most out of the relationship.
If your client is being very picky about the titles of certain pages, especially views, you may find yourself needing to write some code to set the title at the theme level. This is normally fine, since Drupal 6 has some great hooks, like hook_preprocess_page() and its cousins for blocks, nodes, and user profiles.
Often we have clients for whom we are developing a theme who request that they have several different block styles to choose from. Sometimes each style is completely different (colors, borders, images) while other times it is something as subtle as a different header icon.
If you've been following along with recent Drupal news, then you've probably heard about the 960 Grid System for laying out web pages. The associated Drupal starter theme, NineSixty was one of the stars of the recent Design 4 Drupal camp in Boston and is making some headway into possibly finding its way into Drupal 7 core.
If you want to get kick-started on learning about 960, here are some great resources: