MovableType 過去30日間のアクセスランキング

2015年2月21日 | MovableType | コメント (0)

2005年の記事に、
[E] MySQLで記事のアクセス分析
ということで、アクセスランキングを設置したのですが、データが蓄積され続けるので、ときどきリセットして運用していました。

これを過去30日間のアクセス数集計をしたいと思いました。MySQLのクエリーをネットでサンプルを調べながら、下のようなクエリーにたどり着きました。

$query = "SELECT entry_blog_id, mt_entry.entry_id entry_id, entry_title, entry_authored_on, sum(views) as total FROM mt_entry, recently_most_viewed where mt_entry.entry_id = recently_most_viewed.entry_id and entry_blog_id =".$blogid." and (DATEDIFF( NOW(), date ) <= 30) group by entry_id ORDER by total DESC LIMIT 0,$INFOMAX";

$blogidには、ブログIDが入り、複数のブログを運用している時のフィルダになります。$INFOMAXは、ランキングの数です。

「sum(views) as total」とすることで、閲覧数の集計を行ないます。「DATEDIFF( NOW(), date ) <= 30」という部分で、30日以内のデータを。「group by entry_id」とすることで、エントリー別の集計を行なうように支持しています。

MovableType 独自の短縮URL

2012年1月 8日 | MovableType | コメント (0)

このブログの記事数は、現在1000くらい。個別記事のURLは数字にして運用しているのですが、6桁は必要なかったみたい。それでも、短い独自ドメインとアーカイブのディレクトリを短くして、数字以外の部分では、短くなるように工夫しています。

最初が、
http://www.hkd.csice.com/earlgrey/archive/000123.html
って感じで運用していたのが、
http://e.tpot.tk/a/000123.html
となりました。

それでも、Twitterの普及で短縮URLが流行っています。

せっかく短いドメインを取得しているので、自分のサーバーで短くできないものかと考えました。

そこで、
http://tpot.tk/exx
って感じにしてみようと考えました。62進数だと、2桁にしかなりません。短縮URLサービスを使うより短いかも。eの部分は、今後の拡張を考え、ブログの識別子にしたいと思います。

【手順1:.htaccessの設定】
まず、.htaccessでスラッシュの後ろの文字列をindex.phpに渡すようにします。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?id=$1 [L,QSA]

【手順2:index.phpの作成】
受け取った文字列を記事のURLに変換して、リダイレクトします。
受け取る文字列は、62進数になっているので、10進数にしたあと、ゼロパディングします。

<?
require_once "BaseConvert.inc.php"; //BaceConvertをインクルード
$id=$_GET[id]; //受け取った文字列を変数$idに入れる
$blog=substr($id,0,1); //文字列の最初はブログの識別子に使っている
$item=BaseConvert::convert(substr($id,1), 62, 10); //2文字目以降を10進数へ
$url="http://www.tpot.tk/"; //デフォルトのURLを指定

if ($blog == "e") //ブログの識別子がeのとき
{
$url=sprintf("http://e.tpot.tk/a/%06d.html",$item); //URLを生成
}

header("HTTP/1.1 301 Moved Permanently"); //このように指定すると受け渡しの扱いになる
header("Location: $url"); //URLへ飛ぶ

?>

【手順3:MovableTypeの設定】
短縮URLを生成する。PHPを使うので、PHPで動作するようにしている。
プラグインを作るのもいいかもしれない。

http://tpot.tk/e<?php
require_once "BaseConvert.inc.php";
$item=BaseConvert::convert(<$MTEntryID$>, 10, 62);
print $item;
?>

MovableType MovableTypeをFacebookやGoogle+に対応させる

2011年8月13日 | MovableType | コメント (0)

■index.htmlのテンプレート
xmlns:og="http://ogp.me/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml">

<meta property="og:title" content="<$MTBlogName$>" />
<meta property="og:type" content="blog" />
<meta property="og:image" content="画像のURL" />
<meta property="og:url" content="<$MTBlogURL$>" />
<meta property="og:site_name" content="<$MTBlogName$>" />
<meta property="fb:admins" content="FacebookのID" />
<meta property="og:description" content="<$MTBlogDescription$>" />

■個別記事のテンプレート
xmlns:og="http://ogp.me/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml">

<meta property="og:title" content="<$MTEntryTitle$>" />
<meta property="og:type" content="article" />
<meta property="og:image" content="画像のURL" />
<meta property="og:url" content="<$MTEntryPermalink$>" />
<meta property="og:site_name" content="<$MTBlogName$>" />
<meta property="fb:admins" content="FacebookのID" />
<meta property="og:description" content="<$MTEntryExcerpt remove_html="1" encode_xml="1"$>" />

■URLリンタでチェック
http://developers.facebook.com/tools/lint
で、ブログのトップURLを入れて、一番下にある「いいね!」をクリックして、Facebookページを作成する。

MovableType スタイルシートにアクセス制限

2010年2月21日 | MovableType | コメント (0)

ときどき、MovableTypeで運用しているサイトで、スタイルシートが読み込まれていないサイトを見かけます。あえてそうする人はたぶんいないと思うので、意図しないことが起きていると思います。

スタイルシートは、mtディレクトリのmt-staticのblog.cssなどをインポートとして読み込む必要があるのですが、それに気づかず、mtディレクトリにアクセス制限をかけているのかもしれません。アクセス制限をしても、自分自身は制限を解除しているので、何の不自由もなく、正常に表示されているため、いつまでも気づかないのかもしれません。

