card.inc.php

サマリ指定範囲の内部リンクを全てブログカード風にする
リビジョン3.2
対応バージョン1.5.4
投稿者kanateko
投稿日2021-04-01 (木) 23:01:40

最後の引数 (マルチライン可) に含まれる内部リンクを全てブログカード風のリンクに表示するプラグイン。#lsや#recentなどページを一覧表示するタイプのプラグインと組み合わせることで、ブログのエントリーページ (記事一覧) のようなページを作ることができます。カードの表示は横型と縦型があり、指定したカラム数によってこれらが自動的に切り替わります。

また、2回目以降の表示はキャッシュを利用して高速化を図るほか、Wiki上から各ページのキャッシュを管理するといった機能も備わっています。キャッシュ管理機能では保存されているキャッシュの一覧表示、選択したキャッシュ内容の詳細表示、選択したキャッシュの一括削除が行なえます。

主な機能

ダウンロード

セットアップ

  1. 「plugin-card」フォルダの中にある「plugin」と「image」フォルダをPukiWikiのフォルダに入れる。必要に応じて「image」の中にある「eyecatch.jpg*1」を置き換える。
  2. 「skin」フォルダ内の「card.css」の内容をpukiwiki.cssに追加する。
  3. PukiWikiの設定でマルチラインプラグインを許可する。
配置の見本
┣ image
┃ ┗ eyecatch.jpg
┣ skin
┃ ┗ pukiwiki.css ← card.cssの内容を追加
┗ plugin
  ┣ card.inc.php
  ┗ resize.php

プラグイン設定

定数 (PLUGIN_CARD_~)初期値説明
DEFAULT_COLUMNint1デフォルトのカラム数
CHANGE_LAYOUT_THRESHHOLDint3レイアウトを切り替えるカラム数の閾値
HIDE_SNIPPET_THRESHOLDint4スニペットを非表示にするカラム数の閾値
CONTAINER_WIDTHstring'768px'コンテナの幅をデフォルトで設定する
null = 幅を固定しない
USE_CACHEbooltrue各ページの情報をキャッシュする
CACHE_PRETTYboolfalseキャッシュを読みやすい形で保存する
CACHE_DIRstringCACHE_DIR . 'card/'キャッシュのディレクトリ
MAKE_THUMBNAILbooltrueページごとにサムネイル画像を作成して保存する
THUMB_DIRstringCACHE_DIR . 'card/thumb/'サムネイル画像のディレクトリ
THUMB_DEFAULTstringIMAGE_DIR . 'eyecatch.jpg'デフォルトのサムネイル画像
THUMB_DEF_DIRECTboolfalseデフォルトのサムネイル画像を使用する場合、ページごとのサムネイルを作成せずに直接使用する
THUMB_WIDTHint320サムネイル画像の幅の最大値
THUMB_HEIGHTint180サムネイル画像の高さの最大値
THUMB_COMP_RATIOint75サムネイル画像のjpeg圧縮率
SNIPPET_LENGTHint200スニペット (本文の抜粋) の文字数
SHOW_SNIPPETbooltrueデフォルトでスニペットを表示する
SHOW_DATEbooltrueデフォルトで更新日を表示する
SHOW_BASENAMEboolfalseデフォルトでベースネーム表示
ERROR_IF_NOT_EXISTSboolfalse存在しないページが含まれている場合にエラーを出す
DEFAULT_JUSTIFYstring'flex-start'カード配置のデフォルト (justify-content)
SHORT_URL_PATTERNstring'/\?([0-9a-f]{10})/'短縮URLのIDパターン (参考:dev:BugTrack/2525)
現状は標準URLかsプラグインを用いた短縮URLにのみ対応
例1:?034d2305ca -> \?([0-9a-f]{10})
例2:?&034d2305ca -> \?\&([0-9a-f]{10})
REDIRECT_PLUGINSstring'alias, redirect'リダイレクト系プラグインのリスト
ページのソース取得中にリダイレクトされないようにするためのもの
現状は #plugin(page[,options]) ← この書式に当てはまるタイプにのみ対応

