レ点腫瘍学ノート

pukiwikiカスタマイズ箇所/2020 の履歴差分(No.4)


#author("2020-04-25T20:08:33+09:00;2020-04-25T16:56:10+09:00","default:tgoto","tgoto")
#author("2020-04-26T07:58:50+09:00;2020-04-25T16:56:10+09:00","default:tgoto","tgoto")
これまで[[pukiwikiカスタマイズ箇所/2018]]、[[pukiwikiカスタマイズ箇所/2019]]で書いてきたような改造を続けてきましたが、2020年もpukiwikiに対してのカスタマイズを追加しています。その過程を忘れてしまわないように記録しておきます。

*Pukiwiki 1.5.3へのアップデート

pukiwikiは一時期ほとんどアップデートが止まっていましたが、最近になって1.5.2そして1.5.3と立て続けにアップデートがリリースされました。主にPHPのバージョンアップへの対応ですが、本家でもついにレスポンシブに対応するなどモバイルユーザビリティを意識したアップデートになりました。

#ogp(https://pukiwiki.osdn.jp/?PukiWiki/Download/1.5.3,amp)

これまでに多数のカスタマイズを加えていたために、1.5.3へのアップデートはかなり苦労しました。特に、AMP対応とURL短縮を維持したままでPHPファイルを置き換えるのに、PHPエラーが出て表示が真っ白になってしまったりして随分と修正に時間がかかりました。

そのまま上書きしてしまっては現行の機能が損なわれたり設定が初期化されるなどして困るのは次のファイルです。

- default.ini.php
- en.lng.php
- ja.lng.php
- pukiwiki.ini.php
- lib/
-- lib/func.php
-- lib/html.php
-- lib/makelink.php
-- lib/pukiwiki.php
- plugin/
-- plugin/edit.php
-- plugin/newpage.php
-- plugin/read.php
-- plugin/ref.php
-- plugin/search.php
-- plugin/topicpath.php

また、attach、backup、cache、counter、diff、skin、wikiのフォルダは一切触れません。そして、下記のファイルは使用しないので、これもまた触りません(削除してしまっても問題ないと思います)

- keitai.ini.php
- rules.ini.php

これらのカスタマイズ箇所を上書きしてしまわないように気をつけつつ、慎重にアップデートを行います。カスタマイズ箇所を探すにはテキストファイルの差分(diff)がかんたんに表示できるソフトウェアが便利です。macの場合はFilemergeが活用できました。

*JSON-LDへの対応

SEOにどれほど貢献するのかは不明ですが、検索エンジンで(たとえばがんゲノムなどの)当サイトで記事を書いているキーワードがあったときに表示されやすくなればと思ってJSON-LDへの対応を行いました。JSON-LD以外にもschema.orgに対応しているフォーマットであればどれでも良いのですが、JSON-LDはHTMLのどこに書いても良いというのがPukiwikiカスタマイズとの相性の面で利便性が高いと思います。当サイトではHTMLのbodyの末尾につけています。

また、OGP imageにも対応できるようにPHPで分岐を作っています。

#ogp(https://developers.google.com/search/docs/data-types/article?hl=ja,amp)

> <script type="application/ld+json">
> 	{
> 	"@context": "http://schema.org",
> 	"@type": "Article",
> 	"name": "<?php echo $title ?> - <?php echo $page_title ?>",
> 	"author": "author",
> 	"author.name": "author",
> 	"datePublished": "<?php echo substr($lastmodified, 0, 10) ?>",
> 	"headline": "<?php echo plugin_topicpath_leafname_inline() ?>",
> <?php if(file_exists($ogpijpg)) { /*JPGのOGP画像が存在するとき*/ ?>
> 	"image": "<?php echo get_script_uri().$ogpijpg ?>",
> <?php } else if(file_exists($ogpipng)) { /*PNGのOGP画像が存在するとき*/ ?>
> 	"image": "<?php echo get_script_uri().$ogpipng ?>",
> <?php } else { /*JPGもPNGもOGP画像が存在しないとき*/ ?>
> 	"image": "<?php echo get_script_uri() ?>img/toppage.png",
> <?php } ?>
> 	"publisher.name": "m0370",
> 	"publisher.logo": "favicon192x192.png",
> 	"publisher.logo.url": "<?php echo get_script_uri() ?>favicon192x192.png",
> 	"mainEntityOfPage": "<?php echo $canonical_url ?>",
> 	"dateModified": "<?php echo substr($lastmodified, 0, 10) ?>",
> 	"description": "<?php echo $str = str_replace(array("\r\n", "\n"), '', mb_substr(strip_htmltag($body, $all = TRUE), 1, 170, "UTF-8")); /*本文の170文字を抜粋*/ ?>"
> 	}
> </script>

*AMP-analyticsの実装

AMP化したページではGoogle analyticsの実装がしにくいのですが、AMP用のanalyticsスクリプトも用意されています。当サイトはほぼ全ページがAMP HTML対応の構造になっていますのでAMPページと非AMPページでわけずにすべてのページでAMP用のanalyticsスクリプトを用いています(AMP用スクリプトは非AMPページでも動作します)。

#ogp(https://developers.google.com/analytics/devguides/collection/amp-analytics?hl=ja,amp)