そういえば、ホームページビルダーなどで、ローカルのファイルにリンクしているサイトもあります。自分のコンピュータでは画像などがきちんと表示されるので、気づかないのでしょう。

MovableType ウェブページのトップをフォルダ内へ

2009年3月 8日 | MovableType | コメント (0)

MovableTypeのウェブページ機能で、トップレベルのフォルダがルートになるため、ファイルが散らばって美しくありません。

フォルダを作成して運用すれば、サブフォルダ内に入れることはできますが、一つ作業が増えるので面倒です。

解決策は案外簡単で、「アーカイブテンプレート」の「ウェブページ」のアーカイブパスがfolder-path/file-basename.htmlとなっているのをxxx/%-c/%-fとします。xxxには任意のフォルダを指定します。

こうすれば、ウェブページ作成で、ルートを指定しても、自動的にxxxの中に収まります。

MovableType ウェブページをソートして表示

2009年3月 6日 | MovableType | コメント (0)

MovableTypeのウェブページがコード順になっているのをどうにかしたい。
検索しても、タイトルに加工するなどの手段が書かれているのが多いのですが、
ソートの方法を指定できるので、概要を使っていないのなら、

<mt:Pages sort_by="excerpt" sort_order="ascend">

で、並べ替えが自由自在になります。

MovableType MovableTypeでバックアップ

2009年3月 3日 | MovableType | コメント (0)

xreaサーバーに設置したMovableTypeで、管理メニューのバックアップを実行。
どうやらFTPではアクセスできない/tmpに書き込んでしまうようで、容量不足になってしまいました。

CGIを使って、/tmpの中身を削除しようとしたのですが、容量不足なので、アップロードもできません。

検索をした結果、解決策が...。

まず、xreaの管理メニューから、「ホスト情報登録」で「SSH登録」をクリック。
ターミナルソフトから、「ssh username@s000.xrea.com」(usenameと000は変更)として、ログインします。
「ls -l /tmp」で中身を見て、「rm *.JPG *.jpg」などと削除を実行。

無事削除完了!!

【追記(2009/03/06)】
mt-config.cgiに
TempDir /virtual/tpot/tmp/mt/
などと、指定するといい。

MovableType 月別アーカイブへのリンク

2008年9月 1日 | MovableType | コメント (0)

通常、月別アーカイブは、サイドバーからのアクセスになります。日記用途や、シリーズものなど、カテゴリアーカイブ同様、月別アーカイブへのリンクが個別記事にあってもいいのではないかと思います。

例えば、この記事の場合、
2008年9月1日 on MovableType | 固定リンク | コメント (0) | トラックバック (0)
のようになっていて、「MovableType」の部分がカテゴリアーカイブへのリンクになっています。

このうち、「2008年9月」の部分を、月別アーカイブのリンクにする方法です。なお、このブログはその措置はしていないので、リンクになっていません。

テンプレートの
<$MTEntryDate format="%x"$>
という場所を探します。
これは、日付を表示させています。

これを
<a href="<$MTEntryLink archive_type="Monthly"$>"><$MTEntryDate format="%Y年%m月"$></a><$MTEntryDate format="%d日"$>
とします。
年月の部分がリンクとなり、日付とは分離されます。

インデックスページや個別記事などに対して、上記の入れ替えをおこないます。

MovableType 存在しないページのページ

2008年8月11日 | MovableType | コメント (0)

ファイルが存在しないと、サーバーが用意してある[404 File Not Found]のエラーページが表示されます。せっかくアクセスしてくれた人のために、存在しないページのためのページを表示させ、記事に誘導してあげましょう。

まず、管理画面で、[デザイン]→[テンプレート]の画面で、
[インデックステンプレートを作成]をクリックします。

タイトルは任意に入力、[出力ファイル名]には[notfound.html]と入力します。
内容は、インデックスページなどを参考に。
[保存と再構築]で、ページを作成します。

次に[.htaccess]を作成、またはすでに存在する場合は、編集します。
ErrorDocument 404 /notfound.html
の1行を追加。

サブディレクトリにブログを表示させている場合は、そのパスを追加します。

MovableType 指定した画像に陰をつける(MovableType)

2008年1月23日 | MovableType | コメント (0)

画面をキャプチャーした画像をブログで使うとき、画像と本文の境目がわかりづらいときがあります。陰をつけたりすればわかりやすいのですが、画像加工をするのも面倒です。

そこで、スタイルシートで陰をつけたいと思います。ただし、貼り付けてある画像すべてではなく、指定したときに有効になるようにします。

(1) まず、スタイルシート(styles-site.css)に陰をつける設定をします。

.add-border img{
border-top: 3px solid #CCC;
border-left: 3px solid #CCC;
border-bottom: 3px solid #666;
border-right: 3px solid #666;
}

(2) そして、陰をつけたい画像にクラスを設定します。

<div class="add-border">
<img ……>
</div>

陰をつけない通常の状態
mt-edit-screen.jpg

陰をつけた場合

mt-edit-screen.jpg

MovableType トラックバックURLを変更してみる(MovableType)

2008年1月20日 | MovableType | コメント (0)

ちょっと変わったトラックバックURLにしてみました。
通常は「http://xxx/mt/mt-tb.cgi/1234」のようになっていますが、これを「http://xxx/mt/trackback/1234」というように、どこかのブログサービスのトラックバックURLみたいにします。

