プラグインの変更箇所/contentsx.inc.php

2024-08-27 (火) 03:14:01

カテゴリ:カスタマイズ プラグイン改造

変更箇所のまとめ

  • HTML構造と目次タイトルを変更
  • 表示・非表示の切替機能を追加

変更の詳細

HTML構造と目次タイトルを変更

tableレイアウトからHTML5準拠のタグを使用した構造に変更し、目次タイトルも「Table of Contents」から「目次」に変更する。ついでにFontAwesomeでアイコンを付ける。

-			$html = '<table border="0" class="toc"><tbody>' . "\n"-
-				. '<tr><td class="toctitle">' . "\n"
-				. '<span>' . _('Table of Contents') . "</span>\n"
-				. "</td></tr>\n"
-				. '<tr><td class="toclist">' . "\n"
-				. $html 
-				. "</td></tr>\n"
-				. "</tbody></table>\n";
+			$html = <<<EOD
+			<nav id="$id" class="plugin-tocx">
+				<div class="tocx-title">
+					<i class="fa-solid fa-list-ul"></i><span>目次</span>
+				</div>
+				<div class="tocx-list">
+					$html
+				</div>
+			</nav>
+			EOD . "\n";

表示・非表示の切替機能を追加

ページによっては目次がべらぼうに長くなるので、Javascriptを使った表示・非表示機能を追加し、デフォルトで非表示の状態にしておく。

まずは"目次"表記の横に切替用のボタン (リンク) を追加する。

					<i class="fa-solid fa-list-ul"></i><span>目次</span>
+					<span class="tocx-toggle small">[<a href="#" onclick="tocxToggle(event)">表示</a>]</span>

見た目としては [表示] ← こんな感じ。

次に切り替えのためのスクリプトを追加する。当サイトでは専用の別ファイルを用意しているが、通常はskinディレクトリのmain.jsに追記する形になる。

const tocxToggle = e => {
	const ct = e.currentTarget;
	const parent = ct.closest('.plugin-tocx');
	const isVisible = parent.dataset.visible != null;

	if (isVisible) {
		ct.innerHTML = '表示';
		delete parent.dataset.visible;
	} else {
		ct.innerHTML = '非表示';
		parent.dataset.visible = '';
	}
}

最後にcssで以下を指定しておく。

.plugin-tocx[data-visible] .tocx-list {
	display: block;
}
.tocx-list {
	display: none;
}

細かい装飾はさておき、これで目次の切り替えが可能となる。

更新履歴

2024-08-27
内容を現在のサイト構成に合わせて更新。

質問や指摘などあればどうぞ。

最新の10件を表示しています。 コメントページを参照

  • プラグインについていつも参考にさせて頂いております。今回記事にある様に試そうとしたのですが、contentsx.inc.phpがPHP8に対応した物(byはいふんさん)しか見つけることができず、ソースが改修されており改造が出来ませんでした・・・。お手すきの時がありましたら、最新のv1.13での情報更新をお願いいたします -- 2024-08-26 (月) 20:00:56
    • 私が使用しているのはsonots氏のgithubで公開されているバージョンをPHP8に対応させたうえで自サイト用に改造しているものです。
      私自身はいふん氏がPHP8に対応させたバージョンがどの様になっているかは知らないので、申し訳ないですが参考になりそうな情報は書けないかと思います。
      このページ自体も当時備忘録として簡単に書いたもので、現在ではjQueryを使っておらず、HTML構造も変えてしまっているため、内容と実際のソースは大きく乖離しています。現在の構造が気になるようであれば開発者ツールなどで確認してみてください。
      参考になるかは分かりませんが、一応ページの内容を更新しておこうかとは思います。 -- kanateko 2024-08-27 (火) 00:54:27