Re: XOOPS側でのブロック更新について
永らくありがとうございました › フォーラム › 使い方全般 › XOOPS側でのブロック更新について › Re: XOOPS側でのブロック更新について
2010 年 7 月 23 日 1:54 PM
#3167
キーマスター
ちょいごたごたしていて返事がおくれましたが、
うーん、なんでしょう?
XPressMEの拡張ブロックではなくXOOPSのカスタムブロックでデータベース直読みで実現してみるのも手かも・・・
カスタムブロック作成例
RYUSさんの「PHPカスタムブロックの超!賢い作り方」を参考に
カスタムブロック側に
<code>$file = 'today_top10.php';<br /> $path = XOOPS_ROOT_PATH.'/blocks/'.$file;<br /> if ( file_exists($path) ) require $path;</code>
をタイプPHPスクリプトとして記入
blocks/today_top10.phpを作成し、以下のコードを記入
<code><?php<br /> if ( !defined('XOOPS_ROOT_PATH') ) require dirname(dirname(__FILE__)).'/mainfile.php';<br /> global $xoopsDB;<br /> $number = 10; //表示数<br /> $xpress_dianame = 'xp_trunk'; //ここは、環境に合わせて設定<br /> $xpress_prefix = $xoopsDB->prefix($xpress_dianame) . '_';<br /> $counterize_logTable = $xpress_prefix . "Counterize";<br /> $counterize_pageTable = $xpress_prefix . "Counterize_Pages";<br /> $postsTable = $xpress_prefix . "posts";<br /> $host = $_SERVER['HTTP_HOST'];<br /> <br /> $now = date('Y-m-d H:i:s'). '<br />';<br /> $from = date("Y-m-d H:i:s", time()-86400);<br /> <br /> echo "24 hours from $from to $now" . '<br />';<br /> <br /> $sql = "SELECT p.count as amount, p.url as url, p.postID as post_id , COUNT(m.id) as day_count, t.post_title as post_title"<br /> . " FROM ($counterize_logTable m LEFT JOIN $counterize_pageTable p ON m.pageID = p.pageID) LEFT JOIN $postsTable t ON p.postID = t.ID"<br /> . " WHERE m.timestamp >='$from'"<br /> . " GROUP BY p.pageID"<br /> . " HAVING p.postID Is Not Null"<br /> . " ORDER BY COUNT(m.id) DESC"<br /> . " LIMIT $number";<br /> <br /> $result = $xoopsDB->query($sql);<br /> <br /> if($result) {<br /> $ranking = 1;<br /> while($row = $xoopsDB->fetchArray($result)) {<br /> $url = $row['url'];<br /> $title = $row['post_title'];<br /> $ranking_text = $ranking . '位';<br /> $image_url = 'http://www.exsample.com/uploads/ranking/ranking_' . $ranking . '.gif';<br /> if (@fclose(@fopen($image_url, "r"))){<br /> echo '<img src="' . $image_url . '" alt="' . $ranking_text . '"/>';<br /> }else{<br /> echo $ranking_text . '' ;<br /> }<br /> echo '<a href="http://'.$host . $url . '" title="'. $title . '">'. $title . '</a>';<br /> echo ' today(' . $row['day_count'] .')';<br /> echo ' total(' . $row['amount'] . ')';<br /> echo '<br />';<br /> $ranking++;<br /> }<br /> }<br /> ?></code>
これでずれ込むようなら、ローカルタイムの関係かもしれないので、
xx_xx_counterizeテーブルのtimestampフィールドの値が正しい日時をしめしているか確認してみてください。