まず、mt-config.cgiに

TrackbackScript trackback

を追記または変更をします。MovableType4.01でも有効です。

次にmt-tb.cgiをtrackbackにリネームします。ただし、このままでは「ファイルが存在しない(404)」というエラーで実行しないので、mt-config.cgiやtrackbackと同じディレクトリに「.htaccess」を作り、以下のように書き込みます(すでに存在する場合は追記)。

<FilesMatch "^trackback$">
ForceType cgi-script
</FilesMatch>

こうすることで、trackbackというファイル名でもcgiとして動作するようになります。なお、ファイル名のtrackbackは、mt-config.cgiのTrackbackScriptと連動して定期的に書き換えると、トラックバックスパム対策になります。

あとは、全記事を再構築します。

【参考記事】
[N] トラックバックスパム対策で「mt-tb.cgi」をリネーム

MovableType MovableTypeで指定日投稿

2007年4月23日 | MovableType | コメント (0)

指定時刻に記事を自動投稿するには、3.3以前は、cronでrun-periodic-tasksを実行する必要がありました。
しかし、cronが使えないレンタルサーバーでは、これがうまくいきません。外部からwgetとしてもダメでした。

3.3以降は、システムログのログフィードにアクセスするだけで、スケジュールタスクが実行されます。
wgetをするときは、&の前にバックスラッシュを入れて、エスケープしなければならないところに注意が必要です。これを自宅のLinuxサーバーからcronさせれば、指定日投稿が実現できます。

自宅サーバーがなければ、オンラインRSSリーダーでログフィードを取得させれば同じことが可能です。ただし、ATOMのバージョンの1.0に対応している必要があります。もし、0.3までの対応であれば、ヘッダを書き換えることで対応可能です。

mt/tmpl/feeds/feed_chrome.tmplの最初の2行を
<?xml version="1.0" encoding="<TMPL_VAR NAME=LANGUAGE_ENCODING>"?><feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
と入れ替えます。

MovableType 移転後も迷惑トラックバックは続く

2007年1月 5日 | MovableType | コメント (0)

このサイトはリダイレクトで引っ越し後のサイトへ自動的に転送するようになっているのですが、システムはまだ旧サイトに置いたままにしてあります。

迷惑トラックバックや迷惑コメントはどうなるのかというと、迷惑トラックバックは相変わらず旧サイトに送られていて、どうやらURLがどこかに蓄積されているようです。直接CGIにアクセスしています。

迷惑コメントは旧サイトにはなく、新しいサイトに送られてきます。なので、CGIに対する自動処理ではないようです。新しいサイトにリダイレクトされたあとにコメントをつけていることになります。

MovableType 自動でリダイレクト

2007年1月 4日 | MovableType | コメント (0)

サブドメインから独自ドメインへ引っ越しを考えました。
旧サイトからMySQLのデータベースを書き出して、URLをエディタで置換。
新しいサイトでの動作を確認後、あとは転送させるわけですが、今まで転送させるとき、.htaccessでErrorDocumentを使って転送させていました。

しかし、この方法だとトップページにしか転送しないので、今回は別の方法を。
調べてみるとRedirectが使えるという情報を得ました。
これだと引っ越ししていることを意識することがないくらいスムーズに転送されます。

Oceansoft Library - ホームページの引っ越しスクリプト

同じファイルが存在しているときは、リダイレクトで転送することができます。ブログなどを同じシステムで大量のページを転送させたいときに便利です。

【追記】
具体的に紹介されているサイトを見つけました。
MovableTypeのいろいろなノウハウが紹介されているので、役に立ちそうです。

URLを自動転送させる.htaccessの書き方 :: MTカスタマイズ法収集ブログ

MovableType RSSからの訪問者をカウントする

2006年8月19日 | MovableType | コメント (0)

RSSってブログの特徴的な機能なのですが、果たして使われているのだろうか?と気になります。
RSS経由での訪問者がいるのであれば、RSSリーダーに登録して読んでもらっているということで、とてもうれしいことです。

CNET JapanではRSSのリンクに「?ref=rss」とついていて、たぶんこれでRSS経由の訪問者をカウントしていると思われます。それを、このサイトでも、ちょっと真似をしてみました。

RSS1.0、RSS2.0、ATOMのそれぞれに「?ref=rss10」「?ref=rss20」「?ref=atom」という具合にURLに追加します。
どれがよく使われるのか、区別できるようにしてみました。
このサイトは、拡張子が.htmlのままPHPが動作するようにしているので、PHPのスクリプトのGETメソッドでRSSの種類を取得し、データベースに書き込んでいます。

【追記 2006/8/20】
なんか期待したことと違うことになっています。
Googleで検索結果のURLにも「ref=rss10」というのがついています。
Googleも配信したRSSからデータベースを作っているのでしょうか。
それだと区別ができません。なにか一工夫が必要のようです。

MovableType カテゴリを強調

2006年5月18日 | MovableType | コメント (0)

MovableTypeのカテゴリを強調したくて、プラグインを導入。
使用したのは、IfCategory.plとIfTemplateType.plです。
(それぞれ検索をかけるとすぐに見つかると思います)

