MovableType 記事と同じカテゴリのランキングを表示

2005年1月18日 | MovableType | コメント (11)

ウェブログというのは、自分から見るとメインのページからの
階層構造になっていますが、訪問者にとっては、それぞれの記事が
入り口になっている場合が多いです。

そこで、個別の記事のページに同じカテゴリの記事のタイトルを
並べておくことで、他の記事も読んでもらえる可能性が高くなると思います。

さらにこのスクリプトでは、同カテゴリのトップ10を表示することで、
より、その効果を高められるのではないかと思います。

もちろん前バージョンの全記事のランキングやカテゴリのランキングも表示します。
PHPの埋め込みですので、レンタルのアクセス分析などのようにブラウザの機能に
左右されることはありません。

■ダウンロード

ダウンロード後のファイル名:fav_count_2.zipfav_count_2.zip

[264 Viewd (RSS: 0)] [Edit]
記事情報
  • 投稿日:
  • 更新日:
リンクソース
■記事用リンクソース:

■Wiki用リンクソース(PukiWiki):

■Wiki用リンクソース(MediaWiki):

■短縮URL:
トラックバック一覧 (昇順です)
人気記事Top10をPHPとMySQLで
概要 各エントリーの閲覧数をランキングしてくれる、便利な"http://sidebar.jp/"ですが、個人で運営をされていることもあり、最近運用を停止気味にしておられ、少々支障が出てきました。 参照: EarlGrey Tearoom:エントリーのアクセスランキング for Movable Type EarlGrey T...
ウェブログ: Diary::Weblog : 2006年2月 6日

コメント (昇順です)

こんにちは。上記のファイルをDLさせていただきました。
早速設置してみました。良いTIPSをありがとうございます。

ところで、書き出されるURLがarchives/000000.html…という記述になりますよね。
うちはarchives/200407/21-2252.phpというふうに、書き出し方を変えているので、
うまくランキングから記事へリンクされません。

とりあえず.htacceessにRedirectを記述して飛ばす……という対応をしてみたのですが
この方法ですとエントリが増えるたびに手動で書き出さないといけません。
何かいい方法はないでしょうか。
お知恵をおかしいただければ大変嬉しいです。
よろしくお願いいたします。

Posted by: ryoko : 2005年1月31日

MT3のUtil.pmを見ると
my $basename = $entry->basename();
$basename ||= dirify($entry->title());
$file = sprintf("%04d/%02d/%s", unpack('A4A2', $entry->created_on), $basename);
で、ファイル名を生成しているようなので、
$entryを$row2に換え、
fav_main2.phpの
$file = sprintf("%06d", $itemid);
とある行と入れ替えてみたらどうなるでしょう?

※その前にあるクエリーも書き換えないといけないですね。

$query = "SELECT entry_title, entry_blog_id, entry_created_on
とある行を
$query = "SELECT *
としてしまいましょうか。

Posted by: pekoe : 2005年1月31日

素早いご返答ありがとうございました。
しかしながら、門前の小僧なので……ちょっといじってみましたら怪しいソースが
ダラダラと流れ出てきてしまいました……。

・Util.pmの$entryを$row2に換える
・fav_main2.php(もしくはfav_main.php)の$file = sprintf("%06d", $itemid);を
 →$file = sprintf("%04d/%02d/%s", unpack('A4A2', $row2->created_on), $basename);に変更
・さらに$query = "SELECT entry_title, entry_blog_id, entry_created_onを
 →$query = "SELECT *に変更

という意味で間違っていないでしょうか?
お手数をおかけして申し訳ございません。

Posted by: ryoko : 2005年2月 1日

Util.pmにファイル名の生成が書いてあるという意味で、
このファイルは書き換えないでください。

$entryを$row2に換えたものを
fav_main2.phpの
$file = sprintf("%06d", $itemid);
と入れ替えてください。
(1行を削除、3行追加となります)

$queryの行はそのとおりです。41行目です。

Posted by: pekoe : 2005年2月 1日

何度も申し訳ありません。

> my $basename = $row2->basename();
> $basename ||= dirify($row2->title());
> $file = sprintf("%04d/%02d/%s", unpack('A4A2', $row2->created_on), $basename);

> $file = sprintf("%06d", $itemid);

と入れ替えいうことでよろしいんでしょうか。

Posted by: ryoko : 2005年2月 1日

多分そうだと思います。
MT3はインストールしていないので、
本当にそういうテーブル名なのかわからないもので。

もしかしたら、
$row2->basename

$row2->entry_basename
のように「entry_」をつけるのかもしれません。

Posted by: pekoe : 2005年2月 1日

たびたびすみません。
fav_main2.phpを書き換えたところ

Parse error: parse error, unexpected T_VARIABLE in /home/(省略)/fav_count/fav_main2.php on line 48

とエラー表示が出てしまいました。
また同カテゴリの記事ランキングは
そのままサイドバー等にソースをはり付けても
MTEntryタグコンテナの外では使えません、
とエラーになってしまいます。

fav_main.phpはいじっていないので
全記事のアクセスランキングは無事に表示できていますが、
URLはarchives/000000.html…のままなので、手動で対応しています。

ちょっと行き詰まってしまいました。
とてもいいTIPSなので残念です……。

Posted by: ryoko : 2005年2月 4日

$basename ||= dirify…
の行の前に
require_once("/パス/mt/php/lib/MTUtil.php");
を挿入したらどうなるでしょう?
パスは書き換えてください。

dirifyという関数を定義しなくてはならないですから。

Posted by: pekoe : 2005年2月 5日

すばらしいスクリプトですね。
当サイトに早速設置させていただきました。
ありがとうございます。

Posted by: junichi_y : 2006年2月 6日

junichi_yさんへ。
使用開始の日付を書き換えていないような気がします。
1日あたりの数字が変かも。

Posted by: pekoe : 2006年2月 6日

あー!(笑)
ありがとうございます。
早速変更いたします。

Posted by: junichi_y : 2006年2月 7日
コメントの追加









名前、アドレスをブラウザに記憶させますか?


※投稿には、名前とメールアドレスが必要です。
※メールアドレスは、表示されません。
※コメントにはタグは使えません。
※コメント中のURLは自動的にクリッカブルに変換します。





画像の中に見える文字を入力してください。



同カテゴリの人気記事
マイブログアンテナ
Feeds
EarlGrey Tearoom
メアド
counter
Powered by Movable Type