d3forumの他のforumとの集約表示 anchor.png

 ★ d3diary側のブロックに標準でこの機能を取り込み済みのため、このテクは不要になりました。 ただ、他の応用としては一つの方法論として有効かと思い、残しておきます。 :hammer:


Page Top

背景 anchor.png

d3diaryで実装した、d3forum統合コメントの元記事閲覧権限連動ブロック。
このブロックを単独表示している分には、d3diaryの閲覧権限に連動してくれるので安心なんですが、 他のモジュールのコメントや、他の掲示板のトピックと同一ブロック内に表示することができません。

そこで、それを可能にする方法を1つ、紹介しておきます。 この方法なら、閲覧権限を気にせず従来のようにd3forumトピックブロックをまとめて表示できます。

多少、重くなりぎみですが、実用上は問題にならないかもしれないレベルです。 お試しください。

Page Top

方法 anchor.png

Page Top

XUGJ_BLOCKの準備 anchor.png

 「XUGJ_BLOCK」smartyプラグインを使用します。 ここでは詳細を省略しますが、入手方法などはあちこちに情報がありますので、各人で準備してください。 :-D

Page Top

カスタムテンプレート作成 anchor.png

カスタムテンプレート、「_custom_d3diary_d3com_topics.html」 を以下のような内容で作成します。
ただし、内容を編集する必要がありますので、後述します。

 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<{xugj_block file="modules/d3forum/blocks/blocks.php" func="b_d3forum_list_topics_show" options="d3forum|10|false|time|false|||2,3,4,2,24,29,30|" item="block2"}>
<{php}>
  $topics = array(); $reg_time = array();
 
  $block = $this->get_template_vars('block');    //d3diaryのブロックからアサインされた
  foreach ($block['topics'] as $topic) {
    $topics[] = $topic;
    $reg_time[] = $topic['last_post_time'];
  }
 
  $block2 = $this->get_template_vars('block2');    //xugj_blockのd3forumブロックからアサインされた
  foreach ($block2['topics'] as $topic) {
    $topics[] = $topic;
    $reg_time[] = $topic['last_post_time'];
  }
 
  array_multisort($reg_time,SORT_DESC,$topics);
  $block['topics']=$topics;
  $this->assign('block',$block);
 
<{/php}>
 
<{if $block.full_view == true}>        //以下d3forumの「d3forum_block_list_topics.html」より転記
<table class="outer" cellspacing="1">
<thead>
<tr>
    <th><{$block.lang_forum}></th>
    <th><{$block.lang_topic}></th>
    <th align="center"><{$block.lang_replies}></th>
    <th align="center"><{$block.lang_views}></th>
    <th align="center" colspan="2"><{$block.lang_lastpost}></th>
</tr>
</thead>
<{foreach item=topic from=$block.topics}>
<{strip}>
<tr class="<{cycle values="even,odd"}>">
    <td><a href="<{$block.mod_url}>/index.php?forum_id=<{$topic.forum_id}>"><{$topic.forum_title}></a></td>
    <td>
    <a href="<{$block.mod_url}>/index.php?topic_id=<{$topic.id}>#post_id<{$topic.last_post_id}>">
    <{if $topic.u2t_marked}><img src="<{$block.mod_imageurl}>/block_marked.gif" alt="<{$block.lang_alt_marked}>" /><{/if}>
    <{* displays the last post's subject or topic title *}>
    <{if $block.disp_last_subject }>
    <{$topic.last_subject}>
    <{else}>
    <{$topic.title}>
    <{/if}></a>
    <{if ! $topic.solved}><img src="<{$block.mod_imageurl}>/block_unsolved.gif" alt="<{$block.lang_alt_unsolved}>" /><{/if}></td>
    <td align="center"><{$topic.replies}></td>
    <td align="center"><{$topic.views}></td>
    <td align="center" nowrap="nowrap"><{$topic.last_uname}></td>
    <td align="right" nowrap="nowrap"><{$topic.last_post_time_formatted}></td>
</tr>
<{/strip}>
<{/foreach}>
</table>
 
<div style="text-align:right; padding: 5px;">
<a href="<{$block.mod_url}>/index.php?page=search"><{$block.lang_linktosearch}></a>
&nbsp;
<{if is_numeric( $block.forums ) }>
<a href="<{$block.mod_url}>/index.php?forum_id=<{$block.forums}>"><{$block.lang_linktolisttopics}></a>
<{else}>
<a href="<{$block.mod_url}>/index.php?cat_ids=<{$block.categories}>"><{$block.lang_linktolisttopics}></a>
<{/if}>
&nbsp;
<{if is_numeric( $block.categories ) }>
<a href="<{$block.mod_url}>/index.php?cat_id=<{$block.categories}>"><{$block.lang_linktolistforums}></a>
&nbsp;
<{/if}>
<a href="<{$block.mod_url}>/index.php"><{$block.lang_linktolistcategories}></a>
</div>
 
<{else}>
 
<ol style="padding:3px;margin:0;">
<{foreach item=topic from=$block.topics}>
    <li>
    <a href="<{$block.mod_url}>/index.php?topic_id=<{$topic.id}>#post_id<{$topic.last_post_id}>">
    <{$topic.title}></a>(<{$topic.replies}>) <{$topic.last_uname}> <{$topic.last_post_time_formatted}></li>
<{/foreach}>
</ol>
<{/if}>
Page Top

カスタムテンプレート編集 anchor.png

    • xugj_blockのパラメータ群
      xugj_blockを使って、集約表示する他の掲示板群データを取得します。
      1. file="modules/d3forum/blocks/blocks.php"
         ここの「d3forum」は、集約表示する対象のd3forum掲示板群の、d3forumのhtml側ディレクトリ名に変更します。
      2. options="d3forum|10|false|time|false|||2,3,4,2,24,29,30|"
        ブロック関数に渡される各パラメータが、| | で区切られています。
      • 第1引数 「d3forum」は、集約表示する対象のd3forum掲示板群の、d3forumのhtml側ディレクトリ名に変更します。
      • 第2引数 「10」は、取得件数です。
      • 第3引数 「false」は、ここでは意味はありません。
      • 第4引数 「time」で、最新の記事から取得します。
      • 第5引数 「false」は、チェックしたトピックの優先表示を行う場合にtrueとします。
      • 第6引数 「」には、取得対象のd3forumのカテゴリ番号を記載します。但し、第8引数とのOR条件にはなりませんので要注意。
      • 第7引数 「」は、ここでは意味はありません。
      • 第8引数 「2,3,4,2,24,29,30」には、取得対象のd3forumのforum_id番号を「,」(カンマ)区切りで記載します。 ここでは、別ブロックから取得される日記コメントのforum_idは除外します。(そうしないと、コメントがだぶって表示されてしまいます。) また、第5引数とのOR条件にはなりませんので要注意。
      • 第9引数 「」は、ここでは意味はありません。
    • テンプレート部分の編集
       39行目付近と78行目付近の下記のように記述することも可能です。
      ここで「$topic.forum_id == 5」の部分は、d3diaryのコメント統合したforum_id番号(ここでは5でしたが、実際の番号)を指定することでd3diaryコメントのリンク飛び先を変更できます。 こうすることで、ユーザーは直に日記記事とコメント表示画面に飛べますので、必要に応じて設定してください。
       もちろん、編集せずにオリジナル記述のままでも構いません。
      Everything is expanded.Everything is shortened.
       
       
       
       
       
      
          <{if $topic.forum_id == 5}>
              <a href="<{$xoops_url}>/modules/diary/index.php?page=detail&amp;bid=<{$topic.link_id}><{$block.unique_key}><{$topic.unique_path}>">
          <{else}>
              <a href="<{$block.mod_url}>/index.php?topic_id=<{$topic.id}>#post_id<{$topic.last_post_id}>">
          <{/if}>
Page Top

ブロックの複製 anchor.png

  1. d3diaryの「日記コメントトピック 」を「複製」します。
  2. 複製したブロックの「編集」
    • 表示件数は、d3diaryコメント分のみの取得件数になります。
    • フルサイズ表示するかどうか、ここの指定が表示時に有効になります。
    • 「このブロックのテンプレート」に、先ほど作成したカスタムテンプレート「_custom_d3diary_d3com_topics.html」を指定します。
      090620_d3com_aggre.gif
Page Top

結果のスクリーンショット anchor.png

  • 閲覧権限フィルター付き日記コメントトピックと、他の掲示板トピックの集約表示
    090620_d3com_block_aggre.gif
  • 閲覧権限フィルター付き日記コメントトピックと、他の掲示板トピックの別ブロック表示
    (単に2つの標準ブロックを表示しただけ)
    090620_d3com_block_separate.gif


トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2812, today: 1, yesterday: 0
初版日時: 2009-06-20 (土) 11:17:07
最終更新: 2019-08-17 (土) 07:11:56 (JST) (1704d) by なーお