本情報はいささか古く、現在ではハック無しで組み込まれた、こちらのd3forum_rをどうぞご使用ください。
改変履歴
- 09/05/12 デフォルトテンプレートを編集する方法を追記
- 09/05/11 初版
d3forumコメント統合でブロックから元記事へリンクしたい
1.1. function b_d3forum_list_topics_show
内の191~195行目付近を、以下のように変更。
_d3forum_topics テーブルから フィールド値「topic_external_link_id」を抽出し、アサインします。
191 192 193 194 195 |
|
同じく、224~243行目付近、以下の1行を追記
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
|
1.2. function b_d3forum_list_posts_show
内の392行目付近
1 |
|
同じく421~433行目付近に1行追加
421 422 423 424 425 426 427 428 429 430 431 432 433 |
|
2. カスタムテンプレート作成(Altsys使用)
以下、picoへのリンクの例です。 ディレクトリ名や、他のモジュールの場合は当該行を適宜編集してください。
また、コメント元記事でのコメントはpost一覧表示を前提にしています。 トピック表示の場合は省略します。
なお、複数のモジュールに対応するためには、テンプレート内で
<{if $post.forum_id == 1}> や <{if $topic.forum_id == 1}>
などの方法で場合分けし、リンク先を切り替える必要があります。 逆に言えば、きちんと場合分けを記載しさえすれば、カスタムテンプレートである必要はなく、d3forumの各デフォルトテンプレート本体を編集しても構いません。
2.1. _custom_d3f_topics.html
「(d3forum)_block_list_topics.html」からコピーしてきて、16行目付近と54行目を付近のリンクを編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
なお、デフォルトテンプレート「(d3forum)_block_list_topics.html」を編集して使用する場合は、
16 17 18 19 20 21 22 23 |
|
62 63 64 65 66 67 68 69 70 |
|
などとして判別分岐すればOKです。上記の例は、picoとd3blogのリンク先を変更する場合です。$topic.forum_idの部分と、リンク先はサイト毎に適宜設定が必要です。
2.2. _custom_d3f_posts.html
「(d3forum)_block_list_posts.html」からコピーしてきて、3行目付近のリンクを編集します。
1 2 3 4 5 |
|
なお、デフォルトテンプレート「(d3forum)_block_list_posts.html」を編集して使用する場合は、
3 4 5 6 7 8 9 10 11 |
|
などとして判別分岐すればOKです。上記の例は、picoとd3blogのリンク先を変更する場合です。$topic.forum_idの部分と、リンク先はサイト毎に適宜設定が必要です。
3. d3forumブロックの複製
Altsysで、d3forumのブロックを複製します。
なお、それぞれコメント統合元モジュールごとに、複製する必要があります。
複数の統合コメントのフォーラムを一括指定して表示することも可能ですが、テンプレート内の記述で if文で場合分けが必要になってきますので、ここでは割愛します。
3.1. トピック一覧 ブロック
- カスタムテンプレートを使用する場合は、ブロックオプションの「このブロックのテンプレート」には、 「db:_custom_d3f_topics.html」 に変更します。
- 「フォーラムを指定する」 欄には、コメント統合したフォーラムを指定します。
- 表示件数、その他オプションを指定します。
- タイトル、表示対象、優先度、などを適切に設定します。
3.2. 投稿一覧 ブロック
- カスタムテンプレートを使用する場合は、ブロックオプションの「このブロックのテンプレート」には、 「db:_custom_d3f_posts.html」 に変更します。
- 「フォーラムを指定する」 欄には、コメント統合したフォーラムを指定します。
- 表示件数、その他オプションを指定します。
- タイトル、表示対象、優先度、などを適切に設定します。
4.1. d3forum_comment_listposts_flat.html
26行目付近。
<a href="<{$mod_url}>/index.php?post_id=<{$post.id}>" id="post_path<{$post.unique_path}>" name="post_path<{$post.unique_path}>"><{$post.subject}></a>
これを、以下のように変更
<a href="<{$mod_url}>/index.php?post_id=<{$post.id}>" id="post_path<{$post.unique_path}>" name="post_id<{$post.id}>"><{$post.subject}></a>
実体ページ:inc/d3forum/d3f_com_alt
関連ページ:d3forum側で統合コメントのツリー全表示
d3forum側で統合コメントのツリー全表示 |
XOOPSサイト構築 |
d3コメント統合の、元記事閲覧権限連動ハック |
コメント一覧
投稿ツリー
-
Re: コメント統合でブロックから元記事へリンク
(nonn50, 2009/5/11 19:17)
-
Re: コメント統合でブロックから元記事へリンク
(なーお, 2009/5/11 19:35)
-
コメント統合でブロックから元記事(Pico)のタイトル取得
(kamirenjack, 2012/3/19 1:46)
-
Re: コメント統合でブロックから元記事(Pico)のタイトル取得
(なーお, 2012/3/19 8:40)
-
Re: コメント統合でブロックから元記事へリンク
(kamirenjack, 2012/3/20 5:00)
-
Re: コメント統合でブロックから元記事へリンク
(なーお, 2012/3/20 8:32)
-
Re: コメント統合でブロックから元記事へリンク
(kamirenjack, 2012/3/20 11:41)
-
Re: コメント統合でブロックから元記事へリンク
(なーお, 2012/3/20 12:48)
おはようございます。(今後は居酒屋の挨拶として、昼夜関係無く、これでいきます。よろしく)
大変便利な機能ですね(笑)
早速導入したいところですが、こちらで naaoさんが発言しているとおり、
なお、できれば、次回バージョンではソースハック無しで テンプレート編集のみでOKなように取り込みを希望します。
ことを期待しつつ、もう少し様子を眺めています。
nonn50さん、おはようございます。
反応が早いですね。(笑)
やってみて判ったのですが、コメント元ページでのコメント数をあふれるような多数のコメントの場合で、私のサイトのようにモデレーターがトピックを分割した場合に、トピック表示ブロック側を使っていると、表示されたリンクをクリックするとコメント元ページには既にそのコメントが無くて流れている、という事態も起こります。
これを考えると、投稿一覧ブロックのほうが現実的でしょうね。
(追記)
実装サイトに携帯からアクセスしてみたのですが、元記事の容量が大きな場合は、ちょっと辛いですね。 PCのテンプレートは元記事に飛ばして、携帯は従来どおりd3forumに飛ばすして投稿のみを素早くチェック、というのがよさそうです
(追記2)
デフォルトテンプレートを編集して、モジュール毎に場合わけする方法を追記しました。 PC側だけ変更して、携帯側は携帯用デフォルトテンプレートのままにしておけば、携帯の表示容量の問題もなくなります。
はじめまして、naaonさま
モジュールや素晴らしい解説などいつも参考にさせていただいてます。
上記を参考にしてd3forumの投稿一覧ブロックよりPicoの元記事へのリンクすることができました。ありがとうございます。
そこでPicoの元記事のタイトル(表題)もブロックに表示できないか、と試行錯誤しているのですが実現できず質問させて頂きました。
何かヒントでもいいのでご教授いただけないでしょうか。
どうぞ宜しくお願いします。
kamirenjackさん、こんにちは。
まずこの件は、d3forumのメンテプロジェクト版には取り込み済みでテンプレート編集だけで行けますが、そちらをお使いでしょうか。 まあハックしても同じですけど微妙に改良されているので、今後はd3forum-0.86以降をお勧めします。
そこでPicoの元記事のタイトル(表題)もブロックに表示できないか、と試行錯誤しているのですが実現できず質問させて頂きました。
何かヒントでもいいのでご教授いただけないでしょうか。
それはまあ、普通に考えると無理ですね。 d3コメント統合という細いパイプを通してやり取りしているわけで、相互に連携する情報には限りがあり、フォーラム側では元記事の情報は最小限しか得られていません。 フォーラム側で元記事情報を得ているページは、そのトピック内投稿一覧表示と1投稿表示のページのみで、ブロックには渡っていません。
また、元記事のコメントは「Re:元記事タイトル」という件名になりますから、元記事自身のタイトルはほとんど変わらないはずですし、特に必要性は無いように思います。 ハックすればできますが、、その必要も無いしそうすることでかなり重くなると思うのでやめたほうが良いと思います。
もし、トピック一覧表示で元記事情報を得ようとすると、 各トピック毎に元記事の各モジュール呼び出しが行われます。その重さは想像できるのではないかと思います。
それでもどうしても、ということでしたら、以下にヒントだけ。(ver0.86ベースで)
block_functions.phpの、function b_d3forum_list_topics_show( $options )内の269行目付近
268 269 270 271 272 |
|
とすることで、トピック表示の時に出てくる要旨と同様の情報が取れますので、あとは$topic4assign 配列の中に追記してアサインして、テンプレートで参照できますね。 ポスト一覧の場合は、function b_d3forum_list_posts_show( $options )に同様にすればできると思います。 これの意味がわからない場合はサポートできないので諦めてください。
なーおさま
お忙しい中、迅速なお返事大変感謝しております。
まずこの件は、d3forumのメンテプロジェクト版には取り込み済みでテンプレート編集だけで行けますが、そちらをお使いでしょうか。 まあハックしても同じですけど微妙に改良されているので、今後はd3forum-0.86以降をお勧めします。
こちらに関してはd3forum-0.86というモジュールを使わせて頂き、このページのテンプレート編集箇所を参考にさせて頂きました。
まず結果といたしましては頂いたヒントを元に数時間戦ってみましたが、私の知識不足により当初の目的地までは辿り着けていません・・・><
phpを理解していないのでお恥ずかしい限りですが、以下を行いました。(実際にはソースを壊さないかビクビクしながら色々試しました。苦笑)
頂いたヒントをb_d3forum_list_posts_show( $options )内に追記して、$topic4assign 配列の中の最後の行に
1 |
|
と追記しました。
そしてテンプレート編集のd3forum_block_list_posts.html内の該当箇所に <{$post.moto_entry}> と追記したところ、ブロックの該当箇所に [1] と表示されました。
また、元記事のコメントは「Re:元記事タイトル」という件名になりますから、元記事自身のタイトルはほとんど変わらないはずですし、特に必要性は無いように思います。 ハックすればできますが、、その必要も無いしそうすることでかなり重くなると思うのでやめたほうが良いと思います。
かなり重くなるのですね。
質問時には単純に統合したPicoページ内のd3forumの題名にPicoのページ表題が入っているので、d3forumの題名を書き換えた場合にもPicoのページ表題が簡単に継続して取得できるのかなと考えておりました。
題名が変わった場合にどの記事に対するコメントか分かればいいな、という考えから思いついたことでした。forumという使い方よりも記事に対するコメントという使い方を想定しているもので・・・
重くなるというご指摘と、この改造の重要度、また勉強不足から一旦保留とし、また後ほど勉強しながら追ってみることにします。
お手数おかけしました。
大変感謝しております。有り難うございました。
これからもどうぞ宜しくお願いします。
kamirenjackさん
おしいところまで行ってますね。
オリジナルのver0.85ではこんなに簡単にはいかないのですが、元記事閲覧権限連動を仕込んだことで、案外楽に取得できるようになっているのです。
1 |
|
ではなくて、
1 |
|
に変更してみたうえで、
テンプレートでは、
1 |
|
これでどうですか?
$moto_entry 配列の中には、subject 以外にも、dirname, module_name ,uri ,summary が入ってます。言い換えれば、トピック毎にこれらをSQL文発行して取りに行くので重くなるわけです。
まあ、ハックしてまでやることについては相変わらずお勧めはしませんが。。
なーおさま
おはようございます^^
またも早速のご返事ありがとうございます。
結果から言いますと教えて頂いたので出来ましたっ☆
思い描いている動作が実現となりました!
$moto_entry 配列の中には、subject 以外にも、dirname, module_name ,uri ,summary が入ってます。言い換えれば、トピック毎にこれらをSQL文発行して取りに行くので重くなるわけです。
なるほど、フォーラム記事ページの要旨うんぬんの話と繋がりました。
要旨の情報が配列に入ったという理解であってますか。
まあ、ハックしてまでやることについては相変わらずお勧めはしませんが。。
やはり動作が重くなる事が主な理由ですか。
それともハック行為うんぬんでしょうか。両方+他諸々ですかね・・・
お分かりの通り理解がいってないままハックしてしまってちゃんと運用できるんだろうか・・・一番怖いところです。
サイト自体はまだテスト状態なので少しテストしてみようと思います。
お時間割いて頂き本当に感謝しております。
有り難うございました☆
ハックのデメリットは、モジュールのアップデートの時に上書きされてしまうことでしょう。
特に、今後主流になってゆく自動アップデータの兼ね合いもあります。それが使えなくなってしまいます。
まずはテンプレートのカスタマイズで済む範囲に留めておきたいものですね。