#author("2022-04-21T07:34:35+09:00;2022-04-20T21:41:25+09:00","default:tgoto","tgoto")
&tag(pukiwiki);
以前からPukiwiki 1.5.4 RCを導入していましたが、2022年4月にPukiwiki 1.5.4の正式版を導入しました。PHPは今のところVersion 8.1.0 RC5で動作させています。
* 手順 [#c4d5ebcc]
基本的にlibフォルダを全てPukiwiki 1.5.4正式版で上書きしました。また、pukiwiki.ini.php、default.ini.php、ja.lng.phpは1.5.3のものと上手いことマージさせました。プラグインは旧版でもPHP 8.1で問題なく動作するものは、一部のカスタマイズをしていたこともあり旧版を流用しているものもあります。
** 標準では入っていないプラグイン [#cc71ca4d]
- [[jsonld.inc.php>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/jsonld.inc.php]]
- [[htmlinsert.inc.php>http://pukiwiki.sonots.com/?Plugin%2Fhtmlinsert.inc.php]]
- [[tag.inc.php>http://pukiwiki.sonots.com/?Plugin%2Ftag.inc.php]]
- [[alias.inc.php>https://arda.saloon.jp/blog/2022/04/aliastraceincphp-php80.html]]
- [[attachref.inc.php>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/attachref.inc.php]]
- [[timestamp.inc.php>https://pukiwiki.osdn.jp/?自作プラグイン/timestamp.inc.php]]
- [[自作プラグイン/ogp.inc.php>pukiwikiカスタマイズ箇所/自作プラグイン/ogp.inc.php]]
- [[自作プラグイン/tweet.inc.php>pukiwikiカスタマイズ箇所/自作プラグイン/tweet.inc.php]]
**標準から改造しているプラグイン [#jaa1b9c5]
- ref.inc.php
-- [[WEBPフォールバック>https://oncologynote.com/?5b041d2a93]]
-- 遅延読み込みの対応
- topicpath.inc.php
-- 各ページで子要素を読み込めるように
- [[search.inc.phpプラグインでGETメソッドを可能にする>https://oncologynote.com/?5c5fe2d226#m3111428]]
*スキン改変 [#fc222b90]
このサイトのPukiwikiはあちこちを改造しているためPukiwiki 1.5.4で動作するのか不安もありましたが、スキンに組み込んでいるtopicpath.inc.phpとjsonld.inc.phpの改造を対応させればちゃんと動作しました。このスキンは、サイドバーを使えるように修正して、いずれGPLで公開したいと考えています(まだ着手できていませんが)。
* URL短縮プラグイン [#c90ae457]
#ogp(https://pukiwiki.osdn.jp/dev/?BugTrack/2525)
これまでダジャレンジャーさんの作成された[[Pukiwiki URL短縮プラグイン>https://dajya-ranger.com/pukiwiki/embed-url-shortener/]]を使用していましたが、[[公式のs.inc.php>https://pukiwiki.osdn.jp/dev/?BugTrack/2525]]が短縮URLにより簡単に対応できるよう改良されたので、ダジャレンジャーさん作成のPukiwiki URL短縮プラグインの使用をやめて公式のs.inc.phpでのURL短縮を利用しています。なお、s.inc.phpの設定はpukiwiki.ini.phpに書き込むことで使用開始できますが、これまで英数字10桁での短縮URLを使用していた場合はs.inc.phpの[[設定(9)>https://pukiwiki.osdn.jp/dev/?BugTrack/2525#j4da4be5]]を使えばURLはダジャレンジャー版URL短縮プラグインと変わりません。Google SEO的にもURL変更なく移行できるのはメリットですね。
実際には、当サイトでは今のところ(8)の方法と(9)の方法を混ぜて使用しています。つまり、表記方法としては(9)の方法をベースにしつつ、リダイレクトも有効にするというものです。ちょうど10文字の英数字でタイトルが付けられたページがあると不具合が生じるかも知れませんが、そのあたりは未検証です。
/////////////////////////////////////////////////
// Page-URI mapping handler ( See https:// pukiwiki.osdn.jp/?PukiWiki/PageURI )
class ShortUrl2PageURIHandler extends PukiWikiStandardPageURIHandler {
function get_page_uri_virtual_query($page) {
exist_plugin('s'); // Load s.inc.php
$page_id = plugin_s_get_page_id($page);
if ($page_id) {
return '?' . $page_id;
}
return '?' . pagename_urlencode($page);
}
function get_page_from_query_string($query_string) {
exist_plugin('s'); // Load s.inc.php
$m = array();
if (preg_match('#^([0-9a-z]{10})$#', $query_string, $m)) {
$page = plugin_s_get_page_from_page_id($m[1]);
if ($page) {
return $page;
} else {
// Not found
http_response_code(404);
die_message('Not found');
exit;
}
}
$is_get = $_SERVER['REQUEST_METHOD'] === 'GET'; //ここから(8)の方法
if ($is_get) {
if (strpos('&', $query_string) !== NULL) {
$dec_page = urldecode($query_string);
$page_id = plugin_s_get_page_id($dec_page);
if ($page_id) {
$short_url = get_page_uri($dec_page, PKWK_URI_ROOT);
header("HTTP/1.1 302 Found");
header("Location: $short_url");
exit;
}
}
}
return parent::get_page_from_query_string($query_string);
}
}
$page_uri_handler = new ShortUrl2PageURIHandler();
* timestamp.inc.phpの不具合? [#pdef7f1c]
[[timestamp.inc.php>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/timestamp.inc.php]]の使用法には2種類のものがありますが、
?plugin=timestamp&page=ページ名
で使う方法が短縮URLではうまく作動しません。ダジャレンジャー版URL短縮プラグインの時は作動していましたんですが。
?plugin=timestamp
で使用可能なので実用上はそこまで問題はありませんが・・・。
* その他 [#sc1919c6]
- [[htaccessのキャッシュ対応>https://oncologynote.com/?5c5fe2d226#r507f408]]
- [[存在しないページへのアクセスを404にする>https://oncologynote.com/?5c5fe2d226#d7ee84a9]]
- [[AutoTicketLinkNameというページが何度削除しても自動生成されるのを完全に防ぐ>https://oncologynote.com/?5c5fe2d226#ef3f9e9e]]
- [[autolink作成時のコメントを入れない>https://oncologynote.com/?5c5fe2d226#v551bb94]]
- [[スマホでページを見た際に数字が並んでいても電話番号としてのリンクを貼らない>https://oncologynote.com/?5c5fe2d226#r5906c5d]]
- [[デフォルトで「タイムスタンプを更新しない」に>https://oncologynote.com/?5c5fe2d226#v627f67e]]
#navi(pukiwikiカスタマイズ箇所/2022)