Movable Type 備忘録
コメント投稿者ランクを表示してみる
- Prev Page: WYSIWYGを入れてみる2
- Next Page: エントリ内のリンク切れをチェックする
以前、SQLでエントリを更新された順にソートするでは、SQLを使ってエントリの更新リストを表示するカスタマイズをご紹介しました。
今回は、感謝の気持ちも兼ねて、コメント投稿していただいた順に訪問者さんのHNと、サイトへのリンクリストを作ってみましたのでご紹介します。
- 2007.02.09 追記 -
<$MTInclude file="<$MTBlogURL$>site-lastupdate.html"$>
上記の<$MTInclude$>タグの件ですが、<$MTInclude$>内に<$MTBlogURL$>タグ(http://から始まるURL)は使えませんでした。ですので、正しくは以下のようになります。
index.htmlと同じ場所にsite-lastupdate.htmlを作成した場合<$MTInclude file="site-lastupdate.html"$>たとえば、widget/というディレクトリの中にsite-lastupdate.htmlを作成した場合<$MTInclude file="./widget/site-lastupdate.html"$>index.htmlがある場所を起点にした相対パス or 絶対パスで指定します。
以上です。
TAEKO さん、補足ありがとうございます (m;_ _)mペコ
- 2007.02.08 追記 -
もっとカンタンにブログの最終更新日を表示する方法ありました。
WingMemoさんでブログの最終更新日付を表示する(ダイナミック版)という記事が紹介されてます。
TAEKO さんの記事見るまで<$MTDate$>タグの存在を忘れてましたの。ありがとうございます。
TAEKO さんのサイトではダイナミック・パブリッシングについての記事をメインに書かれてますのですっごく参考になると思いますよ( ̄∇ ̄)/
で、肝心のブログの最終更新日ですが、<$MTDate$>タグを使用します。 やっぱり新規でインデックス・テンプレートを作成( site-lastupdate.html )して、その中に以下のコードを記述します。
日本語表記( 最終更新日: 2010年5月16日 13:50 )最終更新日: <$MTDate$>英語表記( Last Updated: May 16, 2010 13:50 )Last Updated: <$MTDate language="en" format="%B %e, %Y %k:%M"$>
そして、以下のコードを各テンプレート内に埋め込んでおきます。
<$MTInclude file="<$MTBlogURL$>site-lastupdate.html"$>
青い字の部分を各自の環境に合わせて変更します。
<$MTDate$>タグは、このタグが記述されたページ( ここでいうsite-lastupdate.html )の更新日付を表示するためのタグです。なので、インデックス・テンプレート作成時に必ず『インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する』にチェックすることを忘れずに ( ̄∇ ̄)b
次にエントリの投稿・更新されたときのみ、ブログの最終更新日としたい場合には以下のようになります。
日本語表記( 最終更新日: 2010年4月 5日 23:42 )<MTEntries lastn="1">最終更新日: <$MTEntryModifiedDate$></MTEntries>英語表記( Last Updated: April 5, 2010 23:42 )<MTEntries lastn="1">Last Updated: <$MTEntryModifiedDate language="en" format="%B %e, %Y %k:%M"$></MTEntries>
直近のエントリの更新日を取得しています。カンタンですね。
- 2007.02.02 追記 -
コメントやトラックバックではエントリの更新日付は変更されないようです。
すいません、わたしの勘違いでした (; ̄∇ ̄A
ここで紹介しているブログの最終更新日付は、直近に投稿されたエントリの更新日付を、ブログの最終更新日付としています。
今回の主旨である、ブログの最終更新日付を表示するには、エントリに関連するデータが格納されているテーブル 'mt_entry' から、エントリの更新日付( 'mt_modified_on' )を取得することでブログの最終更新日付とすることができそうです。
エントリの更新日付は、エントリの追記などによる更新はもちろんのこと、コメント投稿やトラックバックによっても更新されてるみたいです。
では、さっそくエントリの更新日付を 'mt_entry'テーブルから取得して表示してみます。
データベースからデータを取得するにはSQLというものを使って取得します。
MovableType(ムーバブルタイプ)にはSQLプラグインというものがありまして、このプラグインを使ってエントリの更新日付を取得してみます。
SQLプラグインのインストールについては、こちらのSQLでエントリを更新された順にソートするで紹介してますので参考にしてください。
わたしのサイトの最終更新日付は以下のようになります。
Last Updated: April 12, 2010 July 18, 2007
そして、上記サンプルは以下コードで表示しています。
<div>Last Updated: <MTSQLEntries query="select * from mt_entry where entry_blog_id='[MTBlogID]' and entry_status = 2 order by entry_modified_on desc limit 1"><$MTEntryModifiedDate language="en" format="%B %e, %Y"$></MTSQLEntries></div>
わたしのサイトではブログのPHP化を行っているので、上記コードをインデックス・テンプレートで作成( たとえば、site-lastupdate.php )しておいて、各テンプレート内に以下のようなタグを埋め込むことで、エントリ投稿や追記コメント投稿などによる、エントリのデータが更新されるたびに、再構築なしで自動的に最終更新日付がアップデートされるようにしております。
また、フッター部に表示している年( 2005-2007 )にも上記コードを使用して動的に更新しています。
各テンプレート内に埋め込んでおく<?php include('<$MTBlogURL$>site-lastupdate.php'); ?>
以上ざっとですが、ブログの最終更新日付の表示の仕方をご紹介しました。
では、SEE YOU♪
Trackback Pings(0)
No trackbacks found.




うわぁ~、私がいかにヒマジンか解る結果ですね。(笑)
毎回、相手して下さってありがとうございます。
ここじゃなくて、CAPTCHAエントリーの方がいいんでしょうけど、ここで言っちゃいます。
SECURE CODEには数字+アルファベットを使用しているようですが、表示されている文字のうち、数字の「0」と文字の「O」の判別が付かないと思います。(見ただけではどっちだか解らない)
何かしら解るような説明を入れた方がいいかも。
>>1 oscar さん
こんんちわ^^
> うわぁ~、私がいかにヒマジンか解る結果ですね。(笑)
いつもコメントありがとうございます(笑)
> 数字の「0」と文字の「O」の判別が付かないと思います。(見ただけではどっちだか解らない)
はい。わたしも使ってて気づいたんですの。
欧文フォントを別の、識別しやすいフォントに変更すれば問題ないんでしょうけど、GDIでフォントを指定する場合、フォントを別途アップロードする必要があるみたいなんですの。
なので、見てみぬ振りしてたんです。
それに、ひらがな1文字に変更するつもりでいたので、とりあえずいいやっ!! で済ませてしまいました(; ̄∇ ̄A
暫定対応として、数字を使わないようにしましょうかね。。。と思ったけど、乱数からMD5変換してるから、数字だけ抜かすってのはできないですね。
困った。そこの部分のコードを変えるか、一言明記するか…う~ん。
とりえあず、英小文字「o」と英大文字「O」を拾った場合、14番目の文字を使うよう対応しました。
同じ文字は並ばない…という想定ですけど。
いやぁ相変わらず濃いネタですねぇ
最近は多忙すぎてロリポップ実験室は停止中です。
技術的な解説やらネタをのせるとエントリ書くのに時間がかかりすぎてしょうがないですっ
最近は「たまにしか更新されないブログ」というふうにどこかで紹介されました(笑)
>>3 GUTS さん
こんにちわ^^
> 最近は多忙すぎてロリポップ実験室は停止中です。
はい。チェックしてますから知ってます( ̄∇ ̄)
GUTSさんも忙しそうですね。
> 最近は「たまにしか更新されないブログ」というふうにどこかで紹介されました(笑)
ふふ(; ̄∇ ̄A
GUTSUさんの記事内容ってわたしが知らないことの方が多いから、すっごくためになってます。
これからものんびぃ~り♪、またぁ~り♪ DEEPな記事期待してまぁ~す( ̄∇ ̄)/
おぉ!こんなランキング表示も出来るんですね(@_@)
私はまだbzbellさんと知り合ってから間もないというのに
第5位にランクさせて頂いてありがたき幸せですw
Blogpeopleの様なリンクリストにプラス、
コメントランキングがあるのってイイですね♪
カレンダー外して代わりに付けてみようかなぁ。
>>5 ぷーこ さん
こんにちわ^^
以前に、データベースから自由にデータ引っ張り出せる、SQLプラグインってのインストールしたんですけど、なんせSQLという言語?!が分からないと使えないものだったんです。
でも、使い方次第ではいろんな表示のさせ方できそうだなぁって思ってSQLの使い方をチョビッとずつ勉強して、試しに作ってみたんです( ̄∇ ̄)b
ランキングにしたくてやったわけじゃなく、COUNTという記述の勉強の副産物・・・といったところでしょうか(; ̄∇ ̄A はは
> 第5位にランクさせて頂いてありがたき幸せですw
いつもコメントありがとうございます♪
ホント嬉しいです(● ̄∇ ̄●)
> カレンダー外して代わりに付けてみようかなぁ。
うん、試しに表示してみてください。
他にも、こんなことできないかなぁとか、こんな表示させたいなぁ・・・なんてのあったら教えてください。TRYしてみますので♪
こんばんは!ようやく、イブという日に、ブログを再開することができました。
この「コメント投稿者ランキング」なんですが、「MySQL」をデータベースに使っていればどんなブログツールでも使える方法なんでしょうか?
しかし、2位ですか。これをキープできるように(?)、まめにコメントしていきます。にしても、PHPのツールって軽いですね♪更新の頻度が上がりそうです。元々頻度は高かったですけど。(笑)
>>7 ゆにっく さん
こんにちわ^^
> ようやく、イブという日に、ブログを再開することができました。
あややっ!! イメージかなり変わりましたねっ!!
このテンプレはWPのものですね♪
そっかぁ、ゆにっくさんWPに乗り換えたんですね(●´∀`●)
> 「MySQL」をデータベースに使っていればどんなブログツールでも使える方法なんでしょうか?
はい。MySQLでなくても大丈夫ですよ。
SQLという言語?! によるデータ抽出してるだけなのでSQLiteなどでもOKだと思います。
> 2位ですか。これをキープできるように(?)、まめにコメントしていきます。
そうですよ!! 少しは自覚してください (笑)
わたしも遊びに行きますので、遊びに来てください♪
あれ、何でWPで作ったブログやって分かったんですか?(^^;)分からないようにデザインしたつもりでしたが、まだまだやな。(笑)コメントとト何にせよ、PHPなブログって、再構築のこと一切考えなくていいから更新の頻度が格段に上がりそうです♪
bzbellさんは大変ですね。「Movable Type備忘録」というブログだから、絶対に他のブログツールに乗り換えられないんですもんね。まあその分、MTの知識は凄すぎですけど。(笑)到底かないません。
>>9 ゆにっく さん
> 何でWPで作ったブログやって分かったんですか?(^^;)分からないようにデザインしたつもりでしたが、まだまだやな。
あは(; ̄∇ ̄A
何ででしょうね♪ 前にゆにっくさんがWPに乗り換えるって言ってたからじゃないですかね。
> 絶対に他のブログツールに乗り換えられないんですもんね。
はっΣ( ̄Д ̄;)!!
そうですね、MovableType備忘録なのにWPのことばっかり記事にしてたらおかしい!? ですもんね♪
でもね、わたしMT使い続けます。
ダイナミック・パブリッシングって聞いたことあると思いますが、この先堪えられないくらいになったらそちらに移行するつもりですの( ̄∇ ̄)b
実はこっそりWPってどんなもんなのかイジってたりしてします(; ̄∇ ̄A はは
bzbellさん、こんにちは♪
クリスマスも終わり、今年も残すところあと僅かですね。
今年はbzbellさんとお知り合いになって嬉しい年でしたw
で、今回はこのカスタマイズについて質問ですm(_ _"m)ペコリ
これってSQLiteでも大丈夫なんでしょうか?
それと、HNを上記の様に20名挙げるとしたら、
「,」か何かで区切って並べて記述するのでしょうか??
お手数ですが、初心者の私に愛の手をヾ(--;)ぉぃぉぃ
>>11 ぷーこ さん
こんにちわ^^
ホント1年って早いですよね☆
今年はいろんな意味で充実した年となりましたぁ( ̄∇ ̄)
> これってSQLiteでも大丈夫なんでしょうか?
はい。
MySQLに特化したことじゃないのでSQLiteでも大丈夫だと思います。
> 「,」か何かで区切って並べて記述するのでしょうか??
もしかしてぷーこさん勘違いしてるかも、なのでチョビッと説明します。
記事内の『comment_author != '各自のHN' 』で説明した、各自のHNのところを「,」区切って・・・と思ってますか!?
もしそうだとしたら、説明下手ですいません(; ̄∇ ̄A
'各自のHN'というところは、ぷーこさん自身がコメント投稿したときの名前を指定します。
たとえば、わたしの場合だったら、いつも'bzbell'としてコメント投稿してるので'bzbell'と指定します。
ぷーこさんの場合だと、'ぷーこ@管理人'となりますかね。
(*/∇\*)キャ!恥かしい勘違いでしたペコm(_ _;m)三(m;_ _)mペコ
そうですよね、良く考えなくても分かるじゃんっσ(^_^;)
すみません、相変わらず盆暗で。。。
「各自」って自分の事だ~MT初心者という問題ではなく、
小学生以下の読解力と訂正させて下さい( ̄▽ ̄;)!!
こんな私ですが、また来年もよろしくお願いしますm(_ _"m)ペコリ
体調に気を付けてよいお年をお迎え下さいねw
>>13 ぷーこ さん
やっぱりそうでしたか(; ̄∇ ̄A
> 小学生以下の読解力と訂正させて下さい( ̄▽ ̄;)!!
わたしも読解力ないんです。人のこと言えませんの (ノ_‐;;)とほほ
> こんな私ですが、また来年もよろしくお願いしますm(_ _"m)ペコリ
> 体調に気を付けてよいお年をお迎え下さいねw
はい( ̄∇ ̄)/
こちらこそ今年はお世話になりました。
来年もよろしくお願いいたしますm(_ _"m)ペコリ
ノロウィルス流行ってる!? みたいだから、ぷーこさんも旦那さんも十分気をつけてくださいね♪
わたし生カキ好きなんですけど、今年はお預けかな(>ε<) ブー
クリスマス・プレゼント良かったですね☆
ウチの両親は形に残るものはくれなかったけど、記憶に残るものをもらいました♪
度々申し訳ないですペコm(_ _;m)三(m;_ _)mペコ
上記のXHTMLに、私のHNを入れて、リスト数を10に変更して
再構築したんですが、下記の様なエラー表示が出てしまいます。。。
「Error in query: unrecognized token: "`"(1) at dbdimp.c line 268 」
もし解決法があれば教えて頂ければと思います。
お手数かけてすみません( p_q)エ-ン
年末でお忙しいと思いますので、ゆっくりで構いません(● ̄▽ ̄●;)ゞぽりぽり
>>15 ぷーこ さん
こんにちわ^^
まず、こちらのSQLでエントリを更新された順にソートするで紹介したSQLプラグインはインストール済みですよね( ̄∇ ̄)b
そしたら、以下のXHTMLで試してみてください。
ぷーこさんのエラーを見る限り、バッククォーテーション「`」が認識されてないようなので、そこを修正したものが上記になります。
MySQLで確認したら特に問題なかったのですが、データベースによってはダメだったりするのかなぁ。
参考までに、わたしはhttp://www.techscore.com/tech/sql/を参考にしました。
こちらの反応も遅くなってしまってすみませんペコm(_ _;m)三(m;_ _)mペコ
XHTMLを修正して頂きありがとうございます!
またこれで設置チャレンジしてみますね( ̄0 ̄)/ オォー!!
こんばんわ、ぢぢいです。
コメント投稿者ランクの表示、無事できました。
このランキングは指定した期間でのランキングを
表示することは可能なのでしょうか?
よろしくお願いします。
>>18 ぢぢい さん
こんにちわ^^
期間限定ですか…う~ん、やってみないと分かりませんが、確かSQLで任意の期間内からデータを抽出する方法(記述)があったような気がします。
少しお時間ください♪
>>18 ぢぢい さん
こんにちわ^^
ぢぢい さんがご希望されてる、指定した期間内に投稿していただいたコメント投稿者の一覧表示につて、記事内に追記しましたのでご確認ください ( ̄∇ ̄)/
こんばんわ~、ぢぢいです。
お手数かけてすみません。
おかげさまで、動作するようになりました。
1点気がついたことですが FROM `mt_comment` と `COUNT( * )` の「` 」を消さない
といけないみたいですね。
消したら動作しました(^^
どうもありがとうございました。
>>21 ぢぢい さん
> 1点気がついたことですが FROM `mt_comment` と `COUNT( * )` の「` 」を消さないといけないみたいですね。
> 消したら動作しました(^^
えっΣ( ̄Д ̄;)!! そうなんですかっ!?
わたしの方は問題ないのですが・・・分かりました。ありがとうございます。
※う~ん、やっぱりわたしの方は「` 」がないとエラーします。MySQLだからかなぁ (>∀< )
bzbellさん、初めまして。
この度、コメント投稿者ランクを僕のブログでも使わせていただきました。
他にも参考にさせていただいていて、いつもありがとうございます。
コメント投稿者ランクですが、自分の環境はSQLiteということで、
ぷーこ さん宛てのコメントに書かれたXHTMLを参考にさせていただいたのですが、
こちらを過去○日以内分を表示させるようにするのは難しいでしょうか?
いろいろ変えてみてはいたのですが、その度に
「Error in query: unrecognized token: "`"(1) at dbdimp.c line 268 」
という表示が出て諦めました…
よろしくお願いします。
>>23 鹿之助 さん
はじめまして^^
> 他にも参考にさせていただいていて、いつもありがとうございます。
こちらこそありがとうございます♪
ご質問の件ですが、以下に示すところの「`」を削除してみてもらえますか。今後ともよろしくお願い致します (m;_ _)mペコ
どうやら、>>21 のコメントにもあるようにSQLiteだとダメっぽいんです。
ここで紹介しているSQLは、実際にAdminツールってので表示できたものなので、MySQLでは問題ないんですけど (; ̄∇ ̄A
bzbellさん、こんにちは。
たびたびすいません。
言われたとおり、「`」を消してみたのですが、今度は下記のエラーメッセージが出てきました。
Error in query: no such function: TO_DAYS(1) at dbdimp.c line 268
もしお手数でなかったら対処方法を教えていただけますか。
やはりSQLiteでは限界なんでしょうか…
>>25 鹿之助 さん
こんにちわ^^
どうやらエラー内容から、SQLiteでは、TO_DAYS という関数!? が使えないようですね (; ̄∇ ̄A
> やはりSQLiteでは限界なんでしょうか…
どうやらそのようです。
チョビッとお待ちいただけますか ( ̄∇ ̄)/
他の方法を模索してみますの♪
チョビッとお聞きしますが、記事内で紹介してる「2006-10-01 ~ 2006-12-31の間の投稿されたコメント投稿者」or「2007.01.01以降に投稿されたコメント投稿者」は正しく表示できますか ( ̄∇ ̄)b
もしできた場合、日付指定ならできる・・・ということになりますので、ご確認お願いします (m;_ _)mペコ
>>25 鹿之助 さん
いろいろ調べたところ、SQLiteではやっぱり記事で紹介している方法ではダメなようです。
ですので、以下の方法で試してみてもらえますか (>∀< )
<ul> <MTSQL query="select DISTINCT comment_author, comment_url, COUNT( * ) FROM mt_comment WHERE (comment_author != '各自のHN') AND (comment_created_on BETWEEN datetime(datetime('now'), '-30days') AND datetime('now')) GROUP BY comment_author ORDER BY COUNT( * ) DESC LIMIT 0 , 10"> <li><a href="<$MTSQLColumn column='2'$>"><$MTSQLColumn column="1"$></a> [<$MTSQLColumn column="3"$>]</li> </MTSQL> </ul>たとえば、今日(2007-02-17 21:46:10)から30日前の日付を取得して、その日付~今日までの投稿者リストを表示・・・にしてるつもりです。でも自信ありません(; ̄∇ ̄A
わたしの方ではSQLiteでの確認はできませんので、鹿之助 さんの方でご確認お願いします (m;_ _)mペコ
bzbellさん、こんばんはです。
教えて頂いた方法を試してみたところ、ばっちり上手く行きました!!!
おんぶに抱っこでホント申し訳ないのですが、とっても助かりました。
来週あたりにエントリーで書かせていただきたいと思っていますので、その際はTBさせて頂きたいと思います。
今後ともどうぞ宜しく御願い致します。
>>28 鹿之助 さん
こんにちわ^^
> 教えて頂いた方法を試してみたところ、ばっちり上手く行きました!!!
やたぁ (>∀< )/
調べてみたものの、わたしの方で確認できないし、関数の入れ子で使用しちゃってたのでホント自信なかったんです (; ̄∇ ̄A
> おんぶに抱っこでホント申し訳ないのですが、とっても助かりました。
いえいえ、わたしも勉強になりました♪
至らないところは多々あると思いますが、こちらこそよろしくお願い致します (m;_ _)mペコ
たいへん貴重なやり方、教えて頂いてありがとうございます。
実は、MTで複数のブログを開設しているのですが、
そのどれも、コメントランキングをつけたいと思っています。
上記のやり方ですと、一番始めに設置したブログのコメントランキングが
どのブログにも表示されてしまいます。
何か良い知恵がありますか?
>>30 nobu さん
こんにちわ^^
mt_commentテーブル内にcomment_blog_idというのがありまして、そこに該当ブログIDを指定すればブログごとのコメント投稿者ランクを表示させることができます。
具体的には以下のようになります。
太字の部分を追加しています。
これにより、指定ブログIDに該当するコメント投稿者ランクを表示させることができました ( ̄∇ ̄)b
不明点などありましたらご連絡ください。