コードに行番号を付ける
dokuwikiの<CODE>タグではデフォルトで行番号が付きません。なので、行番号を付けようと思います。
以下に例を示します。
$(window).on('load', function () { if ($.cookie('adFlg2') != 'on' && $('#modal-ad').length) { //画面読み込み500ms後にモーダル表示 setTimeout(function () { //$('#modal-ad').modal('show'); }, 500); $.cookie('adFlg2', 'on', {expires: 2, path: '/'}); //1日保存 } });
この変更は、https://note.affi-sapo-sv.com/js-add-line-number.phpを参考にしました。
また、bootstrap3テンプレートを使用したときの例です。
まず、テンプレート内のmain.phpを探します(bootsrap3テンプレートではmain.php)。このmain.phpのheadタグに以下のように追記します。
以下の23行目が追記行
<head> <meta charset="UTF-8" /> <title><?php echo $TPL->getBrowserPageTitle() ?></title> <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <?php if ($TPL->getConf('themeByNamespace')) { echo '<link href="' . tpl_basedir() . 'css.php?id='. $ID .'" rel="stylesheet" />'; } echo tpl_favicon(['favicon', 'mobile']); tpl_includeFile('meta.html'); tpl_metaheaders(); ?> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5424273742060234" crossorigin="anonymous"></script> <!--[if lt IE 9]> <script type="text/javascript" src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script type="text/javascript" src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <script async src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script> </head>
次にinc\parser\xhtml.phpを変更します。
/** * Use GeSHi to highlight language syntax in code and file blocks * * @author Andreas Gohr <andi@splitbrain.org> * @param string $type code|file * @param string $text text to show * @param string $language programming language to use for syntax highlighting * @param string $filename file path label * @param array $options assoziative array with additional geshi options */ public function _highlight($type, $text, $language = null, $filename = null, $options = null) { global $ID; global $lang; global $INPUT; (中略) if(empty($language)) { // empty is faster than is_null and can prevent '' string $this->doc .= '<pre class="prettyprint linenums '.$type.'">'.$this->_xmlEntities($text).'</pre>'.DOKU_LF; } else { $class = 'code prettyprint linenums '; //we always need the code class to make the syntax highlighting apply if($type != 'code') $class .= ' '.$type; $this->doc .= "<pre class=\"$class $language\">" . p_xhtml_cached_geshi($text, $language, '', $options) . '</pre>' . DOKU_LF; }
_highlight関数内の
$this->doc .= '<pre class="prettyprint linenums '.$type.'">'.$this->_xmlEntities($text).'</pre>'.DOKU_LF;
$class = 'code prettyprint linenums '; //we always need the code class to make the syntax highlighting apply
が変更点です。いずれも、「prettyprint linenums」クラスを追加しています。
あとは、テンプレートCSSに以下を追加すればOK.bootstrap3テンプレートでは、bootstrap.min.cssです。
.prettyprint{ /* 枠線 */ border-left: 5px solid green; padding: 0; } .prettyprint ol.linenums{ list-style:none; counter-reset: linenums_count; overflow: hidden; position: relative; padding:0; margin:0; } .prettyprint ol.linenums > li{ /* 表示されるテキスト */ padding:0 5px 0 50px; /* 行番号の幅を変更するときは、*/ /* 4つめのpxを調整する */ } .prettyprint ol.linenums > li:before{ /* 行番号 */ counter-increment: linenums_count; content: counter(linenums_count); width: 40px; /* 行番号の幅 */ text-align: right; display: block; position: absolute; left: 0; border-right: 2px solid #ccc; border-top:1px solid #ccc; padding-right:3px; background: white; }
変更箇所はこんなもんです。
ただ、この場合だと全てのcodeもしくはfileシンタックスに行番号が適用されますのでご注意下さい。