質問箱/4550

カテゴリ
サマリtracker_listで各ページのコメント数を表示したい
バージョン1.4.7
投稿者Coffee?
状態完了
投稿日2010-01-20 (水) 19:19:30

質問

質問箱/4106を参考に、自作プラグイン/linecounter.inc.phpを使用して、ブログのようにtrackerプラグインで精製した各ページのコメント数を数えてtracker_listで一覧にも表示したいのですが、どうもうまく行きません。 まずコメントプラグインをいじって、コメントが入ると

//comment

と付くようにしました。そしてこれを数えることにしました。

tracekrを用いて投稿すると、各ページに応じて

&linecounter(質問箱/1,/^(\/\/)(comment)/i);
&linecounter(質問箱/2,/^(\/\/)(comment)/i);
&linecounter(質問箱/3,/^(\/\/)(comment)/i);

という風に入るようにしたいのですが、やり方が分かりません。 [_page]を用いて

&linecounter([_page],/^(\/\/)(comment)/i);

とするとできそうですが、ブラケットがついてしまい、「linecounter.inc.php」では集計できませんでした。 今は投稿があったあと手動で編集しています。 自動で入れられるようにする方法はないでしょうか?

回答

  • 質問箱/4106 -- 2010-01-21 (木) 00:19:52
  • 少しトリッキーな方法ですが、予約項目の属性を上書き指定すればどうですか?:config/plugin/tracker/自作プラグイン のように「_page」の形式をtext と指定することで、デフォルトのpage から変更できると思います。(こちらは、リスト表示でブラケット内のエイリアスとリンク先を個別指定するために、この方法を使っています) -- 2010-01-21 (木) 00:19:52
  • ありがとうございます。_pageをtextにすることでブラケットが外れました。しかしtracker_listでどうやってコメント数を取得すればいいのか分からなくなりました。今までは:config/plugin/tracker/質問箱で
    |cmtcnt|コメント数|hidden|      |&linecounter([_page],/^(\/\/)(cmtmsg)/i,);           |
    のようにして、:config/plugin/tracker/質問箱/listでコメント数を表示したいところで[cmtcnt,Status]のようにしていたのですが、この方法では_pageが展開されません。なにかいい方法はありますか? -- Coffee? 2010-01-21 (木) 03:15:54
  • 2つ方法があります。 -- 2010-01-21 (木) 05:24:59
    • 1つ目は、list テンプレートのページだけで乗り切る方法です。すでに「_page」の形式をtext と指定しているので、&linecounter([_page],/^(\/\/)(cmtmsg)/i,); とlist テンプレートのページに書けば、対象の各ページに対して(それがそのページのソースに記述されていなくても)プラグインが実行されるはずです。(表組みのヘッダ指定行の中など1度しか実行されない場所は、置き換えルールが変わるので注意)
      この方法の問題は、プラグインの実行結果をソート条件に使えなくなる事と、[cmtcnt,Status] のような方法で自動的に色付けできなくなる事です。(Status に関する定義がデフォルトと同じなら、[,Status] とすれば「BGCOLOR(#ffccff):」などに置きかわるので、表組みでなら色付けの問題をあるていどは回避する事が可能です) -- 2010-01-21 (木) 05:24:59
      • 1つ目の方法の問題点を追加。
        対象のページ名をパラメータとして渡せないプラグインでは、不具合が出る可能性があります。渡せるものであってもページの相対指定を使用していると、基準がおかしくなる可能性があります。 -- 2010-01-21 (木) 13:05:27
    • 2つ目は、もう1つテンプレートページのセットを作ってしまう方法です。一方を投稿時の書き込み(tracker プラグイン)専用としpage テンプレートのページには&linecounter([_page],/^(\/\/)(cmtmsg)/i,); と書いておきます。もう一方は一覧時の読み込み(tracker_list プラグイン)専用とし、&linecounter([_page],/^(\/\/)(cmtmsg)/i,); の部分を[cmtcnt] にして、書き込まれた結果を読み込めるようにします。
      分業させることで1つ目の方法の問題点は解決できますが、テンプレートを変更・修正したい時に2倍の手間がかかるようになってしまいます。
      ちなみに、投稿専用とする場合はlist テンプレートのページを、一覧専用とする場合はform テンプレートのページを作らなくてもかまいません。(作っていた場合、テンプレートの定義内容の都合上、本来作りたいものと比べるとおかしな結果になる可能性はありますが) -- 2010-01-21 (木) 05:24:59
  • ありがとうございます。一つめの方法を使わせていただきました。listからも読み込めるんですね。大変助かりました。ところで私の記述ミスがありました。&linecounter([_page]/,/^(\/\/)(cmtmsg)/i,);ではなくて、&linecounter([_page],/^(\/\/)(cmtmsg)/i,); でした。すいません。 -- Dream? 2010-01-21 (木) 12:20:27
  • これで、この質問は完了ですか? -- 2010-01-21 (木) 13:05:27

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-23 (土) 00:35:03
Site admin: PukiWiki Development Team

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

OSDN