このブログの上部は、共通のテンプレートを呼び出しています。
Yahoo!ニュースの上部のジャンル別のタブのようなものを実現しています。
これをするために、IfTemplateType.plで処理を振り分けます。
一致したカテゴリは、IfCategory.plで処理。

カテゴリ別だとMTIfCat_eq_Arcで処理させ、
個別記事の場合は、MTIfCat_eq_Entで処理。
インデックスの場合は、カテゴリの強調はなし。

<table border="0" cellpadding="2" cellspacing="0"><tr> <td nowrap>カテゴリ:</td>

<MTIfTemplateType type="Category">
<MTCategories>
<MTIfCat_eq_Arc>
<td nowrap bgcolor="#000080"><font color="#ffffff"><$MTCategoryLabel$></font></td>
</MTIfCat_eq_Arc>
<MTIfNotCat_eq_Arc>
<td nowrap><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a></td>
</MTIfNotCat_eq_Arc>
<td nowrap> | </td>
</MTCategories>
</MTIfTemplateType>

<MTIfTemplateType type="Individual">
<MTCategories>
<MTIfCat_eq_Ent>
<td nowrap bgcolor="#000080"><font color="#ffffff"><$MTCategoryLabel$></font></td>
</MTIfCat_eq_Ent>
<MTIfNotCat_eq_Ent>
<td nowrap><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a></td>
</MTIfNotCat_eq_Ent>
<td nowrap> | </td>
</MTCategories>
</MTIfTemplateType>

<MTIfTemplateType type="Index,Monthly,Weekly,Daily">
<MTCategories>
<td nowrap><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a></td>
<td nowrap> | </td>
</MTCategories>
</MTIfTemplateType>

<td nowrap>
<a href="<$MTBlogURL$>archives.html">全記事一覧</a> |
<a title="アクセスランキング" href="<$MTBlogURL$>ranking.html">ランキング</a>
</td></tr></table>

MovableType MovableTypeのバージョンアップ

2006年5月16日 | MovableType | コメント (0)

このブログのシステム、MovableTypeを2.661から3.2-ja-2へバージョンアップ。
結果は非常に簡単。あれこれと自動的に認識するようです。

(1) 2.661のmtフォルダをmt.backにリネーム。
(2) 新しいバージョンのMovableTypeをダウンロード。
(3) ダウンロードしたファイルを解凍後、mt-config.cgi-originalをmt-config.cgiにリネーム。
(4) mt-config.cgiに2.661のmt.cfgの内容のうち、CGIPathとデータベースの設定をコピー。DBPasswordの部分は2.661のmt-db-pass.cgiにあります。
必要に応じてDBUmask 0022などのコメントアウトを削除し、有効にする。
(5) FTPでアップロード。
(6) mt.cgiにアクセス。アクセスすると自動的にmt-upgrade.cgiを呼び出し、バージョンアップ完了。

テンプレートはそのまま引き継がれ、ブログの見た目は変わらず。
管理画面は変わり、トラックバックスパム対策などが加わっています。

MovableType MTの自分の情報を更新

2006年3月22日 | MovableType | コメント (0)

MovableTypeのプロフィールではなく、
あちらこちらに散らばった自分のコメントを更新したい。
メールアドレスやURLが最初と最近では変わってしまっている。

SQLで、
UPDATE mt_comment SET comment_email='お好きなメールアドレス',
comment_url='お好きなURL' WHERE comment_author='自分の名前'
を実行。

その後、再構築。

MovableType ATOMにfavicon

2006年1月29日 | MovableType | コメント (0)

NetNewsWireでは、サイトアイコン(favicon.ico)が表示されますが、ルートにあるfavicon.icoが表示されます。
atom.xmlにアイコンの指定をするとこれを変更することができます。

copyrightタグの下辺りに下記の記述を。
<icon><$MTBlogURL$>favicon.ico</icon>

MovableType リンク用のソースを表示させる(MovableType)

2006年1月 8日 | MovableType | コメント (2)

「このリストは、次のエントリーを参照しています」のリンクって使ったことない。
いらないものは削除!

その代わり、リンクしたいときのソースを表示するってどうでしょう。

<div class="trackback-url">
■トラックバックURL:<br />
<$MTEntryTrackbackLink$><br />
■記事用リンクソース:<br />
&lt;a href="<$MTEntryPermalink$>" title="<$MTBlogName$>: <$MTEntryTitle$>"&gt;<$MTEntryTitle$>&lt;/a&gt;<br />
■Wiki用リンクソース:<br />
[[<$MTEntryTitle$>&gt;<$MTEntryPermalink$>]]
</div>

自分で自分の関連記事のリンクを貼りたいときなどに役に立ちます。

【関連記事】
[E] リンク用のソースを表示させる(Nucleus)

MovableType ブログ内の検索

2005年9月13日 | MovableType | コメント (0)

ブログのカレンダーを撤去し、代わりにブログ内の検索を設置してみました。
MovableTypeでは、検索のログが残るのですが、
以前、サイドバーの中間部分に設置していたときは、利用者は皆無だったのが、
トップに設置すると利用者が増えていました。

MovableType 個別記事のヘッダに概略を

2005年8月17日 | MovableType | コメント (0)

MovableTypeの個別記事のヘッダにdescriptionが入っていません。
ここに記事の概略を入れたら、GoogleAdsenseで解釈しやすくなるのでしょうか?

テンプレートのIndividual Entry Archiveに
<meta name="description" content="<$MTEntryExcerpt remove_html="1" encode_xml="1" convert_breaks="0 "$>" />
を追加してみた。

