whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。
- このフォーラムに新規トピックを投稿できます
- このフォーラムではゲスト投稿が許可されています
投稿ツリー
-
whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (katsumi hioki, 2011/6/8 12:26)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (なーお, 2011/6/9 7:34)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (katsumi hioki, 2011/6/9 10:32)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (katsumi hioki, 2011/6/9 10:35)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (なーお, 2011/6/9 22:15)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (Katsumi Hioki, 2011/6/10 1:19)
-
Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。 (なーお, 2011/6/10 6:50)
いつもお世話になっています。英会話ドットネットの日置です。
d3diary0.8開発ご苦労様です。近いうちにアップグレードさせていただきます。ところで表題の件ですが、当サイトではトップページにwhatsnewモジュールで更新情報を出しているのですが、d3diaryのコメント数(view)と閲覧数(com_num)が取得できません。whatsnew.inc.phpファイルを見ているのですがわかりません。お忙しいとは思いますが、どうかご教授願えませんでしょうか。

katsumi hiokiさん、こんにちは。
当サイトではトップページにwhatsnewモジュールで更新情報を出しているのですが、d3diaryのコメント数(view)と閲覧数(com_num)が取得できません。
ご報告ありがとうございます。確認しました。以前リリースした時に実装漏れがあったようです。
- 閲覧数が出ない件
これは、class/func.class.php のほうの修正になります。ver0.16bの場合の行番号で636行目付近のSQLを以下のように書き換えてください。(d.viewが抜けていた)636 637 638 639 640 641 642 643 644 645
// entries $sql = "SELECT d.uid AS uid, d.bid AS bid, d.title, d.cid, d.diary, d.create_time, d.openarea AS openarea_entry, d.dohtml, d.view, u.uname, u.name, u.user_avatar, c.openarea AS openarea_cat, c.cname, cfg.openarea FROM ".$db->prefix($this->mydirname.'_diary')." d INNER JOIN ".$db->prefix('users')." u USING(uid) LEFT JOIN ".$db->prefix($this->mydirname.'_category')." c ".$on_uid." LEFT JOIN ".$db->prefix($this->mydirname.'_config')." cfg ON d.uid=cfg.uid ".$table_tag." WHERE ".$whr_uids.$whr_openarea.$whr_nofuture.$whr_timerange.$whr_cat.$whr_tag." ORDER BY create_time DESC LIMIT 0,".$maxnum;
- コメント数が出ない件
こちらは、whatsnewプラグインそのものの修正ですが、ver0.18の方で修正してしまいましたので、それをそのままお使いください。
include/whatsnew.inc.php1 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 83
<?php /* * Created on 2010/11/28 by naao http://www.naaon.com/ * $Id: whatsnew.inc.php,v 0.01 2010/11/28 naao Exp $ */ // === eval begin === eval( ' function '.$mydirname.'_new($limit=0, $offset=0) { return d3diary_new_base( "'.$mydirname.'", $limit , $offset ) ; } ' ) ; if( ! function_exists( 'd3diary_new_base' ) ) { function d3diary_new_base( $mydirname, $limit=0, $offset=0 ) { if( preg_match( '/[^0-9a-zA-Z_-]/' , $mydirname ) ) die( 'Invalid mydirname' ) ; $constpref = '_MB_' . strtoupper( $mydirname ) ; $_enc = _CHARSET; $URL_MOD = XOOPS_URL."/modules/".$mydirname; $mytrustdirpath = dirname(dirname( __FILE__ )) ; //include_once "$mytrustdirpath/include.php"; require_once $mytrustdirpath."/class/d3diaryConf.class.php"; require_once $mytrustdirpath."/class/photo.class.php"; $d3dConf = D3diaryConf::getInstance($mydirname, 0, "whatsnew"); $func =& $d3dConf->func ; $myts =& $d3dConf->myts; $photo =& D3diaryPhoto::getInstance(); $uid = $d3dConf->uid; //$req_uid = $d3dConf->req_uid; // overrided by d3dConf $req_uid = 0; // overrided by d3dConf $entry = $func->get_blist_tstamp ($req_uid, $uid, $limit, false, $mytstamp ); // dosort = false, byref $mytstamp // random photos $d3dConf->get_new_bids( $got_bids ) ; $photo->bids = $got_bids ; $photo->readrand_mul($mydirname); foreach ( $photo->photos as $i => $_photo ) { $entry[$i]['photo'] = $_photo['pid'].$_photo['ptype']; } unset($photo->photos); // comment counts, newest comments list($yd_comment,$yd_com_key) = $func->get_commentlist(0,$uid,100,true,true); if(!empty($yd_comment)){ foreach( $yd_comment as $_com){ $i = (int)$_com['bid']; $entry[$i]['com_num'] = (int)$_com['com_num']; } } $ret = array(); if (!empty($entry)) { array_multisort($mytstamp, SORT_DESC, $entry); $i=0; foreach ( $entry as $b => $e){ $entry_temp[$i] = $e; $ret[$i]['description'] = trim($func->substrTarea($e['diary'], $e['dohtml'], 0, true)); $ret[$i]['link'] = $e['url']; $ret[$i]['cname'] = $myts->makeTboxData4Show($e['cname']); $ret[$i]['cat_link'] = $URL_MOD."/index.php?page=category&cid=".$e['cid']; $ret[$i]['title'] = $e['title']; $ret[$i]['time'] = $e['tstamp']; $ret[$i]['uid'] = $e['uid']; $ret[$i]['hits'] = $e['view']; $ret[$i]['replies'] = !empty($e['com_num']) ? $e['com_num'] : 0 ; $ret[$i]['image'] = !empty($e['photo']) ? $URL_MOD."/upimg/".$e['photo'] : ""; $ret[$i]['id'] = $e['bid']; $i++; } } return $ret; } } ?>
以上、私の環境ではアサインまで確認しましたが、whatsnewの使い方がよくわからず最終表示まで確認できていません。 ご確認よろしくお願いします。
早速のお返事ありがとうございます!
まず、閲覧数の方はclass/func.class.phpの書き換えで出るようになりました!
それからinclude/whatsnew.inc.phpをアップしてみたところ画面が真っ白になってしまいました。デバグなど試してみましたが原因を特定できなかったのですが、whatsnew.inc.phpの
// comment counts, newest comments
list($yd_comment,$yd_com_key) = &font(Red){$func};->get_commentlist(0,$uid,100,true,true);
この部分の$funcを$d3dConf->funcに変えたらコメント数が出るようになりました。あっているのかどうかわからないのですが・・・。
xoopsの新しいモジュールが出てこないのでなーおさんのd3diaryだけが頼りです。ずっとxoopsでやってきたので捨てがたい。でもwebの世界ってテクノロジーの進化がすごく早いので他のCMSから取り残されないか心配です。
さっきの投稿のソースの部分実際は
list($yd_comment,$yd_com_key) = $func->get_commentlist(0,$uid,100,true,true);
こうです。$funcの部分を赤字にしようとして失敗しました。失礼しました。

katsumi hiokiさん
$func を、$d3dConf->func にしないと真っ白になったとのことですが、先の私のコメントの30行目に
$func =& $d3dConf->func ;
と追加してあるのですが、これを追記忘れていませんか?あと37行目にも $func-> がありますので、これが原因ならここでもエラーが起きるはずなんですが・・
結果的に動いているようですが、他の方への参考のためにもお手数ですが一度ソースを再確認いただけますでしょうか。
なーおさん
原因特定できました。
ver0.18の方で修正されたとのこと、
当方ver0.16使用です。そうなると32行目の
(ver0.18) $photo =& D3diaryPhoto::getInstance();
(ver0.16) $photo =& Photo::getInstance();
ここが異なります。この部分以外では不具合はおきません。
ありがとうございました。

Katsumi Hiokiさん
(ver0.18) $photo =& D3diaryPhoto::getInstance();
(ver0.16) $photo =& Photo::getInstance();
ああ、そうですね。ここも変わっているのを忘れていました。
ご報告、ありがとうございました。