- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 自作プラグイン/linkcard へ行く。
- 1 (2026-03-13 (金) 00:15:03)
- 2 (2026-03-13 (金) 02:38:37)
外部リンクカード表示プラグイン
| linkcard.inc.php | |
|---|---|
| 製作者 | kanateko |
| バージョン | 1.2.4 |
| 動作確認 | PukiWiki 1.5.4 - 1.5.4 |
| 最終更新 | 2026-03-13 |
外部リンクからOGP(Open Graph Protocol)情報を非同期で取得し、リッチなリンクカードとして表示するプラグイン。ブログやニュースサイトのような洗練された外部リンク表示を手軽に実現できる。
プラグインの特徴
- 🔗 OGP非同期取得:URLを指定するだけでタイトル・説明文・画像を自動取得
- ⚡ 高速なページロード:スケルトンUI(Shimmerアニメーション)を採用。非同期ロードによりページ本体の読み込みを妨げない
- 💾 インテリジェント・キャッシュ:OGPデータをサーバー側に7日間保存。外部サイトへの重複リクエストを防止し、表示を高速化
- ⚙️ キャッシュ管理画面:管理者パスワードによる認証付き管理画面 (
?cmd=linkcard) で、キャッシュの統計確認、詳細情報の閲覧、個別・一括削除が可能 - 🖼 画像最適化:取得した画像をWebP形式に変換・リサイズ(240x126px)。通信量を削減しつつ、カードに最適なサイズで表示
- 🌙 ダークモード対応:ダークモード用スタイル実装済み
- 📱 レスポンシブ設計:PCだけでなく、モバイル端末の狭い画面でも美しくレイアウトを維持
- 🛡 セキュリティ配慮:CSRF保護、POSTリクエストによる取得、適切なエスケープ、および画像配信用の
.htaccess自動生成
動作環境
- PukiWiki 1.5.4 以降
- PHP 8.2 以降
- PHP GD拡張 (WebP対応)
- PHP cURL拡張
- モダンブラウザ(ES2022対応)
ダウンロード
https://github.com/kanateko/pukiwiki-linkcard
| 日付 | バージョン | 備考 |
|---|---|---|
| 2026-03-13 | 1.2.4 |
|
| 1.2.3 |
| |
| 2026-03-12 | 1.2.2 |
|
| 1.2.1 |
| |
| 1.2.0 |
| |
| 1.1.0 |
| |
| 1.0.2 |
| |
| 1.0.1 |
| |
| 1.0.0 |
|
インストール
- GitHub の Release から最新のファイルをダウンロードする。
- ダウンロードした「
linkcard.inc.php」をplugin/ディレクトリに配置する。
使用方法
ブロック型プラグインとして、表示したいURLを引数に指定する。
#linkcard(URL)
引数一覧
| 引数名 | 説明 | 例 |
|---|---|---|
URL | リンク先のURL | #linkcard(https://google.com) |
使用例
基本構成 #linkcard(https://example.com/)
?cmd=linkcard からキャッシュの管理画面にアクセス可能。(要管理者パスワード)
技術的メモ
- 非同期通信:
- ページ読み込み時に、各カード要素が
data-url属性を持って生成される。 - クライアント側の JavaScriptがこれらの要素を検出し、PukiWiki のアクション型プラグイン (
?plugin=linkcard) に対して POST リクエストを送信して OGP データを一括ではなく順次取得する。
- ページ読み込み時に、各カード要素が
- キャッシュサーバー:
- PHP 側で
CACHE_DIR/linkcard/ディレクトリ内にデータをキャッシュ。 - OGP 情報はブラウザに返す JSON 形式で保存。
- 画像は GD ライブリを使用して、元のアスペクト比を維持しつつ
240x126に中央トリミングし、WebP 形式で保存(品質 80)。
- PHP 側で
- スタイリング:
- SCSS で記述。グラスモフィズム風の背景や、ホバー時のスムーズなアウトラインアニメーションを実装。
- セーフティとして、OGP取得失敗時や画像がない場合は、ドメイン名のみを表示するシンプルなカード構造にフォールバックする。
pukiwiki.ini.php内やプラグイン内でPKWK_SKIN_DARK_THEMEを1に設定すると、ダークテーマで表示される。- CSS をいじればユーザー設定に合わせたテーマの切り替えも可能 (
.plugin-linkcard--darkをprefers-color-scheme: darkに書き換えるなど)
- CSS をいじればユーザー設定に合わせたテーマの切り替えも可能 (
コメント
Loading comments…
