返信する: d3diaryサポート板
- Re: whatsnewモジュールにてd3diaryのコメント数と閲覧数の表示が出ません。
- 投稿者: なーお 投稿日時: 2011/6/9 7:34
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の使い方がよくわからず最終表示まで確認できていません。 ご確認よろしくお願いします。
- 閲覧数が出ない件