DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:plugin:pagequery

Pagequery プラグイン

互換性のある DokuWiki バージョン

Lemming, Anteater, Rincewind, Angua, Adora Belle, Weatherwax, Binky

plugin 目次ページを作成するためのオールインワン汎用案内プラグイン。全文・ページ名の検索/フィルター機能。複数列、グループ化、並べ替え、内容プレビューツールチップ付き表示機能。

最終更新日
2013-11-22
種類
Syntax
リポジトリ
ソース

この拡張は二年以上更新されていません。もはや維持管理や対応がされておらず、互換性に問題がある可能性があります。

This extension is not in the 'plugin' or 'template' namespace and is therefore ignored.

類似 alphaindex, autoindex, catlist, dir, navilevel, nslists, nspage, nspages, nstoc, pageindex, subpages, ​catlist

タグ list, navigation, search

ダウンロードとインストール

最重要:プラグインが機能するには PHP 5.3 以上が必要です。 手動でプラグインをインストールする方法についてはプラグインを参照して下さい。

NEWS—2013-10-07:編集ツールバーの新規ボタンから new popup syntax “​cheatsheet”。 新規言語:オランダ語

NEWS—2013-10-06:新規抽出オプション:​links(ページリンク)・​backlinks(ページヘのバックリンク) ​filter=正規表現機能を使用して抽出できるスペース区切りのページIDの一覧です(詳細は下記参照)。

2013-03-27:Weatherwax互換。 グループヘッダーのバグ修正済。

2013-03-08:重要なアップデート

  • Adora Belle and PHP 5.4.Adora Belle と PHP 5.4 互換
  • display オプション:機能変更。全てのメタデータ/ソート領域をページリンク表示に使用できる。{} 内に領域名を記入する。例:“{name} ({mdate})” は “Page-name (01-Jan-1970)” を生成します。mdate はページの更新日です。
  • 新規 layout オプション:tablecolumn を選択
    • table:複数列を作成するのに保守的な HTML のテーブルを使用します。
    • column:代わりに CSS3カラムレイアウトが使用されます。より新しいブラウザが必要ですが、ウィンドウのサイズ変更の際、より良く動作します。
    • いくつかのオプションは判りやすさのために改名しました(下の構文一覧を参照)。
  • filter オプションはよりエレガントに日付を処理します。You can filter the list based on dates, before, after, between, using real numeric dates, or even time periods in words (last week, 2 days ago, etc…)
  • Many small tweaks, and overall code clean up.

GitHub 上の開発履歴

PHP5.3 で実行しない場合、旧バージョンを利用できます。オプションはそれほど多くありませんが、それなりに便利です。 このバージョンはこれ以上アップデートされません。

バグや問題を報告は、可能な限り GitHub へお願いします。 できない場合はpagequery 議論やフォーラムへお願いします。 先頭にある指示には従ってください。

概要

プラグイン ページには異なる要望に対応する色々なページ一覧/案内プラグインがあります。 Pagequery は、Wiki ページ一覧に対するまとまったオールインワン方式として、多くの考え方を統一しようとします。名前・タイトル・a-z index、年・月・日、名前空間、作成者。更に迅速です。

表面的には、本当に素晴らしい IndexMenu プラグイン とよく似た役割を果たすように見えるかもしれません。 しかし Pagequery の目的は高尚でも精巧でもありません。 IndexMenuは、名前空間と名前空間内のページを表示するに焦点を合わせています。 多くのオプションで名前空間とファイルのソートし、能動的に目次を案内・操作することが可能です。 Pagequery の目的は、ページ一覧を表示することです。 もちろん、希望すれば名前空間順にソートすることもできます。 しかし、主要な目標はページを検索すること、任意の順序でページ一覧を表示すること、グループ別(A-Z、年、月等)に綺麗に表示するすること、加えて複数列によって空間を最大限に活用することです。 両方を試してみれば、それぞれが「異なったかゆさをかいている」ことがすぐに判ります。

