[development] low hanging fruit for Drupal 6: variable defaults

Earnie Boyd earnie at users.sourceforge.net
Thu May 3 12:39:52 UTC 2007

Quoting Gabor Hojtsy <gabor at hojtsy.hu>:

> Hi,
> To be able to translate variables to multiple languages in Drupal 
> nicely, we would need a small conceptual change, which would benefit 
> all of the Drupal developers, so I am posting the call here in hopes 
> we have someone or a small group to pick this task up.
> **We need a central place to define variable defaults**

At the top of the module:

define('MY_DEFAULT_VALUE', t('my_default_value'));

> Simple! Now whenever you need a variable, you do
>   variable_get('my_fine_var', 'my_default_value');

Then in the code:

variable_get ('my_find_var', MY_DEFAULT_VALUE);

> The problem with this is that you need to repeat this multiple times, 
> and of course there is a chance you need to modify it later on, so 
> you need to find all places a variable is used. Not good. Remember 
> the changes from bluemarine to garland, we have been fixing 
> theme_default errors for days, finding out places where the variable 
> was used...

I then only have one place to edit.

> So we need a central place to define variable defaults. For Drupal 6 
> this is enough now:

The central place is at the top of the module with a define statement.

>   hook_settings() {
>     return array(
>       'my_fine_var' => 'my_default_value',
>     );
>   }
> Have fun with naming it hook_settings(), as far as I see, it is an 
> appropriate name, and not taken at the moment :) So Drupal can do a 
> module_invoke_all() on hook_settings() and collect defaults to all 
> variables from the modules defining them. It gets easier and shorter 
> to use variables:
>   variable_get('my_fine_var');

variable_get('my_fine_var', MY_DEFAULT_VALUE) is simple enough.  I 
don't understand why we would need to add this complication and 


More information about the development mailing list