belong.inc.php†
サマリ | 条件指定可能な逆リンク表示プラグイン |
リビジョン | 1.7 |
対応バージョン | 1.4.7 |
投稿者 | コチ |
投稿日 | |
そのページに対してリンクしているページをリスト表示します*1。また、「ページAからはリンクされていて、ページBからはリンクされていないページ」というように条件を指定すると、それに合致するページを抽出することができます。これをカテゴリ機能と合わせて用れば、各ページから複数のカテゴリへリンクしておいて、その中から「カテゴリAには属しカテゴリBには属さないページ」を抽出するなど、柔軟なカテゴライズが可能になります。
ライセンスはGNU GPLです。
掲載先†
こちらに掲載してます。
コメント†
- コチ
まともにプラグインを作ったことが無いので、何かを根本的に間違えてるかもしれません・・・。とても不安ですが勉強のために公開させていただきます。問題ありましたらご指摘ください。
- reimy
すっきり、うまくできてますね。
- PPG
検索結果なんですがアルファベットでABC順にソートされて出ないでしょうか?バラバラに出てくるので数が多いと探しづらいです。それともなんかいい式の与え方があるのでしょうか。
- PPG
早速ありがとうございます、とてもいい感じです。sform.inc.phpも心待ちにしています。
- コチ
クロスサイトスクリプティングの脆弱性を発見しました*2。お手数ですが、当プラグインを使用されている方はver.1.3以降に更新してください。
- コチ
$non_listの内容を無視して出力される場合がありましたので、その点を修正しました。ご使用の環境で問題がある場合はver.1.4以降へ更新をお願いします。
- コチ
欲しいプラグイン/46で要望があったので、サマリ文または見出しの抽出・表示機能などの機能を追加しました。問題ありましたらご報告いただけると幸いです。
- chyunsyun
config/PageReadingを参照して結果をソートしてもらえると漢字の見出しのときに読みやすくなります。難しいでしょうか?
- wi
1.4.4環境だと、マニュアル通りのやり方だとコケちゃいますけど、$args[0]に直接double quotation("\"".$args[0]."\"")くっつければいけるようですね。
- 情報ありがとうございます。暇を見て対応したいと思います。 -- コチ
- 1.4.4対応版を公開しました。PageReading対応の方はもう少しお待ちください。 -- コチ
- 続・質問箱/488でこのプラグインを教えていただきました。続・質問箱/488に書いたようなことはできないでしょうか? -- NN
- ver.1.7で対応しました*3。続・質問箱/488の例だと
#belong("ページ名"&[hoge<])
のようにすればいけるかと思います*4。 --
- ありがとうございます~。さっそく使わせていただきます。 -- NN
- 例えば #belong("YAMADA, Taro") だとうまくいくのですが、#belong("YAMADA, Taro"&":人名") と書くと (belong:"ITO"に該当するページは存在しません) というメッセージが表示されてしまいます。原因はわかりますでしょうか? -- musicabella
- ↑すみません。表示されるメッセージは (belong:"YAMADA"に該当するページは存在しません) です。 -- musicabella
- もともとPukiWikiの仕様でプラグインの引数でカンマを扱えなかったので、1.4.2以前のバージョンについてはカンマを含むページ名を扱えないのは仕様です。1.4.3以降に関しましてはdev:BugTrack/534で解決が試みられていますが、「たぶん影響ないと思うんですけど。引数をダブルクオートで囲むプラグインってありましたっけ。」に、不運にもこのプラグインが該当しまして、カンマ云々以前に条件式の書式が成り立たなくなりました。現在、苦し紛れの暫定対応はしていますが、引数にカンマを含んでいる場合には今のところ回避方法がありません。次期バージョン以降で条件式にダブルクォートを使用しない書式に修正する予定なのでそれをお待ち頂くか、ページ名のカンマを全角にして頂くしかありません。。 -- コチ
- ありがとうございました。ページ名を変更することを検討します。 -- musicabella
- 1.4.5での動作を確認したので報告させていただきます。「#belong( ":独白" )」のように記述していますが上手く動かないようです*5。 -- いど
- 条件式のスペースを取り除いて試してみてください。 -- コチ
- あ!直りました。ご迷惑お掛けしました。過去バージョンではスペースを入れても大丈夫だったと記憶しているんですが…*6。どこかで仕様の変更あったんでしょうか?ざっと見ただけではその手の記述が見つからなかったので。 -- いど
- まったく、いつの間にこんな仕様になったのやら。(バグです・・・orz) -- コチ
- 特定(FrontPageやpcommentの記録ページ)のページをリストに表示しない方法はありますか? --
- こちらの「例2)#belongの結果から任意のページを外す」を参照してください。 -- コチ
- 解決しました。ありがとうございました。 --
- $non_listみたいに指定できると良いなと感じました。毎回「コメント/*」とか書くのが面倒なので。 --
- ハードコードでよければ268行目あたりのpreg_matchで$non_listをチェックしてる所につなげて正規表現で非表示条件を追加してみてください。 -- コチ
- belong.inc.php.1.7_genがDLできません attach/~.log に書けないと言われます -- Riu
- headingでアンカーが書かれていない場合#content_1_xにリンクするようにしてみました →とりあえずここに -- Riu
- 有難うございます。ダウンロードできない件、修正しました(メンテ時にパーミッションの設定をミスっていました)。アンカーが無い場合の動作につきましては暇を見て対応を考えさせていただきます。 -- コチ
- カテゴリそのものを一覧表示できるようなページを作りたいのですが、何か良い方法ありますか? --
- 以下のような方法になるかと思います。(ただし、いずれの場合も$non_listに設定したページ名は表示されません。その場合、$non_listを無視するような改造が必要です) --
- メタカテゴリ用のページを作って、そのページへ各カテゴリのページからリンクし、このbelongやrelatedで一覧表示する
- カテゴリページの名前が、例えば「カテゴリ/~」のように決まっているのであれば、ls系のプラグインで一覧表示する
- $non_listを無視する改造というと、具体的にどう改造すればいいのでしょう?268行目あたりの話だと思うのですが・・・スミマセン。 --
- 「if($p===true && !preg_match("/$non_list/",$pg))」を「if($p===true)」としてみてください。 --
- できました!!ありがとうございます。以上の改造後、「:Category」というカテゴリを作って各カテゴリに埋め込んでbelongで呼び出しました。期待通りの動きです。ご教授ありがとうございました。 --
- こちらのプラグインは,どこからダウンロードできますでしょうか? -- りんご
- すいません。リンク先変更しました。 -- コチ
- リンクありがとうございました! -- りんご
- すみません、ダウンロードはどちらからでしょうか?リンク先変更は具体的にどこですか? -- suuchi
- 現在、上のリンク先から落とせないのはサーバダウン中のためです。申し訳ありませんが都合により少なくとも1週間ほどは復旧作業ができません。ソースは手元にあるのでどこかアップロード先があればすぐに提供可能です。 -- コチ
- とりあえず、Riuさんサイト からDLさせていただきました。 -- suuchi
- 使用法の詳細を知りたいです。まだサーバが復帰されていないようですが、ココに解説を掲載していただけますか? -- サフ
- 一度復帰したのですが、停電で再度停止してしまいました。出張でほとんど自宅へ戻れないため対応が遅れましたが、復旧しましたのでご利用ください。 -- コチ
- そのページに対してリンクしているのにリスト表示されない場合がありました(数件表示するが完全ではない)。phpはいじってませんし#belongで読み出してるのですが・・・。正常動作するページとしないページがあるのですが原因はわかりませんでした。1.4.7のUTF-8版を使っている故の問題でしょうか。 --
- すいません。#relatedでも表示されないので何か別の原因ぽいです。 --
- linksプラグインを実行すると#belongで正常に表示できました。プラグインやバージョンの問題ではなかったのですが、解決したのでコメントします --
- ありがとうございます。同様の現象になったら$non_listの内容の確認と、お気づきの通りlinksプラグインによるリンクキャッシュの更新を試してみるのが妥当かと思います。 -- コチ
- コメント と表示さたページは完全に無視するような状態にしたいのですがif($p===true && !preg_match("/$non_list/",$pg))をどのように変更したらいいのかわかりません。過去にコチさんが268行目あたりのpreg_matchで$non_listをチェックしてる所につなげて正規表現で非表示条件を追加、とかかれてて阿呆なりにいろいろやってみましたが;時間があればご教授願います。 --
- 例えば、ページ名が「コメント」で始まるページを省きたい場合は「preg_match("/$non_list|^コメント/",$pg)」のような感じにしてみてください。 -- コチ
- 期待どうりの動きを確認できました。忙しい中ありがとうございます。 --
- またサーバが落ちていらっしゃるのでしょうか。利用させていただきたいので、ぜひ公開をお願いします。 -- (-.-;
- すみません。今回の復旧にはかなり時間がかかりそうなので、とりあえずこちらに置いておきました。 -- コチ
- 公開先を変更しました。上の掲載先からダウンロードしてください。 -- コチ
- 現在スキンに埋め込まれている<?php if ($related != '') { ?>~<?php echo $related ?>*7を使っているのですが、これをbelong.inc.phpの表示にすることはできないでしょうか?
条件式は指定せずに、#belongだけの表示だけでも従来より理想的な表示になりそうです。 --
- 返事がかなり遅れてしまい本当に申し訳ありません。試してみたのですが、なにやら
<?php require_once(PLUGIN_DIR.'belong.inc.php'); echo plugin_belong_inline(); ?>
この行を挿入したところから下の全てのソースが全て消えてしまい、うまく動作しませんでした。
………
<?php if ($is_page) { ?>
<span class="small">
ソースを表示した場合、プッツリと上記以降のソース全て(</body>なども)が表示されなくなってしまいます。 --