機能

  • あらゆるソート順の Wiki の目次を作成:A-Z 順、更新日順、作成日順、作成者順、start pages
  • Wiki 内の全ページを検索
  • 特定の名前空間に検索範囲を制限
  • 全文検索のような、ページ内容の単語による検索
  • 正規表現を利用したページ名検索
  • A-Z 順、名前順、年順、月順、日順、作成者順、多くの他のオプションによる一覧のソート
  • それぞれの上にヘッダーを付けて一覧をグループに分割:A..Z、2010…2009、Jan..Dec、作成者名
  • ページ名の代わりにページタイトルに基づくリンク表示
  • ページのリンクにマウスを置いた時、便利な内容確認ツールチップを表示
  • リンクに続けてページ内容のスッキリした断片を置くことで、素晴らしいブログのようなスタートページを作成
  • スペースを最大限に活用:リンク一覧を複数列に表示
  • 判りやすくするために、列に枠線を表示

単独で構築したのでは何の価値もありません:pagequery は巨人(つまり Dokuwiki のコア機能)の肩の上に構築されています。 内部では、素晴らしい組込みページとDokuwiki 内で利用できる全文検索機能を慎ましく利用しています。 このため、新たに検索構文を覚える必要はありません。 しかし、強力なソートとグループ化オプションを提供することで混合物に少し新しい何かをもたらします。

可能な用途例:

  • 素晴らしい A-Z 索引、又は年/月索引付きの全 Wiki ページ一覧
  • 最近変更されたページ一覧
  • 特定の主題について議論のあるページ一覧(全文検索経由)
  • あるユーザー作成の全ページ一覧

更新日でソートされ、年/月でグループ化された名前空間内の全ページ一覧例は以下のとおりです:

An example of a navigation page

構文と使用方法

ページ文章内の一覧を表示したい場所に pagequery マークアップを挿入します。 同じページに異なる pagequery 一覧を持つこともできます。 1)

単純な場合:

{{pagequery>}}

複雑な場合:

{{pagequery>[query];fulltext;sort=key:direction,key2:direction;group;limit=10;cols=2;spelldate;proper}}

複雑な場合…:

{{pagequery>[query];fulltext;sort=key:direction,key2:direction;group;limit=100;cols=6;spelldate;proper;snippet=5;border=inside;hidestart;case;natsort}}

NEW:判りやすくするために、プログラミング言語のように構文を複数行に展開できます。 空白は単純に無視されます。 例:

{{pagequery>query;
  fulltext;
  sort=key:direction,key2:direction;
  group;
  limit=100;
  cols=6;
  spelldate;
  proper;
  border=inside;
  hidestart;
  case;
  natsort
}}

下の一覧は、とんでもなく長く徹底して威圧的に見えることを知っています。 願わくば、粘り強く使用方法を学び始めた場合、これが可能かあれが可能かをすぐに尋ねるでしょう。 そうして、多くの人々が議論ページに持っているような、自分の特定の要望に pagequery を適応させることができます。 かなり柔軟ですが、これら全てのオプションはどこかで定義する必要があります。 それ故に下の長い一覧になるわけです。

原則として、異なるオプションはセミコロン(;)区切り、値(例:ソート内)はコンマ(,)区切り、複数値はコロン(:)区切りです。

完全な構文一覧

