XPressME Integration Kit

フォーラム

Re: XOOPS側でのブロック更新について

#3167
toemon
キーマスター

ちょいごたごたしていて返事がおくれましたが、

うーん、なんでしょう?

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フィールドの値が正しい日時をしめしているか確認してみてください。