You are here

hook_drupal

Deleting Content Type, nodes and Fields <= hook_uninstall()

// 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;
    }
  }
}