DokuWiki

It's better when it's simple

Инструменты пользователя

Инструменты сайта


ru:tips:back_to_top

Почему и что это

  1. улучшенный доступ к TOC из любого места страницы…
  2. Пример данного хака:

http://developer.apple.com/technotes/tn/tn1132.html#top

Не создавайте ссылку «back to top» для заголовка 1-ого уровня… Create link «back to top» before each title…

:!: Пример написан для ДокуВики 2008-05-05 и может не корректно работать в других версиях.

Как?

В inc\parser\xhtml.php изменить заголовок функции на :

(строка 134)

    function header($text, $level, $pos) {
 
        $hid = $this->_headerToLink($text,true);
 
        //only add items within configured levels
        $this->toc_additem($hid, $text, $level);
 
        // write the header
        $this->doc .= DOKU_LF;
		if($level > 1){
				$this->doc .= html_topbtn2();
		}
		$this->doc .='<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">';
        $this->doc .= $this->_xmlEntities($text);
        $this->doc .= "</a></h$level>".DOKU_LF;
    }

затем : создать функцию «html_topbtn2» под «html_btn» в «inc\html.php»

(строка 165)

function html_topbtn2(){
  global $lang;
 
  $ret  = '';
  $ret  = '<a href="#dokuwiki__top" onclick="window.scrollTo(0, 0)" title="'.$lang['btn_top'].'" >'. $lang['btn_top'].' </a>';
 
  return $ret;
}

Кнопка "вверх" рядом с кнопкой редактирования

--- html.php-orig       2008-07-06 04:28:06.241410000 +0200
+++ html.php    2008-07-06 04:40:15.171058000 +0200
@@ -94,6 +94,7 @@
 
   $secedit  = '';
   $secedit .= '<div class="secedit">';
+  $secedit .= html_topbtn();
   $secedit .= html_btn('secedit',$ID,'',
                         array('do'      => 'edit',
                               'lines'   => "$section",
@@ -115,12 +116,17 @@
     $text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#',
                          'html_secedit_button', $text);
   }else{
-    $text = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text);
+    $text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','html_topbtn_div',$text);
   }
 
   return $text;
 }
 
+function html_topbtn_div ()
+{
+    return '<div class="secedit">'.html_topbtn().'</div>';
+}
+
 /**
  * Just the back to top button (in its own form)
  *

Где-то в другом месте я переписал:

$lang['btn_top'] = '['.$lang['btn_top'].']';

Я использую этот хак с шаблоном monobook, выглядит красиво.

6.7.2008 Peter

Было бы хорошо знать, какой путь Вы используете здесь. Мне не удалось найти нужный файл или раздел или же файл изменился в то же время очень сильно.

2011-02-18 Taggic

Замечание

:?: Не является ли это, по существу, заменой плагина Up Arrow plugin? — Luis Machuca Bezzaza 2009/09/21 19:37

Нет, добавив данный код кнопка «вверх» будет создаваться автоматически перед заголовками <h2>, <h3>, и т.д. All except for <h1>.
John 2009/11/4

Пер. с англ.

ru/tips/back_to_top.txt · Последнее изменение: 2012-11-17 23:16 — 93.79.175.178

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki