Re: コメント統合でブロックから元記事へリンク

  • このフォーラムはコメント用フォーラムです。新規トピックはたてられません
  • このフォーラムではゲスト投稿が許可されています
対象モジュール なーお'n研究室
件名 コメント統合でブロックから元記事へリンク
要旨 本情報はいささか古く、現在ではハック無しで組み込まれた、こちらのd3forum_rをどうぞご使用ください。 改変履歴 09/05/12 デフォルトテンプレートを編集する方法を追記 09/05/11 初版 ...

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2009/5/11 19:17 | 最終変更
nonn50  一人前   投稿数: 76

おはようございます。(今後は居酒屋の挨拶として、昼夜関係無く、これでいきます。よろしく)
大変便利な機能ですね(笑)

早速導入したいところですが、こちらで naaoさんが発言しているとおり、

なお、できれば、次回バージョンではソースハック無しで
テンプレート編集のみでOKなように取り込みを希望します。

ことを期待しつつ、もう少し様子を眺めています。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009/5/11 19:35 | 最終変更
なーお  長老   投稿数: 1746

nonn50さん、おはようございます。 :-D

反応が早いですね。(笑)

 やってみて判ったのですが、コメント元ページでのコメント数をあふれるような多数のコメントの場合で、私のサイトのようにモデレーターがトピックを分割した場合に、トピック表示ブロック側を使っていると、表示されたリンクをクリックするとコメント元ページには既にそのコメントが無くて流れている、という事態も起こります。

 これを考えると、投稿一覧ブロックのほうが現実的でしょうね。

(追記)
 実装サイトに携帯からアクセスしてみたのですが、元記事の容量が大きな場合は、ちょっと辛いですね。 PCのテンプレートは元記事に飛ばして、携帯は従来どおりd3forumに飛ばすして投稿のみを素早くチェック、というのがよさそうです :-D

(追記2)
 デフォルトテンプレートを編集して、モジュール毎に場合わけする方法を追記しました。 PC側だけ変更して、携帯側は携帯用デフォルトテンプレートのままにしておけば、携帯の表示容量の問題もなくなります。 :-)

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/3/19 1:46
kamirenjack 

はじめまして、naaonさま
モジュールや素晴らしい解説などいつも参考にさせていただいてます。

上記を参考にしてd3forumの投稿一覧ブロックよりPicoの元記事へのリンクすることができました。ありがとうございます。

そこでPicoの元記事のタイトル(表題)もブロックに表示できないか、と試行錯誤しているのですが実現できず質問させて頂きました。
何かヒントでもいいのでご教授いただけないでしょうか。
どうぞ宜しくお願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012/3/19 8:40 | 最終変更
なーお  長老   投稿数: 1746

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
    if( ( $external_link_id = $d3com_obj->validate_id( $external_link_id ) ) === false ) {
        $can_display = false;
    } else {
        $moto_entry = $d3com_obj->fetchSummary( $external_link_id );
    }

とすることで、トピック表示の時に出てくる要旨と同様の情報が取れますので、あとは$topic4assign 配列の中に追記してアサインして、テンプレートで参照できますね。 ポスト一覧の場合は、function b_d3forum_list_posts_show( $options )に同様にすればできると思います。 これの意味がわからない場合はサポートできないので諦めてください。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/3/20 5:00
kamirenjack 

なーおさま

お忙しい中、迅速なお返事大変感謝しております。

引用:
まずこの件は、d3forumのメンテプロジェクト版には取り込み済みでテンプレート編集だけで行けますが、そちらをお使いでしょうか。 まあハックしても同じですけど微妙に改良されているので、今後はd3forum-0.86以降をお勧めします。

こちらに関してはd3forum-0.86というモジュールを使わせて頂き、このページのテンプレート編集箇所を参考にさせて頂きました。

まず結果といたしましては頂いたヒントを元に数時間戦ってみましたが、私の知識不足により当初の目的地までは辿り着けていません・・・><

phpを理解していないのでお恥ずかしい限りですが、以下を行いました。(実際にはソースを壊さないかビクビクしながら色々試しました。苦笑)
頂いたヒントをb_d3forum_list_posts_show( $options )内に追記して、$topic4assign 配列の中の最後の行に

1
'moto_entry' => print( $post_row['moto_entry'] ) ,

と追記しました。

そしてテンプレート編集のd3forum_block_list_posts.html内の該当箇所に <{$post.moto_entry}> と追記したところ、ブロックの該当箇所に [1] と表示されました。

引用:
また、元記事のコメントは「Re:元記事タイトル」という件名になりますから、元記事自身のタイトルはほとんど変わらないはずですし、特に必要性は無いように思います。 ハックすればできますが、、その必要も無いしそうすることでかなり重くなると思うのでやめたほうが良いと思います。

かなり重くなるのですね。
質問時には単純に統合したPicoページ内のd3forumの題名にPicoのページ表題が入っているので、d3forumの題名を書き換えた場合にもPicoのページ表題が簡単に継続して取得できるのかなと考えておりました。
題名が変わった場合にどの記事に対するコメントか分かればいいな、という考えから思いついたことでした。forumという使い方よりも記事に対するコメントという使い方を想定しているもので・・・

重くなるというご指摘と、この改造の重要度、また勉強不足から一旦保留とし、また後ほど勉強しながら追ってみることにします。

お手数おかけしました。
大変感謝しております。有り難うございました。
これからもどうぞ宜しくお願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/3/20 8:32 | 最終変更
なーお  長老   投稿数: 1746

kamirenjackさん

おしいところまで行ってますね。
オリジナルのver0.85ではこんなに簡単にはいかないのですが、元記事閲覧権限連動を仕込んだことで、案外楽に取得できるようになっているのです。

1
'moto_entry' => print( $post_row['moto_entry'] ) ,

ではなくて、

1
'moto_entry' => $moto_entry,

に変更してみたうえで、

テンプレートでは、

1
<{$post.moto_entry.subject}>

これでどうですか?
$moto_entry 配列の中には、subject 以外にも、dirname, module_name ,uri ,summary が入ってます。言い換えれば、トピック毎にこれらをSQL文発行して取りに行くので重くなるわけです。

 まあ、ハックしてまでやることについては相変わらずお勧めはしませんが。。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/3/20 11:41
kamirenjack 

なーおさま

おはようございます^^
またも早速のご返事ありがとうございます。

結果から言いますと教えて頂いたので出来ましたっ☆
思い描いている動作が実現となりました!

引用:
$moto_entry 配列の中には、subject 以外にも、dirname, module_name ,uri ,summary が入ってます。言い換えれば、トピック毎にこれらをSQL文発行して取りに行くので重くなるわけです。

なるほど、フォーラム記事ページの要旨うんぬんの話と繋がりました。
要旨の情報が配列に入ったという理解であってますか。

引用:
まあ、ハックしてまでやることについては相変わらずお勧めはしませんが。。

やはり動作が重くなる事が主な理由ですか。
それともハック行為うんぬんでしょうか。両方+他諸々ですかね・・・

お分かりの通り理解がいってないままハックしてしまってちゃんと運用できるんだろうか・・・一番怖いところです。
サイト自体はまだテスト状態なので少しテストしてみようと思います。

お時間割いて頂き本当に感謝しております。
有り難うございました☆

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012/3/20 12:48 | 最終変更
なーお  長老   投稿数: 1746

ハックのデメリットは、モジュールのアップデートの時に上書きされてしまうことでしょう。
特に、今後主流になってゆく自動アップデータの兼ね合いもあります。それが使えなくなってしまいます。
まずはテンプレートのカスタマイズで済む範囲に留めておきたいものですね。

投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