View source
<?php
function title_override_menu() {
$items = array();
$items['admin/settings/title_override'] = array(
'title' => t('Title Overrides'),
'description' => t('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;
}
function title_override_admin() {
$form = array();
$form['title_override_form'] = array(
'#type' => 'textarea',
'#title' => t('Title Overrides'),
'#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) {
$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') {
drupal_flush_all_caches();
drupal_set_message('Caches cleared');
}
}
function title_override_admin_display_default() {
$return = '';
$titles = variable_get('title_overrides', array());
foreach ($titles as $item) {
$return .= $item[0] . '|' . $item[1] . '|' . $item[2] . chr(10);
}
return drupal_substr($return, 0, -1);
}
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;
}
}
}
function title_override_nodeapi(&$node, $op) {
if ($op == 'alter') {
$itemValues = variable_get('title_overrides', array());
foreach ($itemValues as $item) {
if ($item[0] == 'node') {
if ($node->nid == $item[1]) {
drupal_set_title(check_plain($item[2]));
}
}
}
}
}