ページへ戻る

− Links

 印刷 

d3diary開発日記​/2010-10-21 :: なーおんWEB

xpwiki:d3diary開発日記/2010-10-21


2010 10月 21 (木)
 

10.23 XOOPS[4] Cubeサタデーラボでの発表 anchor.png[5]

 今週末、10月23日、Ryusさん主催のXOOPS Cubeサタデーラボ [6]で、「d3diary[7]開発とコメント統合プチカスタマイズ」と題して、私の発表の場があります。 お時間のある方はぜひどうぞ。(上記Ryusさんのページから要申し込み)

Page Top

発表概要 anchor.png[8]

 発表内容(ほぼ原稿)は、以下になります。よろしくです。

ページ内コンテンツ[9]
  • d3diary開発とコメント統合プチカスタマイズ
    • なーおって、誰?
    • d3diary開発経過
      • minidiaryからのフォーク経緯
      • d3diary公開とその後
    • 動作環境
    • d3diary機能紹介(特徴を抜粋)
      • サイドメニュー(minidiary由来)
      • CSSレイアウト
      • カテゴリー
      • タグ
      • 外部ブログ
      • 閲覧権限
      • その他
    • 今後の進路?
    • コメント統合のプチカスタマイズ
      • d3コメント統合の、元記事閲覧権限連動ハック
      • コメント統合でブロックから元記事へリンク
      • d3forum側で統合コメントのツリー全表示
      • (未実施)今後何とかしたいこと
    • 謝辞

d3diary[7]開発とコメント統合プチカスタマイズ anchor.png[10]

Page Top

なーお[11]って、誰? anchor.png[12]

なーお[11]プロフィール[11]

 プロフィール[11] anchor.png[13]

inc/d3diary[7]報告101023/なーお[11]/private は閲覧制限がかかっているためincludeできません
Page Top

 趣味 anchor.png[14]

Page Top

 専門・仕事 anchor.png[35]

inc/d3diary[7]報告101023/なーお[11]/business は閲覧制限がかかっているためincludeできません
Page Top

d3diary[7]開発経過 anchor.png[36]

Page Top

minidiaryからのフォーク経緯 anchor.png[37]

  • matoyan氏作の日記モジュール、minidiary[38](2008年2月公開)
    • 特徴
      • mixiライクな見た目とユーザーインターフェース
      • マルチユーザー。全員の日記の一覧/各人日記表示、各人カテゴリー
      • 画像のアップロード・サムネイル自動生成
      • ブロック無しでカレンダーや新着日記、コメントリストをサイドメニュー表示可能。(右側/左側選択可)
      • XSNSモジュールと連携した閲覧権限。「友人まで公開」「友人の友人まで公開」
      • 外部ブログ機能
      • xoops2.0.16a-JPでも動作する
    • xoops[4]モジュールとしては未実装の標準機能がいくつかある → モジュールの勉強として入りやすい
      • イベント通知
      • 言語ファイル(japaneseのみ。 blockテンプレートには日本語直書き)
      • コメント統合
  • 2008年8月 minidiaryのハック(差分パック)を公開[39]なーお[11]
    • d3コメント統合
    • イベント通知(AltsysのD3notificationを利用)
      • 「この人の日記へのコメントがあったら通知します」 機能って、あまり見かけなかった。
    • 日記投稿者一覧ブロック
    • d3pipes用のジョイント
Page Top

d3diary[7]公開とその後 anchor.png[40]

  • 2009年6月 d3diary[7]-ver0.02 初版公開
    • D3化
    • 言語ファイル整備 (japanese, ja-utf8, english)
    • 閲覧権限を、カテゴリ毎、日記投稿毎に設定可能
    • 外部ブログ機能を、カテゴリに設定可能
  • 2010年4月 d3diary[7]-ver0.06
    • HTML投稿の可能化
  • 2010年5月 d3diary[7]-ver0.08
  • 2010年7月 d3diary[7]-ver0.10 (開発版)
    • メインページのCSSレイアウト化
    • 投稿時の執筆日時指定
  • 2010年10月 d3diary[7]-ver0.12 (開発版)
    • 共通関数群のobjectインスタンス化
    • サイドメニューの個別ブロック化(従来のサイドブロックはデフォで使用可)
    • 閲覧権限に、グループ指定、ユーザー指定を追加
    • Xoops_breadcrumbsの実装
Page Top

動作環境 anchor.png[42]

  • PHP4.3.x以上、PHP5.1、5.2
  • MySQL-4.0.x以上(詳細は未調査)
  • コア(実績あり、または検証済みのもの)
    • xoops2.0.16a-JP
    • JPEx
    • ImpressCMS
    • Xoops[4] Cube Legacy 2.1、2.2
  • 依存モジュール
    • Altsys必須 (0.55以上)
    • protector推奨 (HTMLpurifier)
    • d3forum必須(コメント統合利用時、0.85以上)
