PukiwikiにTwitterの単体のツイートを埋め込むだけのプラグインです。
TLの複数のツイートを埋め込んだり検索結果を表示するような高度な機能は備えていません。JavaScriptを利用しているので自分のpukiwikiサーバにはほとんど負荷をかけません。キャッシュとしてツイート内容を保存しておき、2回目の表示からはフォールバックとしてツイートをキャッシュから表示することができます。
自分のpukiwikiを「はてなダイアリー」的なブログのように利用するために自作して自分だけで使っていたプラグインですが、せっかく作ったので公開しておきます。
詳しくはこちらのサイトもご覧ください。 https://oncologynote.jp/?b723fa4260
- pluginフォルダにtweet.inc.phpを設置します。
- キャッシュの保存場所のためにcacheフォルダ内にtweetというサブフォルダを作っておきます。このフォルダには読み書き可能なパーミッション(666)を与えます。
#tweet(1375069974583074816)
// ツイートIDを書く場合
#tweet(https://twitter.com/m0370/status/1375069974583074816)
// ツイートURLを書く場合
上記のように記載すればツイートが表示されます。
ver1.0と比べての変化点は、TwitterのサイトからJSONでツイート内容を取得してキャッシュしておく機能が付いた点です。また、ver2.0からver2.1に変わるときにキャッシュファイルの形式を変更しました(拡張子も.datから.txtに変更し、互換性はありません)。
https://platform.twitter.com/widgets.js を遅延読み込みで呼び出す方法を、 lazysizes.js を使わずにこのプラグイン単独で対応しています。
具体的には初回スクロール(scroll)または初回マウス移動(mousemove)で発火するjavascriptを使ってwidget.jsを読み込んでいます。このjavascriptはスキンの$head_tagの中に配置するようにしています。初回スクロールで発火するjavasriptは下記のサイトを参考にさせていただきました。なお、widgets.jsをpreloadで読み込むようにすることでさらに高速化が図れます。
https://q-az.net/lazy-load-script/
第2引数以降の引数にnoimgまたはnoconvとつけると、それぞれ画像を非表示にしたりリプライツイートのスレッドを非表示にできます。両方を併用することもできます。
Twitter Publishで発行されるHTMLタグを出力するだけなので単純な構造です。プラグインの第1引数にツイートIDかツイートのURLのどちらかを記載します。これによって、旧版ver1.0ではフォールバックを記載しておくことができましたが、ver2.0以降ではJSONキャッシュから自動でフォールバックが作成されます。
ツイートのURLでもツイートIDでも使用できるようにしていますが、ツイートIDかどうかを判定するところを暫定的に9桁で判定しているので、非常に昔のツイート(ツイートIDが8桁以下だった時代)のツイートは読み込めません。
ぼくがTwitterを始めた2007年6月の時点ですでにツイートIDは9000万台なので、ツイートIDが8桁と言えば2007年夏頃までの古いツイートでしょうか…(ちなみに当時のTwitterはまだインターフェイスが日本語化されておらず非常にマイナーでした)。