FirePHP is a great tool for debugging PHP, and maintaining some level of control over your error handling. Also, it's a great tool for getting information about your variables, objects, etc. while your PHP code is executing. FirePHP requires only a small amount of setup and can be reused time and time again without tedious setups for each site on your server. This tutorial/example requires Firefox.
The following examples shows how to hide fields/fieldsets in forms using hook_form_alter(). I suggest using the devel module to determine how to target your field(s) or fieldset(s). You can add a dpm($form) to the function during development and testing.
The following example, when placed in your theme's template.php file, will shrink the size of all of the "body" textareas on your site to 5 rows, and set the textarea as resizable. The function we're using to alter the textareas is theme_textarea().
The following code can be used in a views_customfield php field to create a custom image link. This example also shows how to use the db_query() function with a proper %-modifier.
This code can be used in a custom module, a template.php file, or most easily in a block. This looks good in the header bar on a demo site, without a title, as you can see in the screenshot! The reason I am using this is because I do a lot of Drupal demos and it's great to have the active modules showing so there is no question of what's required to do whatever it is I am showing. The list of modules is ordered by weight, then filename, which makes it easy to determine if your custom modules are running at the right times.
The Voting API is really nice when used in conjunction with a module like Fivestar. It takes all of the complexity out of setting up a voting/rating system. On occasion, however, you need it to do some things that aren't built in. Using the VotingAPI's API, I'll show you how to trigger a function (send an email, write a message to the screen, etc.) when a piece of content receives a fifth vote of four stars or greater. That is, a node may have four votes of five stars, and two votes of two stars. As soon as the next greater-than-four vote goes in, we want to do something about it. In our case, the client wants to receive an email when a node is popular, and has had five four-star-or-greater votes.
This example shows how to create a custom module for a site. We typically create one custom catch-all module that we can use for one-off site customizations where we don't need to create a unique module. If they are general site tweaks that cannot go in template.php, we put them here. Please read the book Pro Drupal Development for a much better understanding of how all of this (and everything else Drupal) works! DrupalBook.com. It is an amazing reference tool for daily usage, as well as a complete walkthrough of how to take advantage of the power of Drupal.
Please also visit http://drupal.org/coding-standards if you plan on doing any coding in the Drupal environment (which is what you're about to do if you read on)! There are very specific style guidelines, and some of them may take getting used to. For example, you must put a space before the { when you write a function (as shown below).
Many components in Drupal have an optional title or description field. This text usually displays when a user hovers over an item. We had an interesting request: a client wanted to have a box that displayed text which would change every time you roll over a menu item. This can be accomplished using just a small amount of jQuery, and Drupal's built-in menu handling. The menu system in Drupal can handle descriptions on each menu item, however you have to do this through the menu admin. The problem is that the client needed to be able to edit these descriptions at will.
This example serves as both an example of how to alter a Views2 query, as well as how to use the get_terms_by_count() function I've written.
Unfortunately there is not (at present) a Views2 taxonomy filter that lets you "Get only terms with at least X associated nodes." We had a client request that terms without associated nodes be hidden. This was actually more complex than it sounds, but the solution led me to a whole new level of Views2 understanding. Views2 has a hook called hook_views_query_alter() that lets you alter a Views2 query before it is executed. This is exactly what we needed to do in order to only pull terms with associated nodes. Specifically, we needed to add an additional WHERE clause to the query.