Pukiwikiカスタマイズ

2022-05-21 (土) 20:34:59

カテゴリ:カスタマイズ

PukiWikiで手を入れた箇所の覚書。色々と足りてない。

追加した機能

AutoAlias

概要
指定した文字列を自動的にリンクに変換する。詳細
参考
質問箱/4436 - PukiWiki-official
備考
RecentにAutoAliasNameを表示したくなかったのでpukiwiki.ini.phpの$non_listに追加。
対象とするページの設定いじった方が良かった気もする (先頭にコロン追加)。


変更前
// Regex of ignore pages
$non_list = '^\:';
変更後
// Regex of ignore pages
$non_list = '^\:|^AutoAliasName';

PukiWiki 1.5.3から標準搭載された。

タグ入力支援

概要
編集時にボタン1つで様々なタグを入力できるようにする。
参考
Software/wiki自作プラグイン/instag.inc.php - DEX Lab
備考
スキンのheadに追加する記述で、paraeditを使っていないので代わりにseceditとareaeditを追加


変更前
<?php if ($_GET['cmd']=='edit'|| isset($_POST['preview']) || isset($_POST['template']) || $_GET['cmd']=='paraedit' ) { ?>
変更後
<?php if ($_GET['cmd']=='edit'|| isset($_POST['preview']) || isset($_POST['template']) || $_GET['cmd']=='secedit' || $_GET['plugin']=='areaedit' ) { ?>

スパムフィルタ

概要
Akismet等を利用した1.5.2用汎用スパムフィルタ。
参考
PukiWiki1.5.2にスパム対策メールフォームを設置!Googleアドセンスに備える! | SEの良心
参考
Akismet使うと編集時に誤検知しまくるのでそれ以外を活用することに。

URL短縮

概要
日本語ページなど長過ぎるURLを短い文字列に置換する。
参考
BugTrack/2525 - PukiWiki-dev
備考
PukiWiki 1.5.4で実装されたURLカスタマイズ機能を使用。参考先の実動作サンプルの8と9を組み合わせる形で運用中。クエリが12文字以上の場合に10文字の英数字からなるIDに変換し、元のURLにアクセスした場合も短縮URLにリダイレクトするように。

OGPタグ

概要
ページ内容から自動的にOGPを出力する。
参考
ソフトウェア/pukiwiki/Open Graph Protocol (OGP) - 武内@筑波大
備考
・Descriptionの改変。
・1.5.2でページ内のURLが相対パスで出力されるようになったので画像のパスを修正 (このやり方であっているのだろうか)。
・各見出しに使用するparaedit.pngなどimageフォルダ内の画像を除外するよう調整。
・ついでに画像がないページは設定したアイキャッチが表示されるようにしてみる。

などを経て最終的にこうなった (旧版)


2021-07-12追記:
目次やタグの出力を変えたためdescriptionの生成が以前のコードだと使えなくなってしまった。こういった変更があるたびにコードの除外部分に手を加えるのも面倒なので、必要なもの抜き出していく形に変更した。結果として大分スッキリしたコードになった。


以下はdescription部分のみ
<?php // descriptionを作成
	$str = preg_replace("/\r\n|\r|\n/", '', $body);
	preg_match_all('/<(p|dd|dt|li).*?>(.+?)<\/\1>/', $str, $matches);
	$str = implode($matches[2]);
	$str = strip_tags($str);
	$str = mb_substr($str, 0, 200, 'UTF-8');
?>
<meta property="og:description" content="<?php echo $str ?>" />
実際のコードはこれに加えてpやliを含むプラグインを除外するように少し手を加えてある。

各種SNSボタン

概要
ページ上部に各種SNS用のシェアボタンを表示する。
参考

-

備考
2021年7月のサイトデザイン一新に伴って大幅に作り変え。
今はアイコンフォントを使わずSVGで直接表示している。

スライドメニュー

概要
ボタンを押すと横からスライドしてくるサイドメニュー。
参考
レスポンシブでハンバーガーメニューになる固定サイドバー | webOpixel
備考
スマホ用。開閉ボタンは画面右側に表示。
押しやすいように右側にボタン配置しているが、左からメニュー出てくるの違和感あるから下からスライドしてくるように変えたほうが良いかもしれない。

非同期プレビュー

概要
編集時、画面遷移せずに使えるプレビュー機能。
参考
【JS】Fetch APIでPOST送信してみる(Form送信との比較も) - クモのようにコツコツと
fetchとかで取ってきた生HTMLからDOMを作ってqueryselector()をしたい。 - Qiita
備考
プレビュー時に毎回スクロール位置がリセットされるのが煩わしかったのでなんとかしてみた。
2022年2月を堺にjQueryのAjaxからFetch APIに切り替え。
各プラグインの動作に必要なスクリプトなどをどう読み込むかが課題。
とりあえず現状一部のプラグイン以外はプレビュー時にも動作するはず。

追加したプラグイン

気が向いたときに追記している程度なのでここに書かれていないプラグインも多くある。いつかマニュアルを整備したい……
自作プラグインは別ページに。

alias.inc.php

概要
あるページを他のページの別名にするプラグイン。
参考
pukiwikiプラグイン/alias - Tomose's junkyard.
備考
aliasを使ったページを管理するaliaslist.inc.phpも導入。
導入に際してrename.inc.phpを編集。
また、アンカーに対応させるための記述を追加

attachref.inc.php

概要
添付した画像をその場に置き換えるプラグイン。
参考
自作プラグイン/attachref.inc.php - PukiWiki-official
備考
PHP7に対応させるためsplit関数をexplodeに置換。
attach.inc.phpと同様最大ファイルサイズを512KBに。

contentsx.inc.php

概要
標準contentsプラグインの拡張版。
参考
Plugin/contentsx.inc.php - Sonots' PukiWiki プラグイン
備考
開閉機能を追加
PHP8.0でも動くように修正。 (他のsonots氏製プラグインも同様)

includex.inc.php

概要
他のページの内容を表示するプラグイン。
参考
Plugin/includex.inc.php - Sonots' PukiWiki プラグイン
備考
PHP8.0でも動くように修正。 (他のsonots氏製プラグインも同様)

lsx.inc.php

概要
ページをリストするためのプラグイン。
参考
Plugin/lsx.inc.php - Sonots' PukiWiki プラグイン
備考
同氏作成のincludex.inc.php及びcontentsx.inc.phpが必要。
PHP8.0でも動くように修正。 (他のsonots氏製プラグインも同様)

nop.inc.php

概要
指定部分のPukiWiki記法やリンクを無効にするプラグイン。
参考
質問箱/3323 - PukiWiki-official
備考
部分的にオートリンクしたくない文字列用に導入。
PHP7.4に上げた (というかレン鯖側で勝手に上げられた) ときに入れ子の部分でFatal Error吐かれてて焦った。

null.inc.php

概要
指定部分を空文字に置き換えるプラグイン。
参考
自作プラグイン/null.inc.php - PukiWiki-official
備考
複数行のコメントアウトやテーブル内でのコメントアウト等に使用。

ogp.inc.php

概要
リンクをブログカード風に表示するプラグイン。
参考
pukiwikiカスタマイズ箇所/ogp.inc.php - 腫瘍学レ点ノート
備考
XSS対策や機能追加などいろいろと改造 プラグインの変更箇所/ogp.inc.php

sortabletable

概要
表をソートできるようにするプラグイン。
参考
備考
プラグイン名は旧版のままだが中身は新しい方 (sortable_table) に挿げ替え。
旧版との互換性を持たせるためにいくらか改造 & 一部バグが有ったので修正。
プラグインの変更箇所/sortabletable.inc.php

style.inc.php

概要
任意の箇所にスタイルやクラスを指定するプラグイン。
参考
Plugin/style.inc.php - Sonots' PukiWiki プラグイン
備考
flex表示やinfobox (モドキ) の設置、テーブルの右寄せなど大活躍。
クラス作っておくだけなのでレスポンシブ対応も簡単。

tag.inc.php

概要
ページにタグを付けてカテゴリ分けするプラグイン。
参考
Plugin/tag.inc.php - Sonots' PukiWiki プラグイン
備考
個人的にページを階層化するよりスッキリすると感じたため導入。
指定タグが付いたページをリスト化するtaglistも便利。
タグを単純にリストへ移動するためのリンクとして貼るtaglinkプラグインを追加で自作して運用中。
PHP8.0でも動くように修正。 (他のsonots氏製プラグインも同様)

プラグインの変更箇所