relatedview.inc.php

サマリ指定ページを参照しているページからリンク行を一行include
リビジョン0.15
対応バージョン1.4.4-1.4.6rc
投稿者Cue
投稿日2005-06-11 (土) 19:11:31

概要

設置したページに対してリンクしているページから、リンクの書かれた一行を抜き出して表示します。
各ページに散らばった情報を簡単に柔軟な視点で切り取る事が可能になります。

基本的な考え方は Use PukiWiki/カテゴリー を参考にして頂いた方が解りやすいと思います。
relatedviewではページを指し示すだけでなく、ページ内からリンクしている行を取り出してデータを再構築し、リンクそのものも相互リンクとして活用します。

なにができるの?

説明を簡単にするためAutoLinkを有効にしてあるとします。

ページA
名前タイプ重要度
addコマンド1
amazonインライン,ブロック
anameインライン,ブロック4
articleブロック3
attachブロック5
 
ページB
名前タイプ重要度
backブロック1
backupコマンド5
brインライン2
bugtrackブロック1
bugtrack_listブロック

上のような2つのページがあるとき、ブロックというページを作って#relatadviewと書き込むとこんな表示が得られます。

ブロック
amazonインライン,ブロック1
anameインライン,ブロック4
articleブロック3
attachブロック5
backブロック1
bugtrackブロック1
bugtrack_listブロック1

同じようにインラインというページを作り、それぞれを種類別一覧といったページでインクルードすると良いかもしれません(?)。
なお、テーブルのヘッダを出したい時は[[ >ブロック]]のような見えないリンクをページAかBどちらかのヘッダ行に入れると取り込んで表示します。

使い方

書式
#relatedview
#relatedview([nowikiname],[noautolink],[search=>pages],[nosearch=>pages])
(引数は順不同)
nowikiname,noautolink
それぞれWikiName,AutoLinkで付けられたリンクを追いません。
search,nosearch
リンクを追う/追わない対象ページを指定します。
(no)search=>pagesでpagesから始まるページ名を対象にします。
#をデリミタとする文字列はそのまま正規表現パターンとみなします。

ライセンス

GPLでお願いします。

インストール

  1. 自作プラグイン/relatedview.inc.php/ソースコードを relatedview.inc.php という名前で保存
  2. ファイルを plugin ディレクトリに配置

仕様

  1. テーブルとリストは間に空行を入れずに整形されます。テーブルのフィールド数が同じならば一つのテーブルが生成されます。
  2. それ以外の行は空行を挟んだパラグラフ扱いになります。
  3. ターゲット行にある元ページからのリンクは、元ページへ戻るためのリンクに自動的に置き換えられます。
  4. ターゲット行がテーブルで上セル連結されていた場合、連結は解消されて実データが入ります。
  5. オプションにWikiテキストを記述すると最初に出力されます。複数行分を入れたい場合はカンマ(,)で区切って改行を入れずに記述してください。
    この仕様は取り消されました。テーブルヘッダ等を出力したい場合は適当なページにヘッダを記述しダミーのリンク([[ >カテゴリー]]等)を挿入してください。
  6. include系のプラグインとは相性の悪い事があるかもしれません
    ブロックプラグインのある行は読みこまない仕様に変更しました。&ref等のインラインプラグインでパスが必要になる場合はフルパスで記述してください。*1
  7. 1.4.6_rcの複数行プラグイン引数に対応しました*2
  8. 今のところBracketNameしか対応できてません。
    WikiName,AutoLinkに対応しましたが、予想外のページが読みこまれたりするので新設のオプションを活用してください。

あと残るは Autoalias 対応辺りでしょうか。

コメント

  • ブロック単位で処理しようと考えてたらえらいことになりそうになったので、収拾つかなくなる前にとりあえず置いておきます。 -- Cue 2005-07-05 (火) 18:48:08
  • ブロック単位は止めました。まとまったブロックならインクルードするなり他に方法があると判断したためです。 -- Cue 2005-07-10 (日) 10:35:23
  • 降順にならびかえるにはどこを設定すれば良いんでしょうか? -- アッカ? 2005-07-23 (土) 08:29:32
  • 今のところソートは走査するページの順番を整えるためだけに使っていますので設定はありません。もし、この部分を逆順にしたいのなら「natsort($links);」の後ろに「$links = array_reverse($links);」を加えれば逆順になります。
    もし読み込んだ内容をソートしたいのなら「$retval = empty($body) ~」の直前にソートを入れれば可能ですが…テーブルヘッダなどを読み込んでいると表示がおかしくなりそうです。 -- Cue 2005-07-23 (土) 10:16:14
  • #relatedviewとだけ記述すると、autoリンクを追うページと追わないページがあるんですが、仕様でしょうか? -- アッカ? 2005-07-30 (土) 14:30:32
    • 状況がわからないので詳しくお聞きしますが、
      (1)#relatedプラグインで、追わないページは表示されていますか?
      (2)追わないページ名はどのようなページ名ですか?
      (3)現象の出たPukiWikiのバージョンと、何かパッチを適用しているか教えてください
      -- Cue 2005-07-30 (土) 16:36:28
    • 大変申し訳ない。解決しました。リンクしているページを一度更新したところ、抜き出して表示してくれました。 -- アッカ? 2005-07-30 (土) 18:50:17
    • 時々あるみたいですね。このページもCueから#relatedで見えてませんし。 -- Cue 2005-07-30 (土) 19:49:35


*1 全ては1.の仕様を通したいが為にconvert_htmlを変な形で呼んでるのが原因なのです…
*2 と言ってもrelatedview自身が複数行引数を取れるわけではありません。ボディ部分ありませんので

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-25 (金) 15:30:32
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.305 sec.

OSDN