You are here

title_override.module in Title Override 7

Same filename and directory in other branches
  1. 6 title_override.module
  2. 7.2 title_override.module

File

title_override.module
View source
<?php

/**
 * Implements hook_menu().
 */
function title_override_menu() {
  $items = array();
  $items['admin/config/user-interface/title_override'] = array(
    'title' => 'Title Override',
    'description' => 'Override Page Titles',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'title_override_admin',
    ),
    'access arguments' => array(
      'administer title overrides',
    ),
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

/**
 * Implements hook_permission().
 */
function title_override_permission() {
  return array(
    'administer title overrides' => array(
      'title' => t('Administer title overrides'),
      'description' => t('Override meta tag and H1 titles for any pages.'),
    ),
  );
}

/**
 * Provides the admin form page.
 */
function title_override_admin() {
  $form = array();
  $form['title_override_form'] = array(
    '#type' => 'textarea',
    '#title' => t('Title Override'),
    '#default_value' => title_override_admin_display_default(),
    '#description' => t("Format: system|drupal-node-link|pagetitle or node|nid|pagetitle"),
  );
  $form['submit_clear'] = array(
    '#type' => 'submit',
    '#value' => t('Save and clear caches'),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  $form['#submit'][] = 'title_override_admin_settings';
  return $form;
}
function title_override_admin_settings($form, &$form_state) {

  // Parses the overrides form variable into an array.
  $itemValues = array();
  if ($form_state['values']['title_override_form']) {
    $temp = explode("\n", $form_state['values']['title_override_form']);
    foreach ($temp as $item) {
      $values = explode("|", $item);
      array_push($itemValues, $values);
    }
  }
  variable_set('title_overrides', $itemValues);
  if ($form_state['values']['op'] != 'Save') {

    // Rebuilds the caches so our updates are shown.
    drupal_flush_all_caches();
    drupal_set_message(t('Caches cleared'));
  }
}

/**
 * Returns formatted text string for form defaults.
 */
function title_override_admin_display_default() {
  $return = '';
  $titles = variable_get('title_overrides', array());

  // Chr(10) is the line break character.
  foreach ($titles as $item) {
    $return .= $item[0] . '|' . $item[1] . '|' . $item[2] . chr(10);
  }

  // Return string minus extra line break.
  return drupal_substr($return, 0, -1);
}

/**
 * Overrides system pages.
 */
function title_override_menu_alter(&$items) {
  $itemValues = variable_get('title_overrides', array());
  foreach ($itemValues as $item) {
    if ($item[0] == 'system') {
      $items[$item[1] . '']['title'] = $item[2] . '';
      $items[$item[1] . '']['title callback'] = FALSE;
    }
  }
}

/**
 * Overrides node pages.
 */
function title_override_node_view_alter(&$content) {
  $itemValues = variable_get('title_overrides', array());
  foreach ($itemValues as $item) {
    if ($item[0] == 'node') {
      if ($content['#node']->nid == $item[1]) {
        drupal_set_title(check_plain($item[2]));
      }
    }
  }
}

Functions

Namesort descending Description
title_override_admin Provides the admin form page.
title_override_admin_display_default Returns formatted text string for form defaults.
title_override_admin_settings
title_override_menu Implements hook_menu().
title_override_menu_alter Overrides system pages.
title_override_node_view_alter Overrides node pages.
title_override_permission Implements hook_permission().