Take the 2-minute tour ×
Drupal Answers is a question and answer site for Drupal developers and administrators. It's 100% free, no registration required.

For a custom module i would love to add a checkbox to "BANDWIDTH OPTIMIZATION" under "admin/config/development/performance". I know how to add a new admin page but this is just one checkbox and i think it would fit more there.

Can anyone tell me how to do that?

share|improve this question
1  
you use the form_alter hook. api.drupal.org/api/drupal/modules%21system%21system.api.php/… –  Mohammed Shameem Jan 23 '13 at 18:51
    
Thanks i've figured it out. Used hook_form_alter and $form['bandwidth_optimization']['my_module'] –  rugar Jan 23 '13 at 19:49
add comment

2 Answers

To alter a form implemented by another module, you just implement hook_form_alter(). You probably need to change the #weight property of the form element you are adding, to avoid it is rendered in the wrong place.

function mymodule_form_system_performance_settings_alter(&$form, &$form_state) {
 // Add the checkbox to $form.
}
share|improve this answer
add comment

To add another item on the performance settings form you must implement the hook_for_alter or the hook_form_FORM_ID_alter.

To get the form id you just need to inspect the form an get the id attribute of the form tag:

enter image description here

In your custom module you will have the form alter function like this:

function mymodule_form_system_performance_settings_alter(&$form, &$form_state) {
   $form['bandwidth_opt'] = array(
      '#type' => 'checkbox',
      '#title' => t('BANDWIDTH OPTIMIZATION'),
    );

   return $form;
}

Notice that the hyphens of the element id in the HTML are replaced by underscores in the function declaration.

Another good tip is the Form API reference page.

share|improve this answer
    
thanks, just got it with hook_form_alter as suggested in the first commet within my question. I still wonder if hook_form_FORM_ID_alter would be "the better way" to do it since you're the second one suggesting it. –  rugar Jan 23 '13 at 19:53
    
got it working like you did it in your example but the array should be called $form['bandwidth_optimization']['my_module'] instead. Otherwise you would override the existing one. –  rugar Jan 23 '13 at 20:07
    
In fact both are right but I use to implement the hook_for_alter() when I have more than one form to alter on my custom module so I use a switch for the $form_id. In the other hand using the hook_form_FORM_ID_alter seems to be more clear and easier to maintain the code. Here goes somethig from the Drupal API page. "Modules can implement hook_form_FORM_ID_alter() to modify a specific form, rather than implementing hook_form_alter() and checking the form ID, or using long switch statements to alter multiple forms." –  revagomes Jan 23 '13 at 20:09
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.