返信する: d3diaryサポート板
- Re: ユーザ共通カテゴリーの生成
- 投稿者: なーお 投稿日時: 2010/5/4 22:22
miminさん
引用:どうしても共通カテゴリを使いたいとのことでしたら、ご自身で検討いただき、結果をフィードバックいただきますようお願いします。
と書いた後で、「ちょっと冷たかったかな?」 と思いなおして、少し強引な方法で試してみました。
include/functions.php
445行目あたりのsql文を編集
445 446 447 448 449 450 451 452 453
//$sql = "SELECT * // FROM ".$xoopsDB->prefix($mydirname.'_category')." // WHERE uid=".intval($req_uid)." ORDER BY corder"; // naao changed for common category (uid=0) $sql = "SELECT * FROM ".$xoopsDB->prefix($mydirname.'_category')." WHERE uid=".intval($req_uid)." OR uid=0 ORDER BY corder"; $result = $xoopsDB->query($sql);
main/detail.php
112行目あたりのカテゴリ抽出コードを編集。
112 113 114 115 116 117 118 119 120 121 122 123 124 125
if($diary->cid>10000){ $category->uid=0; $category->cid=$diary->cid; $category->readdb($mydirname); $yd_data['cname'] = $category->cname; }elseif($diary->cid>0){ //if($diary->cid>0){ $category->uid=$diary->uid; $category->cid=$diary->cid; $category->readdb($mydirname); $yd_data['cname'] = $category->cname; }else{ $yd_data['cname'] = _MD_NOCNAME; }
main/diarylist.php
92行目あたりのsql文の編集と抽出条件の追記
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
// added common category query $common_cid=intval(d3diary_getpost_param('cid')); if( 10000 < $common_cid ){ $whr_common_cid = " AND diary.cid='".$common_cid."'"; } else { $whr_common_cid = ""; } $sql = "SELECT diary.diary, diary.create_time, diary.cid, diary.title, diary.bid, diary.openarea, diary.dohtml, usr.uname, usr.uid FROM ".$xoopsDB->prefix($mydirname.'_diary')." diary INNER JOIN ".$xoopsDB->prefix('users')." usr ON diary.uid=usr.uid LEFT JOIN ".$xoopsDB->prefix($mydirname.'_config')." cfg ON diary.uid=cfg.uid " .$sql_tag ." WHERE ".$whr_openarea.$whr_common_cid.$whr_tag." AND (cfg.blogtype=0 OR cfg.blogtype IS NULL) ORDER BY diary.create_time DESC"; // naao changed for hide draft entries of other person //$sql = "SELECT diary.diary, diary.create_time, diary.cid, diary.title, diary.bid, diary.openarea, diary.dohtml, usr.uname, usr.uid // FROM ".$xoopsDB->prefix($mydirname.'_diary')." diary // INNER JOIN ".$xoopsDB->prefix('users')." usr ON diary.uid=usr.uid // LEFT JOIN ".$xoopsDB->prefix($mydirname.'_config')." cfg ON diary.uid=cfg.uid " // .$sql_tag // ." WHERE ".$whr_openarea.$whr_tag." AND (cfg.blogtype=0 OR cfg.blogtype IS NULL) ORDER BY diary.create_time DESC";
main/edit.php
467行目あたりのsql文を編集
467 468 469 470 471 472 473 474
//$sql = "SELECT * // FROM ".$xoopsDB->prefix($mydirname.'_category')." // WHERE uid=".intval($uid)." ORDER BY corder"; // naao changed for common category (uid=0) $sql = "SELECT * FROM ".$xoopsDB->prefix($mydirname.'_category')." WHERE uid=".intval($uid)." OR uid=0 ORDER BY corder";
共通カテゴリの追加
カテゴリの追加は、取り急ぎ、phpmyadminなどでデータベーステーブル「(d3diary)_category」にレコードを手動で追加してゆきます。 この時、
- uid フィールドは、「0」にする。
- cid フィールドは、「10001」以上の数値で重複の無いように
追加すればOKです。
テンプレート編集
必要ないとも言えるのですが、diarylistページで全ユーザーの共通カテゴリ記事を抽出するため、テンプレート「diarylist.html」を編集し、「index.php?page=diarylist&cid=10001」といったurlに飛ぶように、生書きするとか、セレクトBOXをつけるとか、HTMLの知識で可能と思いますので、やってみてください。
以上です。お試しください。
(追伸)
ここまで考えると、将来はこの延長線上で実装もありかな、と思えてきました。(笑)