オプション 説明 構文例 デフォルト
query > の直後に検索式を書きます。例:{{ pagequery>help;... }}
デフォルトでは、ページ名(またはページID)で検索します。Wiki ページのコンテンツを検索するには、下にある fulltext オプションを使用します。
*
help
test
全ページ
ページ名検索では正規表現2)を使用できます。全ページの表示には、* か .* を使用するか空白のままにします。3) ^p.+
[pで始まる単語]
注: * は単独ではとても便利です。他の正規表現の中では正規表現のルールに注意する必要があります。
namespaces 検索ボックスと同様に、ページ名検索では名前空間オプションが有効です。^ or -ns: が除外、@ or ns: が包含です。 ^:work @:home:games * なし
現在の名前空間 (.) と親の名前空間 (..) も対応しています4)
注: 名前空間のオプションを使用する場合、ページ名検索を提供する必要があります(少なくとも*)。なぜなら、例えば、正規表現関数は ^work(名前空間)と ^work(“work”で始まるページ名)とを区別することができません。
fulltext フルテキスト検索を使用する。全ての DokuWiki 検索オプションが可能です。このオプションで精巧な検索のすべてのソートが可能になります:詳細は検索ページで調べて下さい。 fulltext
fullregex 正規表現を使用して完全なページID(名前空間を含みます)を検索できます。未加工なパーワーユーザー向け機能ですが、ページIDに対してしか動作しません。 fullregex
sort ソートキーとソート順。キー毎に奨励ソート順指定できる。sort=key:direction,key2:direction sort=a:asc,name:asc
sort=cyear,cmonth,name
なし
ソートキー:
a, ab, abc 先頭1文字、2文字、3文字 sort=a
sort=ab
name, pagename ページ名5) [グループ化されない] sort=name
title, heading ページタイトル(又は最初のヘッダー) [グループ化されない] sort=title:desc
id, pageid 全ページID、名前空間を含む [グループ化されない] sort=id:asc
ns 名前空間(ページ名抜き) sort=ns
mdate, cdate 変更日、作成日(全部) [グループ化されない]sort=mdate
m[year][month][day]By [m]odified [year][month][day]; any combination accepted sort=myearmonthday
sort=mmonthday
c[year][month][day]By [c]reated [year][month][day]; any combination accepted sort=cyearmonthday
creator By page authorsort=creator
contributor By page contributor(s). Note: only first name affects sort order6)sort=contributor:asc
sort=contrib
links ​ By a list of links contained on this page (mainly for filtering). ​ The names (or ids) of all linked pages are joined in one space-delimited string, which can be searched via regex in the filter option below. ​
backlinks ​ By a list of backlinks pointing to this page or these pages. ​ Use as per ​links​ above. ​
ソート順:
asc, a 昇順、例:a → z, 1 → 10 sort=name:asc asc
desc, d 降順、例:z → a, 10 → 1 sort=mdate:desc
注:日付は降順がデフォルト(最新日付が上)、文章は昇順がデフォルト(A - Z)
filter 上記のソートキーのどれかを使って、正規表現を使用し、特定のページを含む又は除外した結果一覧を抽出する。
include 構文は、上記のsortに似ている:filter=<key>:<expression>,<key2>:<expression2> filter=creator:harry
filter=contrib:.*(harry|sally).*
exclude 結果からページを除外するには、キーの前に ^! を挿入する:filter=!<key>:<expression> filter=!creator:harry
dates filter=オプションは実際の日付を認識し、それに基づいて正しく抽出します。例:filter=cdate:3 years ago->3 months ago
-> 矢印区切りは、開始日・終了日を意味します。PHP の strtotime を使用することで、様々な形式を許容しています。php 関数を参照して下さい。
ある日付から現在まで filter=mdate:24.1.2009->
ある日付まで filter=mdate:->24.12.2012
直近3ヶ月間 filter=mdate:3 months ago->
group ソートキーの変更毎にグループヘッダーを表示7) group not grouped
例えば、[myear](つまり変更年)でソートされている場合、グループヘッダーは年が変わる毎に挿入されます(2010…2009…2008…等々…)
名前空間は maxns 制限8)以上のサブ名前空間でグループ化されます。
注:全てが一意なキーはグループ化することができません(例:name、page/id、mdate、cdate)
limit 結果の最大数。 0=全て(デフォルト) limit=10 全て
spelldate 数字の日付の代わりに、実際の月日名称を使用する。 spelldate 数字の日付
cols 表示一覧の列数(最大=6) cols=3 1
proper Display page names and/or namespaces in Proper Case (i.e. every word capitalised, and no _'s). なし
name Display page names in proper-case proper=name
header Display group headers in proper-case proper=header
proper=hdr
both Both the above options! proper=both
proper
注:これは DokuWiki のUseHeadingオプションや他のプラグインとは異なります(下のdisplayオプションを参照して下さい)。
border 列の周囲に枠線を表示する なし
none 枠線を表示しない(デフォルト) border=none
inside 列の間だけ枠線を表示する border=inside
outside pagequery表の周囲に枠線を表示する border=outside
both 表と列両方の周りに枠線を表示する border=both
border
hidestart 名前空間内のデフォルトスタートページを無視します hidestart スタートページを表示
注:このオプションが正しく動作するには、サイト設定管理内のスタートページ名設定に従ってスタートページを命名する必要があります!
display ページリンクの表示方法。例えば、ページ名、ページタイトル、ページID、ページ日付、ページメタデータの他の組合せで表示できます。
display=オプションは、テンプレート形式の置換文字列に対応します。display={name} ({cdate})
“Name-of-page (20 Jan 2013)”
注:メタデータ名は全て中括弧{}で囲む必要があります。そうでない場合は通常の単語とみなされます!
全ての Dokuwiki メタデータフィールドと使用中の pagequery メタ列に対応しています。ネストしているメタデータを取得するには key:subkey を使用します。display={date:created} {title}
使用可能なフィールド名一覧はmetadataを参照して下さい
snippet ページのスニペット(プレビュー)表示方法を制御します: tooltip
tooltip 各ページリンク上にポップアップするツールチップ snippet=tooltip
snippet
The next three options use the following syntax: <format>,<count>,<extent>
<format>: one of the formats listed below: inline, plain, quoted
<count>: to show 1st <count> items in list with an preview all
<extent>: can be choice of [c]hars, [w]ords, [l]ines, or [~]<stop at>
e.g. c? = ? chars, w? = ? words, l? = ? lines, ~? = search up to ? text/char/symbol
all
inline show in-line with the link snippet=inline,5,c20
plain show as simple text below the link (mimimal formatting) snippet=plain,10,w30
quoted show in tidy quotation box snippet=quoted,3,l3
maxns The number of namespace levels to display. show all
Display no more than 3 namespace levels, e.g. one:two:three maxns=3
maxns=0 ⇒ show all levels (default)
case Honour case when sorting, i.e. a..z then A..Z case case insensitive
natsort Use PHP's natural sorting functions, e.g. 1,2,10,12 rather than 1,10,12,2 natsort normal sorting
underline それぞれのリンクを判りやすくするために、薄い下線を表示する underline なし
label PageQuery一覧の一番上に表示するラベル label=A-Z of All Pages なし
hidemsg 空の結果メッセージを隠す hidemsg 表示
hidejump “先頭に戻る” リンクを隠す hidejump 表示
showcount Show the total count of page links at bottom of list showcount hidden
layout tableレイアウトかcolumnレイアウトかを選択する
table:ほぼ全てのブラウザと互換性のある HTML テーブルに基いています。
column:新しいCSS3カラムレイアウト機能を使用しています。古いブラウザでは動作しません9)
layout=column layout=table
fontsize pagequery 一覧のベースフォントサイズを設定します。任意のCSSサイズ単位を使用できます。例:12px、1.2px、80%、等々 fontsize=80% 90%
bullet 一覧項目(リンク)の箇条書きスタイル
なし、disc、circle、squareから選択
bullet=square なし
Note: All options are optional, and left to its own devices the plugin will default to
a long, boring, 1-column list… so you might want to take charge!