Page Top

d3diary[7]機能紹介(特徴を抜粋) anchor.png[43]

以下、現時点の最新ver0.12a2(開発版)の内容。 デモサイト[44]を使用してご紹介します。

Page Top

サイドメニュー(minidiary由来) anchor.png[45]

    • ブロックを使用しなくても、各人メニュー・新着情報を表示可能
    • 表示位置(左/右)、非表示を選択可
      • 管理画面に表示幅設定あり
Page Top

CSSレイアウト anchor.png[46]

    • テーマの設定色などを極力損なわず、できるだけ継承してそのまま表示する
    • 日付表示に、BoxDateを採用
Page Top

カテゴリー anchor.png[48]

    • 各人が自由に自分だけのカテゴリを作れる、マルチユーザーサイト向け
      • 但し1記事1カテゴリ
      • サブカテゴリは1階層のみ
      • カテゴリ操作は面倒
    • 共有カテゴリーも作成可能(管理者)、一括絞込み表示可。
    • ユーザーによる複数記事選択のカテゴリ移動
Page Top

タグ anchor.png[49]

    • でブクマ君のソースを参考にしたタグ
      • 自分のタグ/全タグ から選択・解除
      • 自分のタグ/全タグ タググラウド切替え
    • カテゴリー AND タグ での複合絞り込み
Page Top

外部ブログ anchor.png[50]

    • 外部のブログの最新RSSフィードを自分の日記として表示できる。
      • d3pipesのような切り抜き・コメント機能は無い
    • カテゴリ1つにつき、1サイト設定可能。
      • 同一ドメイン名のRSSを複数カテゴリに設定しても、動作しないので要注意。(MagpieRSSの仕様?)
Page Top

閲覧権限 anchor.png[51]

    • 閲覧権限を、カテゴリ毎・日記投稿毎に設定可能
    • 友人機能モジュールとの連携 「友人まで」「友人の友人まで」
    • グループ指定、ユーザー指定
      • ユーザー指定は、xpwikiのsuggestion機能を組込み
Page Top

その他 anchor.png[52]

    • HTML投稿可 (HTMLpurifier除外設定あり)
    • コメント統合
      • プラグインのcountは、リスト記事分の回数呼ばれるので使用せず、記事と一括してクエリ
      • 記事閲覧権限に完全連動
      • 実行速度を上げるため、ループ内で呼ばずに済むように、WHERE句の長いSQL文1本に
        +  長いよん [viewcomment.php実行時の例]

        viewcomment.php実行時の例

        赤字:「友人」・「友人の友人」抽出部分
        青字:グループ指定・メンバー指定部分

        "SELECT p.post_id, p.subject, p.post_time, p.uid, p.guest_name, p.unique_path,
        t.topic_external_link_id, u.uname, u.name, d.bid, d.cid,
        c.cname, c.openarea as openareacat FROM xxx_forum_posts p
        INNER JOIN xxx_forum_topics t ON (t.topic_id=p.topic_id AND ! t.topic_invisible )
        INNER JOIN xxx_forum_forums f ON (f.forum_id=t.forum_id AND f.forum_id='10')
        INNER JOIN xxx_diary3_diary d ON t.topic_external_link_id=d.bid AND d.uid=4
        LEFT JOIN xxx_diary3_category c ON (d.uid=c.uid OR c.uid=0) AND d.cid=c.cid
        LEFT JOIN xxx_users u ON p.uid=u.uid
        LEFT JOIN xxx_diary3_config cfg ON d.uid=cfg.uid
        WHERE ! t.topic_invisible AND (d.uid='2' OR (d.openarea <>100 AND ( ( ( ( (d.openarea IN (0,1) )
        AND (cfg.openarea IN (0,1) OR cfg.openarea IS NULL) AND (c.openarea IN (0,1) OR c.openarea IS NULL) )
        OR ( ( (d.openarea='2' AND (c.openarea<='3' OR c.openarea IS NULL) AND (cfg.openarea<='3' OR cfg.openarea IS NULL) )
        OR (c.openarea='2' AND d.openarea<='3' AND (cfg.openarea<='3' OR cfg.openarea IS NULL) )
        OR (cfg.openarea='2' AND d.openarea<='3' AND (c.openarea<='3' OR c.openarea IS NULL) ) ) AND d.uid IN (1) )
        OR ( ( (d.openarea='3' AND (c.openarea<='3' OR c.openarea IS NULL) AND (cfg.openarea<='3' OR cfg.openarea IS NULL) )
        OR (c.openarea='3' AND d.openarea<='3' AND (cfg.openarea<='3' OR cfg.openarea IS NULL) )
        OR (cfg.openarea='3' AND d.openarea<='3' AND (c.openarea<='3' OR c.openarea IS NULL) ) ) AND d.uid IN (1,2,3) ) )

        OR ( (d.openarea='10' OR d.openarea='20') AND (d.vgids LIKE '%|2|%' OR d.vgids LIKE '%|4|%') )
        OR ( (c.openarea='10' OR c.openarea='20') AND (c.vgids LIKE '%|2|%' OR c.vgids LIKE '%|4|%') ) )
        OR (d.openarea='20' AND d.vpids LIKE '%|2|%')
        OR (c.openarea='20' AND c.vpids LIKE '%|2|%') )
        ) )
        ORDER BY p.post_time DESC LIMIT 0,50"

    • イベント通知
      • 「この人の日記へのコメントがあったら通知します」 は、自身へのコメントのみ通知することにも使える
    • インポート
Page Top

今後の進路? anchor.png[53]

  • 一般機能の追加
    • 画像管理[54]: 各人がアップロードした画像を管理
      • 管理者は、リンク切れ画像を一括整理
  • ブログモジュール代替として
    • 友人連携機能などは残し、ブログモジュールとしても使えるように
      • トラックバック 送信/受信
  • 企業ユース向けとして
    • 画像以外のファイルアップロード・添付
      • 直打ちされても記事閲覧権限に連動させる
  • 見切る機能
    • マルチカテゴリは煩雑なので実装しない。 タグを上手に使って。
Page Top

コメント統合のプチカスタマイズ anchor.png[55]

Page Top

d3コメント統合の、元記事閲覧権限連動ハック[56] anchor.png[57]

    • コメント元のモジュールでユーザー毎やグループ毎の閲覧権限を制御する機能を使うとき、コメントのタイトルやコメント者がd3forum側で表示されてしまうため、ちょっと気持ちが悪いと思ったことがきっかけ。 本来は、これらも隠しておくべきものと考えて作りました。
    • このハックには、ゲスト名がアサインされていなかったページへのゲスト名表示も可能になっています。
    • 私は多くのサイトですぐに使えるように、このハックを常に利用していますが、それとは別にwyeさんが作って下さった、d3コメント統合の、元記事閲覧権限連動ハック Plugin版[58] もあります。
Page Top

コメント統合でブロックから元記事へリンク[59] anchor.png[60]

    • フォーラムのブロックで、リンクの飛び先を コメント元記事ページに変更するためのハックです。
    • d3diary[7]同梱のコメント統合ブロック(posts,topics共)には既に仕込み済みですので、それを使えば本ハックは適用不要です。 但し、d3diary[7]のコメントフォーラム以外のフォーラムを混合表示した場合には、それら他のモジュールへのジャンプ先は、テンプレート編集で変更する必要があります。
    • d3forum_comment_listposts_flat.html テンプレートの変更反映は、上記d3diary[7]同梱ブロック使用時も必要です。
Page Top

d3forum側で統合コメントのツリー全表示[61] anchor.png[62]

    • コメント統合で付いたコメント。 質問内容が変わったりしてトピック分けしたりすると、d3forum側で「このトピックの投稿一覧へ」で閲覧してもトピック内の投稿しか表示されないため、同じ元記事に紐付いた他のトピックの投稿に気づかない。 これを何とかしたかった。
    • その対策として、「このトピックの投稿一覧へ」を表示したときに、他のトピも含めてツリーを表示することにしました。
      • smartyプラグイン「function.d3comment_tree.php」と、テンプレート編集で装備可能。
Page Top

(未実施)今後何とかしたいこと anchor.png[63]

    • Topics内投稿一覧のページ分割。 件数が50件くらいになると、重くて仕方がない。
      • 作者のGIJOEさんが作成中だった名残がコードにあるけど、「子投稿1.1」あたりの処理との絡みが出そうで、少し面倒な予感。
    • モジュールCSSが、テーマ色・文字プロパティを反映しない件
      • XCLテンプレート標準でどなたかが対応いただけることを期待。
    • 今後のd3forumのメンテ・バージョンアップは誰が?
Page Top

謝辞 anchor.png[64]

    • minidairyの作者、matoyan氏には、minidiaryフォーク版公開に快諾いただきありがとうござます。
    • GIJOE氏、nao-pon[65]氏、hodaka氏、kilica氏、ほかソースを参考にさせていただきました。ありがとうございます。

Last-modified: 2019-08-17 (土) 07:11:56 (JST) (1708d) by なーお