Как да направим 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: