Table of Contents Plusで出力されるクラス名を操作したい
-
目次を自動生成してくれる『Table of Contents Plus』を使っています。
動作や表示に問題はありません。
しかし作っているサイトが、スマホで見た時にヘッダーを固定したタイプになります。
そのため目次のリンクから移動すると、見出し部分がヘッダーに隠れてしまいます。
ヘッダー高さ分、ずらさないといけない状況になりました。さてどうしたものかとソースを見ると、設定を触らなければ「i」「i-2」「i-3」と言った具合に自動でクラス名が割り振られます。
だったら、i~i-10くらいまでのクラスを指定して設定すれば良いと思い、そうしたら対応は出来ました。
しかしよく見るとうまくいかない部分があるのです。
その部分のクラス名を見ると、iで始まっていないのです。
さらにみると、見出し部分に半角英数が入っていると、それをクラス名にしているようなのです。例えば、見出しが「この服を着ると魅力度アップ」だったらクラス名は「i」なのに対し、「この服を着ると魅力度UP」だとクラス名が「UP」になっていました。
ですので見出しに半角の数字が入っていれば、それが単純にクラス名になるようなのです。
これをそんなことはせず、英数半角があっても「i」「i-2」「i-3」としたいのですが、設定画面では該当する項目が見当たりません。となると、プラグインのPHPを触るしかないかと思った次第です。
この辺りではないかという目星はつけたものの対応が出来ず…
for ($i = 0; $i < count($matches); $i++) { // get anchor and add to find and replace arrays $anchor = $this->url_anchor_target( $matches[$i][0] ); $find[] = $matches[$i][0]; $replace[] = str_replace( array( $matches[$i][1], // start of heading '</h' . $matches[$i][2] . '>' // end of heading ), array( $matches[$i][1] . '<span id="' . $anchor . '">', ←こことその下の行でクラス名が出力されている '</span></h' . $matches[$i][2] . '>' ), $matches[$i][0] ); // assemble flat list if ( !$this->options['show_heirarchy'] ) { $items .= '<li><a href="#' . $anchor . '">'; if ( $this->options['ordered_list'] ) $items .= count($replace) . ' '; $items .= strip_tags($matches[$i][0]) . '</a></li>'; } }
※上記はあくまでも出力される部分だけを抜粋したので、ご検討いただくには情報が足りないかも知れません。
お変わりになる方がいらっしゃいましたらご教授いただければ幸いです。
よろしくお願いいたします。
- トピック「Table of Contents Plusで出力されるクラス名を操作したい」には新たに返信することはできません。