pukiwikiプラグイン/pageinfo

2018-03-03 (土) 13:06:18 (535d)
お名前:

表記、そんな感じのものを作ったので、一応公開しておきます。

プラグイン概要

rssや(現在公式では未実装の)トラックバックなどで期待される、「ページのタイトル」「ページの概要」を提供するためのプラグインです。

例えばpukiwiki の日記系プラグインを使っていると、個々のページは『日記/2014-02-14』というようなタイトルで管理されます。 これ自体は別に良いのですが、例えば rssやトラックバックなどで外部から 参照される場合の『タイトル』として使うには、魂的にちょっと違います:
『日記/xxxx』というのはサイトでの管理上のファイル名でしかなく、本来期待されるのはその日記内に書かれている記事のタイトルだろう、という意味で。
似たような意味で、文書の概要を求める場合に『文書の先頭200文字』というのは、それなりにリーズナブルではあるものの、ページ内の構成によってはうまくないケースもありえます。

そこで、このプラグインでは一定ルールに従って タイトルやDescription を自動生成する機能を提供します。

プラグインとして提供していますが、実質的には title/description を生成する汎用ライブラリとして使われることを想定しています。

インストール方法

  1. 本ページに添付されている下記ファイルをダウンロードし、pageinfo.inc.phpに名前変更して pukiwiki の pluginフォルダにおいてください。
  2. 必要に応じて、当該プラグインファイル内の pageinfo_init() を書き替えてください。詳細は後述します。

古い版

こちらは古いバージョンです。メンテもしていません。

使い方

pageinfoプラグインはブロックプラグインです。
パラメータの指定方法によって、3つの使い方があります。

用法1

#pageinfo

プラグインが記載されている現在ページを対象として、「タイトル」「概要」を生成・表示します。

pagepukiwikiプラグイン/pageinfo
titlepukiwikiプラグイン/pageinfo
description表記、そんな感じのものを作ったので、一応公開しておきます。~*プラグイン概要 rssや(現在公式では未実装の)トラックバックなどで期待される、「ページのタイトル」「ページの概要」を提供するためのプ...

使い方のイメージ:ページの先頭に配置して、ダイジェストとして利用する。

用法2

#pageinfo(<page>)

page で指定されたページを対象にして、「タイトル」「概要」を生成・表示します。

使い方イメージ:1つのページに複数の日付分の pageinfo を並べることで、複数記事のダイジェスト一覧がみられる。

page日記/2017-02-16
titlepukiwiki:ページ情報まわり。
descriptionすっかり pukiwiki 対応モードです。まあ、開発中ってのはそういうものですね(笑)昨日のトラックバック機能の検討内でも書いた、『ページ概要』に関連した、検討メモ。+ →続きを読む。↑まず、目的に...

用法3

#pageinfo(<show|hide>,<title>,<description>)

タイトル、概要を自動解析ではなく、記載者が指定するモードです。
この指定がある場合、必ずこちらで指定したタイトル・概要が適用されます(後述の正規表現ルールなどよりも優先します)。

第一パラメータで "hide"を指定すると、画面表示しません。これは後述の関数呼び出しを想定しての機能です。

使い方:関数の利用

このプラグインでは、以下の2つの関数を持っています。
これらは外部のプラグインからも呼び出されることを想定しているものです。

pageinfo_get_description(<page名>)

<page名>で指定したファイルの「概要」をテキストで取得します。

pageinfo_get_title(<page名>)

<page名>で指定したファイルの「タイトル」をテキスト取得します。

あくまでプラグインの内部関数なので、使用したい外部プラグインでは

if (file_exists(PLUGIN_DIR.'pageinfo.inc.php')) require_once PLUGIN_DIR.'pageinfo.inc.php';

・・・というような宣言が必要になるでしょう。

使い方:タイトル・概要の取得指定方法

このプラグインは初期状態では以下のルールに従ってタイトル・概要を作成します。

タイトルファイル名そのもの
概要当該ファイルの先頭250文字まで

加えて、pageinfo_init() にルールを記載することで、『特定タイプのファイル名』のページに対して、『タイトル・概要の作成ルール』を作成することができます。
ルールは複数作成できます。

ルールは正規表現を用いて指定します。
サンプルを兼ねて、本プラグインの初期状態では以下のルールが記載されています。

対象となるファイル名"日記/"で始まるページ
タイトルwikiテキストで最初に発見された **(見出し)
概要wikihtmlで最初に発見された <h*>...</h*>(見出し)以降の文章から250文字

なお、以下の制約があります。

  • html での検索ルールを使用し、かつ画面表示する設定(用法1、用法2の書式)では、一部のプラグインが正常動作しません。特に動的要素が絡むものが駄目です。 (例えばコメント欄や、折りたたみがうまく動きません。
    • これについては、後述の「キャッシュを有効」にすることで、多くの場合に改善できます。
  • 通常ルール、およびwiki での検索ルールを使用する場合、概要に wiki書式が残ることがあります。

プラグインファイル内の設定と動作の変化

キャッシュファイルの使用許可・禁止

PLUGIN_PAEGINFO_ALLOW_CASHE を TRUE にすると、キャッシュファイルを使用するようになります。

使用する設定になっている場合、生成されたページタイトル・概要はファイルに保存され、以後、元ページが編集されるまではそのキャッシュファイルの情報を利用してタイトル・概要を出力します。
タイトル・概要を元データから導出する処理はそれなりにCPU負荷がかかるため、キャッシュ有効にすることでその面で有利です。
また、前述の通り htmlモードでの解析処理は他プラグインと干渉します:キャッシュすることで、最初のキャッシュ作成時以外ではこの悪影響を回避できます。

技術的な話。

正規表現で検索・切り出しすることがポイントです。

内部的に、一度「現在のページをhtml化」するステップがあるため、そこでpageinfoを無効化しているのが特徴的なところでしょうか。

Ver0.3 では、解析結果をキャッシュする/できるようにしました。
キャッシュは pukiwiki標準のcacheフォルダではなく、独自に pageinfo フォルダを作成しています。

変更履歴

  • 2018.Mar.03
    • 概要textモードで、pukiwiki書式の多くを除外する処理を追加。
    • 他プラグイン経由で pageinfoが再帰的に呼ばれたとき、捨てる処理追加。
  • 2017.Mar.26
    • 特定条件で「他ページのキャッシュ」を戻してしまう問題を修正しました。
  • 2017.Mar.14 Ver0.03
    • キャッシュ対応。一度作成したタイトル/概要をファイルにキャッシュすることで、html検索モードの弱点を回避できるようになります。
    • pukiwiki 1.5系での #auther 情報を対象外にするようにしました。
  • 2017.Feb.20 Ver0.02
    • 検索ルールを wiki書式優先に変更。理由詳細は下記 0.01版コメントを参照。

コメント

ご意見などがあれば。


お名前:

[+]0.01版コメント
お名前: