0: - no date - ソース 現: 2026-08-13 (木) 08:56:06 なーお ソース
Line 1: Line 1:
 +* d3diary開発とコメント統合プチカスタマイズ [#ae385200]
 +** なーおって、誰? [#nf682460]
 +#include(./なーお,notitle)
 +
 +** d3diary開発経過 [#j7679f01]
 +*** minidiaryからのフォーク経緯 [#o286e4bf]
 +- matoyan氏作の日記モジュール、[[minidiary:http://www.yamareco.com/weblog/xoops/]](2008年2月公開)
 +-- 特徴
 +--- mixiライクな見た目とユーザーインターフェース
 +--- マルチユーザー。全員の日記の一覧/各人日記表示、各人カテゴリー
 +--- 画像のアップロード・サムネイル自動生成
 +--- ブロック無しでカレンダーや新着日記、コメントリストをサイドメニュー表示可能。(右側/左側選択可)
 +--- XSNSモジュールと連携した閲覧権限。「友人まで公開」「友人の友人まで公開」
 +--- 外部ブログ機能
 +--- xoops2.0.16a-JPでも動作する
 +-- ☆xoopsモジュールとしては未実装の標準機能がいくつかある → モジュールの勉強として入りやすい
 +--- イベント通知
 +--- 言語ファイル(japaneseのみ。 blockテンプレートには日本語直書き)
 +--- コメント統合
 +- 2008年8月 minidiaryの[[ハック(差分パック)を公開:http:///modules/plactice/index.php/home/hobby/xoops/minidiary_014a.htm]](なーお)
 +-- d3コメント統合
 +-- イベント通知(AltsysのD3notificationを利用)
 +--- 「この人の日記へのコメントがあったら通知します」 機能って、あまり見かけなかった。
 +-- 日記投稿者一覧ブロック
 +-- d3pipes用のジョイント
 +
 +*** d3diary公開とその後 [#a158b93f]
 +- 2009年6月 d3diary-ver0.02 初版公開
 +-- D3化
 +-- 言語ファイル整備 (japanese, ja-utf8, english)
 +-- 閲覧権限を、カテゴリ毎、日記投稿毎に設定可能
 +-- 外部ブログ機能を、カテゴリに設定可能
 +- 2010年4月 d3diary-ver0.06
 +-- HTML投稿の可能化
 +- 2010年5月 d3diary-ver0.08
 +-- メンバー間共有カテゴリ
 +-- 更新PING送信
 +-- [[MT形式からのインポートスクリプト:http:///modules/plactice/index.php/home/hobby/xoops/mt_d3diary.htm]]公開
 +- 2010年7月 d3diary-ver0.10 (開発版)
 +-- メインページのCSSレイアウト化
 +-- 投稿時の執筆日時指定
 +- 2010年10月 d3diary-ver0.12 (開発版)
 +-- 共通関数群のobjectインスタンス化
 +-- サイドメニューの個別ブロック化(従来のサイドブロックはデフォで使用可)
 +-- 閲覧権限に、グループ指定、ユーザー指定を追加
 +-- Xoops_breadcrumbsの実装
 +
 +** 動作環境 [#v4343c03]
 +- PHP4.3.x以上、PHP5.1、5.2
 +- MySQL-4.0.x以上(詳細は未調査)
 +- コア(実績あり、または検証済みのもの)
 +-- xoops2.0.16a-JP
 +-- JPEx
 +-- ImpressCMS
 +-- Xoops Cube Legacy 2.1、2.2
 +- 依存モジュール
 +-- Altsys必須 (0.55以上)
 +-- protector推奨 (HTMLpurifier)
 +-- d3forum必須(コメント統合利用時、0.85以上)
 +
 +** d3diary機能紹介(特徴を抜粋) [#sb244717]
 +以下、現時点の最新ver0.12a2(開発版)の内容。 [[デモサイト:http://d3diary.naaon.com/]]を使用してご紹介します。
 +
 +*** サイドメニュー(minidiary由来) [#p4c2cbb1]
 +-- ブロックを使用しなくても、各人メニュー・新着情報を表示可能
 +-- 表示位置(左/右)、非表示を選択可
 +--- 管理画面に表示幅設定あり
 +
 +*** CSSレイアウト [#sd676bbb]
 +-- テーマの設定色などを極力損なわず、できるだけ継承してそのまま表示する
 +--- [[CMS Theme Finder:http://cmsthemefinder.com/]] の活用
 +-- 日付表示に、BoxDateを採用
 +
 +*** カテゴリー [#s43d5f8e]
 +-- 各人が自由に自分だけのカテゴリを作れる、マルチユーザーサイト向け
 +--- 但し1記事1カテゴリ
 +--- サブカテゴリは1階層のみ
 +--- カテゴリ操作は面倒
 +-- 共有カテゴリーも作成可能(管理者)、一括絞込み表示可。
 +-- ユーザーによる複数記事選択のカテゴリ移動
 +
 +*** タグ [#w1a4924f]
 +-- でブクマ君のソースを参考にしたタグ
 +--- 自分のタグ/全タグ から選択・解除
 +--- 自分のタグ/全タグ タググラウド切替え
 +-- カテゴリー AND タグ での複合絞り込み
 +
 +*** 外部ブログ [#r3d13d4d]
 +-- 外部のブログの最新RSSフィードを自分の日記として表示できる。
 +--- d3pipesのような切り抜き・コメント機能は無い
 +-- カテゴリ1つにつき、1サイト設定可能。
 +--- 同一ドメイン名のRSSを複数カテゴリに設定しても、動作しないので要注意。(MagpieRSSの仕様?)
 +
 +*** 閲覧権限 [#re0a4c1c]
 +-- 閲覧権限を、カテゴリ毎・日記投稿毎に設定可能
 +-- 友人機能モジュールとの連携 「友人まで」「友人の友人まで」
 +-- グループ指定、ユーザー指定
 +--- ユーザー指定は、xpwikiのsuggestion機能を組込み
 +
 +*** その他 [#b9539159]
 +-- HTML投稿可 (HTMLpurifier除外設定あり)
 +-- コメント統合
 +--- プラグインのcountは、リスト記事分の回数呼ばれるので使用せず、記事と一括してクエリ
 +--- 記事閲覧権限に完全連動
 +--- 実行速度を上げるため、ループ内で呼ばずに済むように、WHERE句の長いSQL文1本に
 +#region(長いよん [viewcomment.php実行時の例]){{
 +viewcomment.php実行時の例
 +
 +&font(Red){赤字:「友人」・「友人の友人」抽出部分};
 +&font(Blue){青字:グループ指定・メンバー指定部分};
 +
 +"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) )
 +&font(Red){OR ( ( (d.openarea='2' AND (c.openarea<='3' OR c.openarea IS NULL) AND (cfg.openarea<='3' OR cfg.openarea IS NULL) ) &br;OR (c.openarea='2' AND d.openarea<='3' AND (cfg.openarea<='3' OR cfg.openarea IS NULL) ) &br;OR (cfg.openarea='2' AND d.openarea<='3' AND (c.openarea<='3' OR c.openarea IS NULL) ) ) AND '''''d.uid IN (1)''''' ) &br;OR ( ( (d.openarea='3' AND (c.openarea<='3' OR c.openarea IS NULL) AND (cfg.openarea<='3' OR cfg.openarea IS NULL) ) &br;OR (c.openarea='3' AND d.openarea<='3' AND (cfg.openarea<='3' OR cfg.openarea IS NULL) ) &br;OR (cfg.openarea='3' AND d.openarea<='3' AND (c.openarea<='3' OR c.openarea IS NULL) ) ) AND '''''d.uid IN (1,2,3)''''' ) )};
 +&font(Blue){OR ( (d.openarea='10' OR d.openarea='20') AND (d.vgids LIKE '%|2|%' OR d.vgids LIKE '%|4|%') ) &br;OR ( (c.openarea='10' OR c.openarea='20') AND (c.vgids LIKE '%|2|%' OR c.vgids LIKE '%|4|%') ) ) &br;OR (d.openarea='20' AND d.vpids LIKE '%|2|%') &br;OR (c.openarea='20' AND c.vpids LIKE '%|2|%') )}; ) )
 +ORDER BY p.post_time DESC LIMIT 0,50"
 +}}
 +
 +-- イベント通知
 +--- 「この人の日記へのコメントがあったら通知します」 は、自身へのコメントのみ通知することにも使える
 +-- インポート
 +--- minidiary, d3diaryから
 +--- Movable Type形式テキストファイルから (別途:[[MT形式からのインポートスクリプト:http:///modules/plactice/index.php/home/hobby/xoops/mt_d3diary.htm]])
 +
 +** 今後の進路? [#h046f085]
 +- 一般機能の追加
 +-- 画像管理: 各人がアップロードした画像を管理
 +--- 管理者は、リンク切れ画像を一括整理
 +- ブログモジュール代替として
 +-- 友人連携機能などは残し、ブログモジュールとしても使えるように
 +--- トラックバック 送信/受信
 +- 企業ユース向けとして
 +-- 画像以外のファイルアップロード・添付
 +--- 直打ちされても記事閲覧権限に連動させる
 +- 見切る機能
 +-- マルチカテゴリは煩雑なので実装しない。 タグを上手に使って。
 +
 +** コメント統合のプチカスタマイズ [#lebfbca0]
 +*** d3コメント統合の、元記事閲覧権限連動ハック [#jad09d57]
 +-- コメント元のモジュールでユーザー毎やグループ毎の閲覧権限を制御する機能を使うとき、コメントのタイトルやコメント者がd3forum側で表示されてしまうため、ちょっと気持ちが悪いと思ったことがきっかけ。 本来は、これらも隠しておくべきものと考えて作りました。
 +-- このハックには、ゲスト名がアサインされていなかったページへのゲスト名表示も可能になっています。
 +-- 私は多くのサイトですぐに使えるように、このハックを常に利用していますが、それとは別にwyeさんが作って下さった、d3コメント統合の、元記事閲覧権限連動ハック Plugin版 もあります。
 +
 +*** コメント統合でブロックから元記事へリンク [#x027a0b6]
 +-- フォーラムのブロックで、リンクの飛び先を コメント元記事ページに変更するためのハックです。
 +-- d3diary同梱のコメント統合ブロック(posts,topics共)には既に仕込み済みですので、それを使えば本ハックは適用不要です。 但し、d3diaryのコメントフォーラム以外のフォーラムを混合表示した場合には、それら他のモジュールへのジャンプ先は、テンプレート編集で変更する必要があります。
 +-- d3forum_comment_listposts_flat.html テンプレートの変更反映は、上記d3diary同梱ブロック使用時も必要です。
 +
 +*** d3forum側で統合コメントのツリー全表示 [#u6b2e658]
 +-- コメント統合で付いたコメント。 質問内容が変わったりしてトピック分けしたりすると、d3forum側で「このトピックの投稿一覧へ」で閲覧してもトピック内の投稿しか表示されないため、同じ元記事に紐付いた他のトピックの投稿に気づかない。 これを何とかしたかった。
 +-- その対策として、「このトピックの投稿一覧へ」を表示したときに、他のトピも含めてツリーを表示することにしました。
 +--- smartyプラグイン「function.d3comment_tree.php」と、テンプレート編集で装備可能。
 +
 +*** (未実施)今後何とかしたいこと [#eedff0a6]
 +-- Topics内投稿一覧のページ分割。 件数が50件くらいになると、重くて仕方がない。
 +--- 作者のGIJOEさんが作成中だった名残がコードにあるけど、「子投稿1.1」あたりの処理との絡みが出そうで、少し面倒な予感。
 +-- モジュールCSSが、テーマ色・文字プロパティを反映しない件
 +--- XCLテンプレート標準でどなたかが対応いただけることを期待。
 +-- 今後のd3forumのメンテ・バージョンアップは誰が?
 +
 +** 謝辞 [#s98d5481]
 +-- minidairyの作者、matoyan氏には、minidiaryフォーク版公開に快諾いただきありがとうござます。
 +-- GIJOE氏、nao-pon氏、hodaka氏、kilica氏、ほかソースを参考にさせていただきました。ありがとうございます。

  • inc/d3diary報告101023 のバックアップ差分(No. All)

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 18, today: 1, yesterday: 0