サポート » プラグイン » 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>';
      }
    }

    ※上記はあくまでも出力される部分だけを抜粋したので、ご検討いただくには情報が足りないかも知れません。

    お変わりになる方がいらっしゃいましたらご教授いただければ幸いです。
    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • CG

    (@du-bist-der-lenz)

    日本語に対応しているか、対応していないかにあるのではないですか。抽出しているのが、そのため英数に限っているのでしょう。

    トピック投稿者 heppoko

    (@heppoko)

    早々のご回答ありがとうございます。
    半角英数が見出しにあればそれをクラス名にするという仕様の方が面倒ではないのかと思ったのです。
    その仕様をPHP触ることで何とか出来ないものか思って投稿させていただきました。
    極論すれば、見出しに半角英数を使わなければいいだけのことなのですが…

    CG

    (@du-bist-der-lenz)

    投稿のタイトルは同じではないことから、クラスに取得しているのでしょう。スラッグが日本語タイトルなのではないでしょうか。

    トピック投稿者 heppoko

    (@heppoko)

    こちらが投稿している記事のスラッグが、ということでしょうか?
    であれば、それはありません。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Table of Contents Plusで出力されるクラス名を操作したい」には新たに返信することはできません。