ソートとグループ化

ソートとグループ化を上手く行うにはいくつかの要領があります。 Pagequery には多くのソートオプションがありますが、そのほとんどはグループ化可能な設計になっています。 主なヘッダーで一覧をグループ化するつもりなら、広いカテゴリーから狭いカテゴリー順にソートするのが最も理にかなっています。

例えば:年 ⇒ 月 ⇒ 名前。 ソートアルゴリズムは最初に順にページ一覧をソートし、それから年のページを順にソートし、最後に月のページを名前順にソートします。 全ての名前が一意でもない限り、他の方法でソートするのはあまり意味がありません: その場合はグループ化もないでしょう!

上記のソートをグループ化した場合、以下のような構成になるでしょう:

      • 名前
      • 名前
    • 月2
      • 名前
      • 名前
      • 等々…

基本的なルールは:特定度の低いオプションから開始し、より具体的なオプションに進むです。

FAQとヒント

:?: 新しいページを追加しましたが、私の素敵な pagequery 一覧に表示されません。何故ですか?

  • 一覧が含まれているページのキャッシュをオフにする必要があります。ページのどこかに
     ~~NOCACHE~~ 

    を入れてください。瞬時に更新結果が表示されるはずです。

:?: wikiに多くのデフォルトのスタートページを持っているが、名前空間の内容を一覧表示する時、スタートページを含めたくない。どうすれば消すことができますか?

  • hidestart オプションを追加します。サイト設定管理のstartオプションが、使用中のスタートページ名に対応していることが前提です!