使い方

#card([1-6][,オプション]){{
[[リンク1]]
[[リンク2]]
︙

or

#ls #recent etc...
}}

カラム数1の場合は記述を省略可能。マルチラインを使用しない場合は引数の最後に改行なしでリンク (ブラケットネーム) を指定することでも使用できる。この際、指定するリンクが1つだけの場合はブラケットを省略してページ名だけで指定できる。

#card([オプション], ページ名 or [[リンク]])

オプション

実際の表示は参考リンク先で確認を。

カラム数の指定 (1 - 6)

1から6の数字でカラム数を指定する。指定しない場合はデフォルトで1。
カラム数が3以上で縦型のカードに切り替わり、4以上でコンパクト表示になる。

ベースネーム表示 (base)

階層化されたページの場合、ベースネームのみを表示する
表示例:PukiWiki/1.4/Manual/Plugin/A-D → A-D

スニペット・日付の非表示 (nosnippet, nodate)

nosnippet = スニペット (本文の抜粋や見出し) の非表示
nodate = 最終更新日時の非表示

指定した見出しの表示 (toc=)

カードのスニペットに本文の抜粋ではなくページの見出しを表示する。複数の見出しを表示することもでき、見出しの深さ、表示する見出しの開始位置と終了位置を指定が可能。

複数の見出しを表示する場合、スニペットは3行しか無いので、各見出しを読点でつなげた文に変換して出力する。

オプションの指定は以下のようにして行う。

見出しすべてを表示する場合
toc
上からn番目の見出し
toc = n
見出しのx番目からy番目まで
toc = x : y
  • xとyには負の数を指定でき、例えば-1なら最後から1番目の見出しということになる
  • xが空欄の場合は一番最初、yが空欄なら一番最後が自動的に指定される
    • 例えば toc = 1 : 3 と toc = : 3 は同じ結果になる
見出しの深さの指定
toc = 1, 2, 3 | [その他の指定]
  • 見出し指定の最初で1、2、3のいずれかを指定してバーティカルラインで区切ると深さの指定になる
  • 例えば見出し2 (行頭に**, h3) の1から3を取得したい場合、toc = 2 | 1 : 3 となる

カードの配置 (justify-content準拠)

flex-start, flex-end, start, end, left, center, right, space-between, space-around, space-evenlyのいずれかでカードの配置 (とコンテナの配置) を指定する。指定しない場合はデフォルトでflex-start。

一応justify-contentに準拠した指定方法ほぼ全てに対応しているが、flex-start、start、leftとflex-end、end、rightはそれぞれ同じ配置になる。

なお、カードが折り返してカラム数に足りない場合、例えばrightを指定してカードを右端に寄せても折り返しは左端からになる。これは意図した仕様なので気に入らない場合はCSSを弄ってもらう必要がある。

コンテナの幅 (width=)

全てのカードを覆うコンテナの幅を指定する。指定しないはデフォルトで768px。
個別のカードの幅はCSSで制御しているため、コンテナ幅を変えてもカラム数が増えるだけでカード自体に変化はない。

クラス・スタイルの追加 (class=, style=)

コンテナにクラスやスタイルを追加する。複数クラスを追加する場合は半角スペースで区切る。
使用例:class=class1 class2 class3, style=color:red;height:400px;

キャッシュについて

キャッシュは対象のページの更新日時がキャッシュの保存日時よりも新しい場合、もしくはキャッシュやサムネイルが見つからない場合に自動で更新される。

各ページのキャッシュには以下の内容が含まれている。

キャッシュの管理機能

./?cmd=cardにアクセスする (アクション型で使用する) と現在保存されているキャッシュの一覧を見ることができる。

任意のキャッシュを選んで確認ボタンを押すとキャッシュの削除画面が、詳細を押すと各キャッシュ内容の詳細が表示される。キャッシュの削除には管理者パスワードが必要となる。

更新情報

参考リンク

ライセンス

GPL v3


*1 対象ページに画像がない場合に変わりに使用するサムネイル画像

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.311 sec.

SourceForge