hook_drupal
// Get all node IDs with windfarm content type.
$sql_query = 'SELECT nid ';
$sql_query .= 'FROM {node} ';
$sql_query .= 'WHERE {node}.type = :type ';
$result = db_query($sql_query, array(':type' => 'windfarm'));
$nids = array();
foreach ($result as $row) {
$nids[] = $row->nid;
}
// Delete all example content.
node_delete_multiple($nids);
drupal_set_message($t('Wind Farms content removed.'));
Creating fields <= hook_install()
// Add a field for the body.
node_add_body_field($node_type, $t('Description'));
// Create fields.
$fields = array();
$fields['example_unit_count'] = array(
'field_name' => 'example_unit_count',
'type' => 'number_integer',
// Optional.
'cardinality' => 1,
'settings' => array(
'max_length' => 5,
),
);
Creating Content Type <= hook_install()
// Content type definition.
$content_type = array(
'type' => 'example',
'name' => $t('example'),
'description' => $t('A example text.'),
'title_label' => $t('Example Name'),
'base' => 'node_content',
'custom' => TRUE,
);
// Set remaining definitions with defaults.
$node_type = node_type_set_defaults($content_type);
// Save the content type.
node_type_save($node_type);
}
hook_install() and hook_unistall()
/**
* Implements hook_install().
*/
function example_install() {
// Set default variables.
variable_set('example_gmap', 1);
variable_set('example_default_center_lat', 42.91455);
variable_set('example_default_center_long', -75.569851);
variable_set('example_default_gmap_zoom', 8);
// Get localization function for installation as t() may be unavailable.
$t = get_t();
// Give user feedback.
drupal_set_message($t('example variables created.'));
}
Submiting a form
/**
* Process a validated example admin setting submission.
*/
function example_admin_settings_form_submit($form, &$form_state) {
// Rebuild the form.
$form_state['rebuild'] = TRUE;
// Save example setting variables.
variable_set('example_gmap', $form_state['values']['example_gmap']);
variable_set('example_default_center_lat', $form_state['values']['example_default_center_lat']);
variable_set('example_default_center_long', $form_state['values']['example_default_center_long']);
Validaring a hook_form()
/**
* Validates example admin settings.
*/
function example_admin_settings_form_validate($form, &$form_state) {
// Regular expression for validating signed degrees.
$signed_degree_regex = '/^[+-]?\d+(\.\d+)?$/';
// Shorthand for long array names.
$lat = $form_state['values']['example_default_center_lat'];
$long = $form_state['values']['example_default_center_long'];
hook_form()
/**
* Implements hook_form().
*/
function example_admin_settings_form($node, &$form_state) {
$form = array();
$form['overview'] = array(
'#markup' => t('This interface allows administrators to manage general example Settings'),
'#prefix' => '<p>',
'#suffix' => '</p>',
);
hook_menu()
/**
* Implements hook_menu().
*/
function example_menu() {
$items = array();
// Admin configuration group.
$items['admin/config/example'] = array(
'title' => 'example',
'description' => 'Administer example',
'access arguments' => array('administer example'),
);
hook_permission()
/**
* Implements hook_permission().
*/
function example_permission() {
return array(
'administer example' => array(
'title' => t('Administer examples'),
'description' => t('Perform administrative tasks on example functionality'),
),
);
}hook_help()
/**
* Implements hook_help().
*/
function example_help($path, $arg) {
switch ($path) {
case 'admin/help#example':{
$ret_val = '<h3>' . t('About') . '</h3>';
$ret_val = '<p>' . t('The example module makes it easy to manage a database of example.') . '</p>';
return $ret_val;
break;
}
}
}