【追記】
encode_js="1"などいろいろ試してみましたが、"←ダブルクォートがエスケープされずに画面にゴミとなることがあるのでやめました。

MovableType 投稿した日に背景色を設定

2005年7月30日 | MovableType | コメント (0)
徒然ぶろぐ: MTのカレンダーで投稿した日に画像を表示

を参考に、背景色を設定。
divだと改行してしまうので、spanに変更。

<MTCalendarIfEntries>のあとに
<span style="background:#FFCC99;">
</MTCalendarIfEntries>のあとに
<span>

MovableType エンティティコードのトラックバックスパム対策

2005年7月20日 | MovableType | コメント (0)

最近、「T&#101;x&#97;s H&#111;ld&#101;m」といった感じのトラックバックスパムが増えています。
エンティティコード(数値文字実体参照)というらしいです。

MT-BlackListでははじいてくれないので、以前応急措置でやった方法を応用して、タイトルに「&#」を含むものを全部はじくことにしました。良い方法があれば、再び書き換えたいと思います。

トラックバックスパム対策

if ($title =~ /&#/) {
return $app->_response(Error =>
$app->translate("You are not allowed to send TrackBack pings."));
}

MovableType Wiki用にリンク

2005年3月20日 | MovableType | コメント (0)

以前から、ウェブログの欠点である階層的なページ構成にならない点をどうにかならないかとWikiとの併用を考えていたのですが、Pukiwikiに簡単にリンクを貼るための改造をMT側でおこなってみました。

[[<$MTEntryTitle$>:<$MTEntryPermalink$>]]

MovableType MTの再構築エラー

2005年3月 5日 | MovableType | コメント (0)

トラックバックスパムが多く、しかも次々新しいパターンでやってくるので、データベースを直接削除し再構築を、と思ったのですが、最近Monthlyの再構築でエラーが。

探せば、解決方法がありました。

[NS] MovableTypeで再構築にコケる

lib/MT/App/CMS.pm で%Limit_Multipliersという配列に格納されていた。Individualだと1倍、Monthlyだと10倍だ。
Monthlyを2倍に変更しておく。

今後、さらに記事数が多くなったら、mt.cfgのEntriesPerRebuild値も少なくしないといけないかも。

MovableType 個別記事のコメント・トラックバックにNEWマーク

2005年2月 8日 | MovableType | コメント (1)

トラックバック・ピープルのblogカスタマイズを見ていると最近新着コメントやトラックバックにNEWマークをつけるのをよく見かけます。私も個別記事に新着コメントとトラックバックにNEWマークを付けてみることにしました。

M*Style Days: 新着コメントとトラックバックにNEWマークつけました。」を参考に改造。個別記事なので、再構築した日付ではなく、現在の時刻を取得するようにしました。また、ブログピープルのCSSのCLASS設定をそのまま利用することにしました。

トラックバック部分には、
<?
$days=5;
$date=strtotime("<$MTDate format="%Y%m%d"$>");
$ping=strtotime("<$MTPingDate format="%Y%m%d"$>");
$diff = ($date - $ping)/86400;
if ($days > $diff) {
echo "<span class='blogpeople-update-suffixtext'>NEW!</span>";
}
?>

コメント部分には、
<?
$days=5;
$date=strtotime("<$MTDate format="%Y%m%d"$>");
$comment=strtotime("<$MTCommentDate format="%Y%m%d"$>");
$diff = ($date - $comment)/86400;
if ($days > $diff) {
echo "<span class='blogpeople-update-suffixtext'>NEW!</span>";
}
?>

【追記 2007/01/12】
xreaサーバーで動作するように一部修正しました。

MovableType トラックバックスパム対策

2005年2月 1日 | MovableType | コメント (5)

online casino や online pokerのコメントスパムの対策はしてあるのですが、
同じonline casino/pokerのトラックバックスパムが登場しました。

とりあえず、応急処置ということで、online casino や online pokerをはじく改造をしました。

lib/MT/App/Trackback.pm の sub pingを探します。

return $app->_response(Error => $app->translate("Need a Source URL (url)."))
unless $url;

という行の後ろに

if ($url =~ /online/) {
return $app->_response(Error =>
$app->translate("You are not allowed to send TrackBack pings."));
}

を追加します。

トラックバックにonlineが含まれているとエラーにします。

追記(2005/02/04)
応急措置として導入したのですが、今後もURLを換えて攻撃してくると予想されるので、MT-BlackListを導入しました。

rolasip::weblog: MOVABLETYPE アーカイブ
徒波|大量 Trackback スパムに困り果てて MT-Blacklist を導入
[ペロンチョ]Milano::Monolog: MT-Blacklistを使用した場合の文字化け対策

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

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

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

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

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

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

■ダウンロード

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

MovableType MySQLで記事のアクセス分析

2005年1月10日 | MovableType | コメント (0)

MovableTypeで運用しているウェブログの記事のアクセス分析。

今までウェブプログラミングをしていて、データをテキストから取り出し、forやwhileで繰り返し処理をしながら、集計や並べ替えをしていたのですが、SQLを使うとそれらが簡単にできてしまうんです。

一応、情報技術者試験の時に勉強したのですが、そのときは具体的な目的はなかったので、詰め込みの勉強をしただけでした。こうして利用してみると、SQLの知識はデータ活用を大きく変えるものだと思いました。

