カテゴリー
XOOPS

ブログの人気エントリーの表示

popularity-entry.png

このブログの人気エントリーを表示するようにしてみました。
またもや、こちらの記事を参考にさせてもらいました。ありがとうございます。

自分が使っているのはXOOPS版のWordPressです。
リンク先の改造で、WordPressのテンプレートに記述すれば、一応人気記事は出せたのですが、どうせなら右サイドとかのブロックに表示したい。
ところが、XOOPSのブロックからmy-hacks.phpにはアクセスできなさそう(たぶん。まだ、PHPとかXOOPSの仕組みがよくわかってません)。
それで、アクセス数をカウントする部分はそのまま使い、表示の部分は独自に作ることにしました。
ちなみにアクセス数をカウントする部分はcomments-template.phpの頭に「<?php add_count($post->ID); ?>」を入れました。

で、表示部分がこれ↓

$conn = mysql_connect("localhost","user","password");
mysql_select_db("xoops");
$sql = 'select m.postnumber, m.cntaccess ,p.post_title FROM xoops_wp_mostAccessed m INNER JOIN zopps_wp_posts p ON m.postnumber = p.ID ORDER BY m.cntaccess DESC LIMIT 10';
$res = mysql_query($sql);

$rank=0;
while ($value = mysql_fetch_assoc($res)) {
 $rank = $rank + 1;
 echo $rank.".<a href="https://a-tak.com/xoops/modules/wordpress/index.php?p=".$value["postnumber"]."&more=1&c=1">".$value["post_title"]."(".$value["cntaccess"]." Hit)</a><br/>";
}

これを、XOOPSのカスタムブロックに入れて表示させてます。
本当はXOOPSで用意されている仕組みを使いたかったけど、正直よくわからんかったので、独自にSQLにアクセスさせてます。

でも、せっかくだからXOOPSの流儀に従おうと思ってググったら、こんなサイト見つけました。
それを参考に作り直したのがこれ。

global $xoopsUser,$xoopsDB;
$sql = "select m.postnumber, m.cntaccess ,p.post_title FROM ".$xoopsDB->prefix('wp_mostAccessed')." m INNER JOIN ".$xoopsDB->prefix('wp_posts')." p ON m.postnumber = p.ID ORDER BY m.cntaccess DESC LIMIT 10";
$res = $xoopsDB->query($sql);
$rank=0;
while($value = $xoopsDB->fetchArray($res)){
 $rank = $rank + 1;
 echo $rank.".<a href="https://a-tak.com/xoops/modules/wordpress/index.php?p=".$value["postnumber"]."&more=1&c=1">".$value["post_title"]."(".$value["cntaccess"]." Hit)</a><br/>";
}

最初、いくらやっても真っ白なページしか出なくて、行き詰まりかけてましたが、「global $xoopsUser,$xoopsDB;」の一行が抜けていました。
まだ、よくわかってませんが、おまじない的に入れておきました。
とりあえず今のところちゃんと動いてるみたいなんで、よしとしておきます。

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Twitter
Mastodon
Facebook

コメントは受け付けていません。