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部分のみ
実際のコードはこれに加えてpやliを含むプラグインを除外するように少し手を加えてある。<?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 ?>" />
各種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氏製プラグインも同様)