さて、具体的にどのように処理したかを説明します。

やりたいことは、記事ごとのカウントをしているデータから、
カテゴリ別の集計をおこないます。カウントしているデータは、
シンプルにしてあるので、カテゴリ情報は含まれていません。
エントリとカテゴリの関連付けは、mt_placementに保存してありました。

SELECT placement_category_id,
count(*) as count, sum(mt_most_views.views) as sum
FROM mt_placement left join mt_most_views
ON mt_placement.placement_entry_id = mt_most_views.id
WHERE mt_placement.placement_is_primary = 1
AND mt_placement.placement_blog_id = $blogid
GROUP BY mt_placement.placement_category_id
ORDER BY sum DESC

「SELECT」でカテゴリIDとカテゴリIDの数と閲覧数の合計を取り出す。
「FROM」で「mt_placement」というテーブルから取り出すのですが、
そのテーブルは、「mt_most_views」と連結させてあり、
「mt_placement」テーブルの「placement_entry_id」と
「mt_most_views」テーブルの「id」を関連づけてあります。
「placement_is_primary」は「主カテゴリ」かどうかが保存してあって
これが 1 だと「主カテゴリ」ということです。
「mt_placement.placement_blog_id」には、ブログIDが保存してあって、
これが呼び出されるブログIDと一致しているかを調べます。
「GROUP BY」は、どの要素で集計するかということで、
カテゴリIDでまとめるようにしてあります。
最後に「ORDER BY」でソートしています。

説明すると長いのですが、SQLなしのperlやPHPだけで処理しようとすると
何倍の行数になることか...。

エクセルでごちゃごちゃ数式を書いているのと
アクセスでスマートにデータベースで処理しているのと同じです。

完成品は後日公開します。
(動作中のものは「全記事」にあります)

MovableType サイト簡易表記の対応方法(Movable Type)

2005年1月 9日 | MovableType | コメント (13)

静かなブームになっている「サイト簡易表記」に登録してみました。

簡易表記一覧 - Easy Notation
サイト簡易表記

サイトの表示を変えずに、トラックバックしたときだけ自動的に「サイト簡易表記」を付加する方法を紹介します。(MovableType2.661の場合を中心に)

■トラックバックの改造
1つのブログだけを運用している場合は、[1]の方法でいいとおもいます。

[1] 1つのサイトで1つのブログを運用している場合

<mt>/lib/MT.pmの564行目あたり(MT3の場合は、756行目あたり)
push @qs, 'title=' . MT::Util::encode_url('[E] '.Jcode->new($entry->title, $charset)->utf8);

※文字化け防止でJcodeが入っているので、その場合は、
push @qs, 'title=' . MT::Util::encode_url('[E] '.$entry->title);
となります。

※いずれにしても、ピリオドを忘れずに。perlでの文字列連結の演算子です。

[2] 1つのサイトで複数のブログを運用している場合

<mt>/lib/MT.pmの559行目に(MT3の場合は、752行目あたり)
my $ename = '';
if ($entry->blog_id == 2) {$ename='[E] ';}
elsif ($entry->blog_id == 3) {$ename='[H] ';}

を追加します。

※コードは本サイトの場合なので、必要な箇所を編集してください。

そのちょっと下の方にタイトルを生成している部分があるので、
先ほどの「$ename.」を「encode_url(」の後ろに加えます。
push @qs, 'title=' . MT::Util::encode_url($ename.Jcode->new($entry->title, $charset)->utf8);

■Atom、RSSの改造
Atom、RSSのほうは、テンプレートを編集するだけです。

(1) Atom Index(atom.xml)の後ろの方

<MTEntries lastn="15">
<entry>
<title>[E] <$MTEntryTitle remove_html="1" encode_xml="1"$></title>

(2) RSS 1.0 Index(index.rdf)の後ろの方

<MTEntries lastn="15">
<item rdf:about="<$MTEntryPermalink encode_xml="1"$>">
<title>[E] <$MTEntryTitle encode_xml="1"$></title>

(3) RSS 2.0 Index(index.xml)の後ろの方

<MTEntries lastn="15">
<item>
<title>[E] <$MTEntryTitle remove_html="1" encode_xml="1"$></title>

導入した場合のThunderbirdでの表示。
Thunderbirdでは、どういうわけかブログ名は表示しないので、簡易表記はとても便利。

en_smp.png

※Nucleusの対応方法は、こちらです。

[E] サイト簡易表記の対応方法(Nucleus)

※WordPressの対応方法は、こちらです。

[E] サイト簡易表記の対応方法(WordPress)

※ココログでの設定方法は、こちらを参照。

[☆] 簡易表記に対応しました

MovableType エントリーのアクセスランキング for Movable Type

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

最近は、広告ブロックをする人も増えて、Javascriptを使ったアクセス分析もブロックできるようになってきました。閲覧する側は表示速度が大幅によくなり快適です。しかし、運用している側はアクセスの状況の傾向は知りたいもの。そこで一番確実なのは、PHPにアクセス分析を埋め込んでしまうこと。これは絶対にブロックできませんので、正確なアクセス分析が可能になります。

■概略

 エントリーのアクセスを記録し、
 アクセス数のランキングを表示します。

■注意

○MySQLで動作しているものに限ります。
○PHPで動作している必要があります。
 拡張子がHTMLのままPHP化するには以下の説明を参照してください。
 http://e.tpot.tk/a/000271.html
○このプログラムでは、直接データベースにアクセスしています。
 パーミッション等には気をつけてください。
 (mt.cfgから設定を取り出すのが面倒だった)
○データベースのテーブル名のサフィックスは、「mt_」としています。
○MovableType2.661で動作チェックをしています。
 3.xxでもアーカイブのファイル形式が2.xxと互換の時(古い形式)は
 動作すると思います。
○ファイルは、UTF-8で保存してあるので、EUC-JPの場合は、
 テキストエディタ等で変換してください。
○一つのmt.cgiで複数のウェブログを管理していても、
 自動的に対応します。

■サンプル

EarlGrey Tearoom Archives

■ダウンロード

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

■設定

fav_cfg.phpにデータベースの設定を書き込みます。

$DBHost ='host'; // ホスト名
$DBUser ='dbuser'; // ユーザー名
$DBPassword ='password'; // パスワード
$Database = 'database-name'; // データベース名

■アップロード

ローカルサイトパス(index.htmlがある場所)に
fav_countフォルダごとアップロードしてください。

/public/blog/fav_count/fav_xxx.php
って感じになります。

■データベースのテーブル作成

http://www.なんとか.com/blog/fav_count/fav_main.php
みたいな感じで、一度fav_main.phpにアクセスしてください。

アクセス情報を記録するためのテーブル(mt_most_views)が
存在しない場合、テーブルを作成するようになっています。

メッセージは、特にでません。(エラーメッセージが出るかも)

■テンプレートの設定

(1) Individual Entry Archive の任意の場所に

<?php
$itemid = <$MTEntryID$>;
include("<$MTBlogSitePath$>fav_count/fav_count.php");
?>

を記述してください。(そのままコピー)
この記述した場所に、エントリーのアクセス数が表示されます。

(2) Main Index または Master Archive Index などの任意の場所に

<?php
$blogid=<$MTBlogID$>;
include("<$MTBlogSitePath$>fav_count/fav_main.php");
?>

を記述してください。(そのままコピー)

■できあがり

再構築すれば、できあがり!!
表示することが確認できたら、
<?php と ?> の外側にいろいろ装飾してください。
素っ気ない表示しかしませんので。

■今後の予定

予定というか、このリリースは途中経過のつもりです。
各エントリーの一日あたりのアクセス数を
表示させたいと思っています。

■更新履歴

2005/01/08 初版完成

MovableType OSXでMovableTypeを動かす

2005年1月 7日 | MovableType | コメント (0)

OSXでMovableTypeを動かす

手元のマックでMovableTypeを動かします。
そうすれば、生成されたhtmlをアップし、
CGIが動作していないウェブサーバーでも日記サイト等が構築できます。
MySQLをインストールすれば、SQLの勉強もできます。
その他にもいろいろな活用が考えられるでしょう。

CGIを動かすには、次のサイトで解決です。
最初からインストール済みで、有効にするだけです。

OSXでCGI、Perl、phpを動かす

MySQLは、Finkでもいいですし、バイナリーをインストールするのが楽ですね。
(FinkのMySQLは素直にインストールできず、苦労しました)

Fink - Home

ImageMagickは、次のサイトにありました。

Marc Liyanage - Software - Mac OS X Packages

ImageMagick image tools

Perlのモジュールは、次のサイトを参照。
MovableTypeのmt-check.cgiで足りないモジュールをインストール

EarlGrey Tearoom: 自宅サーバーにMySQLでIMAP
EarlGrey Tearoom: Perlのモジュールを自動化

MovableType 埋め込みPHPで「昨日今日カウンタ」

2005年1月 6日 | MovableType | コメント (2)

MovableType2.661をPHPで動作させて、
「昨日今日カウンタ」を動かす手順です。

まず、今までhtmlで生成していて、いまさら変えたくないので、
htmlの拡張子のまま、PHPとして動作させることに。

そして、ダウンロードしたPHPをインクルードして動作させます。

【1】PHPで動作させる
ローカルサイトパス(index.htmlがある場所)に.htaccessを作る。

ファイルの内容は、次の1行
AddType application/x-httpd-php html

これで、拡張子がhtmlのままphpとして扱われます。

【2】ダウンロード・ファイルの編集
次にカウンターのPHPをダウンロード

レッツPHP!
ここにある「昨日今日カウンタ」をダウンロード。

dcount.phpがダウンロードされます。
このままだとインデックスのページと個別ページのパスが違い、
エラーとなるので、データファイルをフルパスで指定します。

39行目

// カウンタ記録ファイル
$log = '/public_html/localsitepath/counter/all.dat';

赤い部分は、ウェブログの設定を見て、ローカルサイトパスを記述してください。

【3】アップロード
ローカルサイトパス(index.htmlがある場所)にcounterというディレクトリを作成します。
空のall.datというファイルを作成します。
dcount.phpとall.datをcounterというディレクトリにアップロード。

【4】テンプレートの編集
そして、テンプレート内で、

<?php
include("<$MTBlogSitePath$>counter/dcount.php");
echo "昨日:".$yesterday." 今日:".$today." 合計:".$total;
?>

と記述すれば、表示されます。

MovableType Movable Typeの検索結果表示のカスタマイズ

2005年1月 4日 | MovableType | コメント (0)

Movable Typeの検索結果の画面で、検索結果とともに[Edit]というリンクが表示されます。
この検索結果が誰のためにあるのかという問題になるのかもしれませんが、この[Edit]を[Continue]にすることにしました。

MTが入ったディレクトリのsearch_templatesの中にdefault.tmplがあります。
40行目付近の<$MTEntryEditLink$>と書かれた部分を

[<a href="<$MTEntryPermalink$>">Continue reading <$MTEntryTitle$></a>]

と書き換えます。文字は適当に編集を。

たぶん、検索エンジンで検索した結果、サイトに訪れているので、
さらにサイトで検索する人は、かなり少数でしょう。

ちなみにIndividual Entry Archiveに<$MTEntryEditLink$>と記述しても、
[Edit]は表示されませんでした。

MovableType xreaのデータベースサーバー

2004年11月27日 | MovableType | コメント (0)

日本語が消えてしまう問題ですが、
ネットで調べるとどうやらMySQLもProgreSQLもUnicodeに対応していないということらしいです。
なので、UTF-8で書き込もうとするとフィルタで消えてしまうようです。

結局、MovableTypeは、MySQLとEUC-JPの組み合わせでインストール。

MovableType MTの「最近のTrackback」のURLを固定リンクに

2004年10月15日 | MovableType | コメント (0)
#BLOG: MTの「最近のTrackback」にエントリーのTitleとPermalinkを!

Movable Typeの標準機能では、「最近のTrackback」を表示するとき、どのエントリーへのTrackBackかを表示できません。

そこで、Movable Typeの「最近のTrackback」にエントリーのTitleとPermalinkを表示する「MTPingedEntry」プラグインを作成しました。

ここからプラグインを入手し、
ファイルをpluginにアップロード。
テンプレートを編集するとできあがり。

<div class="sidetitle">最近のトラックバック</div>

<div class="side">
<MTPings lastn="10">
<MTPingedEntry>
<a href="<$MTPingedEntryLink$>#trackbacks">
</MTPingedEntry>
<$MTPingTitle$></a> from <$MTPingBlogName$>
<br />
</MTPings>
</div>

MovableType MovableTypeのデータベースをMySQLに

2004年5月15日 | MovableType | コメント (0)

このサーバーのCsideで、MySQLのデータベースのサービスを始めていますが、
思い切って移行の作業をしてみました。

管理画面で、データベースを有効にし、データベース名などの設定をメモしておきます。
テーブルの作成などの作業は不要です。
そして、mt.cfgとmt-db-pass.cgiに設定を書き込みます。
(このあたりはいろいろなところで紹介しているので検索してみるとたくさんでます)

次にmt-db2sql.cgiを手に入れたいのですが、
MovableTypeのサイトでは、すでにバージョンが3になっていました。(ここはまだ2.661)
他に入手方法がなさそうなので、
そのバージョンのアップグレード版をダウンロードし、
mt-db2sql.cgiを入手しました。
バージョンの違いはちょっと不安でしたが、あとは説明通りで、移行は完了。

今まで、再構築などでエラーが出ていたのですが、
移行後は、再構築のエラーもなく、スピードが格段に速くなりました。

さて、容量は5M用意してくれているのですが、
移行後、データベースの容量は 575.8 KBでした。
現在134のエントリ記事があります。

移行前のdbディレクトリの容量は、1.61MBだったので、
意外とコンパクトなんですね。

ところで、Csideの説明だとmt-load.cgiを実行することになっているのですが、
これをやると初期化されるんですよね?
他のウェブログなどの説明にはなかったので、私はやっていませんが、大丈夫そうです。
(というか、やったら、消えてしまうんですよね?)

MovableType MovableType Bookmartletの改造

2004年2月19日 | MovableType | コメント (0)

クリックするだけで、表示しているウェブページから、
ページタイトルやURL、選択している文字列などを取り込んで、
エントリーの投稿画面となるBookmarkletは、大変便利。

これを少し改造してみました。
まず、引用文は、<blockquote> </blockquote> で囲むため、
tmpl/cmsディレクトリにあるbm_entry.tmplを開きます。

<TMPL_VAR NAME=TEXT>を探し、両端を
<blockquote> </blockquote> で囲みます。

ブックマークに入っているjavascriptには、
タイトルを自動取得するためのコードを埋め込みます。
&link_title='+escape(d.title)+' の後ろにでも、
&title='+escape(d.title)+' を追加します。

MovableType MovableTypeの記事のパーミッション

2004年2月16日 | MovableType | コメント (1)

MovableTypeを導入して、少し気になっていたのは、
作成されるファイルが他から書き込み可になっていること。

ここのサーバーは、suEXECなので、
パーミッションが666だと、閲覧者に書き込み権限がある。

パーミッションを644にするための方法は、
ヘルプの中にあった。

mt.cfgの中の

# DBUmask 0022
# HTMLUmask 0022
# UploadUmask 0022
# DirUmask 0022

のコメントをはずす。
デフォルトが0111だそうだ。

MovableType weblogs.comのping送信を外す

2003年12月 7日 | MovableType | コメント (2)

「ウェブログ」→「設定」→「公開用設定」の「通知するサービス」で、weblogs.comのチェックを外しました。
このサイト英語でしょ。日本語が読める人がここをたどってくる可能性はかなり低いと思う。
トラフィックの無駄ではないでしょうか。

デフォルトでチェックが入っていたかな?
忘れてしまった。