:?: 私はページ名の代わりにページタイトルを表示したい。どうすれば可能ですか?

  • pagequeryマークアップのどこかに display=title オプションを入れなさい。

:?: DokuWikiの新しいバージョンにwikiの内容を移行した後、pagequery がどのページにも表示されません。編集したページだけは、pagequery に再現します。任意のページが表示されません。

  • SearchIndex プラグイン を使用してインデックスを作り直してください。又は、wiki の内容と同様にインデックスも移行してください。この問題は pagequery 自体とは何の関係もありません。

たとえば、特定の名前空間の全てのページを A-Z 索引で一覧表示したい場合、以下でやり方です:

{{pagequery>@namespace;fulltext;sort=a,name;group}}           [fulltext version]

あるいは:

{{pagequery>@namespace *;sort=a,name;group;proper;cols=2}}    [pagename version: allows regex's]

@namespace から結果を検索します(他の検索条件が存在しないので全てのページを取得します)。 一覧は最初の一文字('sort=a')で、次に各文字毎にアルファベット順('sort=name')でソートされます。 groupオプションは、最初の一文字だけで一覧をグループ化します(それぞれがユニークになるように名前でグループ化することはできません)。

3列で結果を表示し、“文書例”に下線なしでリンクする場合:

{{pagequery>@namespace *;sort=a,name;group;cols=3;proper}}

別の例として、作成年作成月、でグループ化し、ページ名でソートし、2列表示し、実際の月名を表示し、更に“文書例”に下線なしでリンクし、テーブル列の周りに線を描く場合:

{{pagequery>@namespace *;sort=cyear,cmonth,name;group;spelldate;proper;cols=2;border}}

同じ条件ですが、ページ内で “help” という単語がを捜す(注:fulltext は“ページ名”ではなく”ページ内容“から探すことを意味します):

{{pagequery>@namespace help;fulltext;sort=cyear,cmonth,name;group;spelldate;proper;cols=2}}

更新: ページ名(ページID)で検索する場合のみ、名前空間に対応しています。 全文検索と同じ構文を使用します。例;@namespace|^namespace。 相対名前空間にはまだ対応していません。 加えて、ページ名で検索する場合、正規表現を使用できます。

例:”drafts“ 名前空間内の全ページを検索し、数字で始まるファイルを一覧化し、ページ名でソートする:

{{pagequery>@drafts [0-9]+.*;sort=name}}

又は、”happy:go:lucky“名前空間にある全ファイルを年、作成日でソートし、 適切な場合には、2列で表示、一覧のページ名ではなくページタイトルを表示する。

{{pagequery>@happy:go:lucky *;sort=cyear,cdate;group;proper;display={title};cols=2}}

うまくいけば、これらの例は、pagequeryの仕組みを理解するのに役立ちます。

議論

pagequery 議論ページを参照してください。

1)
columns プラグイン と協調して動作します。
2)
AKA: regex; just Google for 'help regular expressions' if you are interested in using this powerful feature
3)
名前空間によって抽出されない限り:次の注を参照
4)
名前空間ページで説明のある構文を使用します。
5)
名前空間は含まない
6)
not so useful, but handy for use in the filter option below
7)
グループ化の詳細な説明のためにこの表の後の注を参照してください
8)
下記参照
9)
IE6-10 で動作しないという問い合わせしないでください。当然の結果です。
ja/plugin/pagequery.txt · 最終更新: 2014-02-13 14:58 by 125.55.214.60

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki