Back бутон

Как да направим Back бутон за връщане на предишната страница?

Ето малко (всъщност достатъчно) код за да го добавим в нашия модул node_ext.

/**
 * Implements hook_block_info().
 */
function node_ext_block_info() {
  $blocks['go_back'] = array(
    'info' => t('Go Back'),
  );
 
  return $blocks;
}
 
/**
 * Implements hook_block_view().
 */
function node_ext_block_view($delta = '') {
  $block = array();
 
  switch ($delta) {
    case 'go_back':
 
      drupal_add_js('function goBack() {
        window.history.back()
      }', 'inline');
 
      $block['subject'] = '<none>';
      $block['content'] = _go_back_content();
      break;
  }
  return $block;
}
 
function _go_back_content() {
  $output = '';
 
  $output = '<input type="button" value="Back" onclick="goBack()" />';
 
  return $output;
}

Можем да редактираме page.tpl.php на темата и да добавим два-три реда за това. И да правим това за всяка тема на сайт в който искаме да го имаме. Или да го направим веднъж като модул който да инсталираме където искаме. Въпрос на личен избор.

Edit:
Сигурен съм, че сте забелязали че това не е съвсем Drupal standart код. Така изглежда кода на горната имплементация, който отговаря на друпал стандарта:

/**
 * Implements hook_block_view().
 */
function node_ext_block_view($delta = '') {
  $block = array();
 
  switch ($delta) {
    case 'go_back':
      $block['subject'] = '<none>';
      $block['content'] = render(drupal_get_form('my_go_back_form'));
      break;
  }
  return $block;
}
 
/**
 * Custom form implementation
 */
function my_go_back_form($form, $form_state) {
  $form = array();
 
  //add inline javascript to this form
  $form['#attached']['js'] = array(
    //insert clean js inline, uderstandable for many browsers
    'function goBack() {window.history.back()}' => array('type' => 'inline'),
    //insert external js from file - prevent default btn event
    drupal_get_path('module', 'node_ext') . '/node_ext.js' => array('type' => 'file'),
  );
 
  //button definition
  $form['go_back'] = array(
    '#type' => 'button',
    '#value' => t('Back'),
    '#attributes' => array(
       'onclick' => array('goBack()'),
       'class' => array('go-back-btn'),
    ),
  );
 
  return $form;
}

hook_block_info() остава без промени.

Кода на допълнителния js с име node_ext.js:

(function ($) {
  Drupal.behaviors.node_ext = {
    attach: function(context) {
      $('.go-back-btn').click(function(event) {
        event.preventDefault();
      });
    }
  };
 })(jQuery);
Category: