2010年2月21日
スタイルシートにアクセス制限
ときどき、MovableTypeで運用しているサイトで、スタイルシートが読み込まれていないサイトを見かけます。あえてそうする人はたぶんいないと思うので、意図しないことが起きていると思います。
スタイルシートは、mtディレクトリのmt-staticのblog.cssなどをインポートとして読み込む必要があるのですが、それに気づかず、mtディレクトリにアクセス制限をかけているのかもしれません。アクセス制限をしても、自分自身は制限を解除しているので、何の不自由もなく、正常に表示されているため、いつまでも気づかないのかもしれません。
そういえば、ホームページビルダーなどで、ローカルのファイルにリンクしているサイトもあります。自分のコンピュータでは画像などがきちんと表示されるので、気づかないのでしょう。
[[スタイルシートにアクセス制限>http://egt.tpot.tk/a/001067.html]]
2009年3月 8日
ウェブページのトップをフォルダ内へ
MovableTypeのウェブページ機能で、トップレベルのフォルダがルートになるため、ファイルが散らばって美しくありません。
フォルダを作成して運用すれば、サブフォルダ内に入れることはできますが、一つ作業が増えるので面倒です。
解決策は案外簡単で、「アーカイブテンプレート」の「ウェブページ」のアーカイブパスがfolder-path/file-basename.htmlとなっているのをxxx/%-c/%-fとします。xxxには任意のフォルダを指定します。
こうすれば、ウェブページ作成で、ルートを指定しても、自動的にxxxの中に収まります。
[[ウェブページのトップをフォルダ内へ>http://egt.tpot.tk/a/001047.html]]
2009年3月 6日
ウェブページをソートして表示
MovableTypeのウェブページがコード順になっているのをどうにかしたい。
検索しても、タイトルに加工するなどの手段が書かれているのが多いのですが、
ソートの方法を指定できるので、概要を使っていないのなら、
<mt:Pages sort_by="excerpt" sort_order="ascend">
で、並べ替えが自由自在になります。
[[ウェブページをソートして表示>http://egt.tpot.tk/a/001046.html]]
2009年3月 3日
MovableTypeでバックアップ
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でバックアップ>http://egt.tpot.tk/a/001045.html]]
2008年9月 1日
月別アーカイブへのリンク
通常、月別アーカイブは、サイドバーからのアクセスになります。日記用途や、シリーズものなど、カテゴリアーカイブ同様、月別アーカイブへのリンクが個別記事にあってもいいのではないかと思います。
例えば、この記事の場合、
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日"$>
とします。
年月の部分がリンクとなり、日付とは分離されます。
インデックスページや個別記事などに対して、上記の入れ替えをおこないます。
[[月別アーカイブへのリンク>http://egt.tpot.tk/a/001012.html]]
2008年8月11日
存在しないページのページ
ファイルが存在しないと、サーバーが用意してある[404 File Not Found]のエラーページが表示されます。せっかくアクセスしてくれた人のために、存在しないページのためのページを表示させ、記事に誘導してあげましょう。
まず、管理画面で、[デザイン]→[テンプレート]の画面で、
[インデックステンプレートを作成]をクリックします。
タイトルは任意に入力、[出力ファイル名]には[notfound.html]と入力します。
内容は、インデックスページなどを参考に。
[保存と再構築]で、ページを作成します。
次に[.htaccess]を作成、またはすでに存在する場合は、編集します。
ErrorDocument 404 /notfound.html
の1行を追加。
サブディレクトリにブログを表示させている場合は、そのパスを追加します。
[[存在しないページのページ>http://egt.tpot.tk/a/000997.html]]
2008年1月23日
指定した画像に陰をつける(MovableType)
画面をキャプチャーした画像をブログで使うとき、画像と本文の境目がわかりづらいときがあります。陰をつけたりすればわかりやすいのですが、画像加工をするのも面倒です。
そこで、スタイルシートで陰をつけたいと思います。ただし、貼り付けてある画像すべてではなく、指定したときに有効になるようにします。
(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>
陰をつけない通常の状態

陰をつけた場合

[[指定した画像に陰をつける(MovableType)>http://egt.tpot.tk/a/000952.html]]
2008年1月20日
トラックバックURLを変更してみる(MovableType)
ちょっと変わったトラックバック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と連動して定期的に書き換えると、トラックバックスパム対策になります。
あとは、全記事を再構築します。
[[トラックバックURLを変更してみる(MovableType)>http://egt.tpot.tk/a/000951.html]]
2007年4月23日
MovableTypeで指定日投稿
指定時刻に記事を自動投稿するには、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で指定日投稿>http://egt.tpot.tk/a/000556.html]]
2007年1月 5日
移転後も迷惑トラックバックは続く
このサイトはリダイレクトで引っ越し後のサイトへ自動的に転送するようになっているのですが、システムはまだ旧サイトに置いたままにしてあります。
迷惑トラックバックや迷惑コメントはどうなるのかというと、迷惑トラックバックは相変わらず旧サイトに送られていて、どうやらURLがどこかに蓄積されているようです。直接CGIにアクセスしています。
迷惑コメントは旧サイトにはなく、新しいサイトに送られてきます。なので、CGIに対する自動処理ではないようです。新しいサイトにリダイレクトされたあとにコメントをつけていることになります。
[[移転後も迷惑トラックバックは続く>http://egt.tpot.tk/a/000538.html]]
2007年1月 4日
自動でリダイレクト
サブドメインから独自ドメインへ引っ越しを考えました。
旧サイトからMySQLのデータベースを書き出して、URLをエディタで置換。
新しいサイトでの動作を確認後、あとは転送させるわけですが、今まで転送させるとき、.htaccessでErrorDocumentを使って転送させていました。
しかし、この方法だとトップページにしか転送しないので、今回は別の方法を。
調べてみるとRedirectが使えるという情報を得ました。
これだと引っ越ししていることを意識することがないくらいスムーズに転送されます。
Oceansoft Library - ホームページの引っ越しスクリプト同じファイルが存在しているときは、リダイレクトで転送することができます。ブログなどを同じシステムで大量のページを転送させたいときに便利です。
【追記】
具体的に紹介されているサイトを見つけました。
MovableTypeのいろいろなノウハウが紹介されているので、役に立ちそうです。
URLを自動転送させる.htaccessの書き方 :: MTカスタマイズ法収集ブログ
[[自動でリダイレクト>http://egt.tpot.tk/a/000537.html]]
2006年8月19日
RSSからの訪問者をカウントする
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からデータベースを作っているのでしょうか。
それだと区別ができません。なにか一工夫が必要のようです。
[[RSSからの訪問者をカウントする>http://egt.tpot.tk/a/000512.html]]
2006年5月18日
カテゴリを強調
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>
[[カテゴリを強調>http://egt.tpot.tk/a/000497.html]]
2006年5月16日
MovableTypeのバージョンアップ
このブログのシステム、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のバージョンアップ>http://egt.tpot.tk/a/000496.html]]
2006年3月22日
MTの自分の情報を更新
MovableTypeのプロフィールではなく、
あちらこちらに散らばった自分のコメントを更新したい。
メールアドレスやURLが最初と最近では変わってしまっている。
SQLで、
UPDATE mt_comment SET comment_email='お好きなメールアドレス',
comment_url='お好きなURL' WHERE comment_author='自分の名前'
を実行。
その後、再構築。
[[MTの自分の情報を更新>http://egt.tpot.tk/a/000488.html]]
2006年1月29日
ATOMにfavicon
NetNewsWireでは、サイトアイコン(favicon.ico)が表示されますが、ルートにあるfavicon.icoが表示されます。
atom.xmlにアイコンの指定をするとこれを変更することができます。
copyrightタグの下辺りに下記の記述を。
<icon><$MTBlogURL$>favicon.ico</icon>
[[ATOMにfavicon>http://egt.tpot.tk/a/000472.html]]
2006年1月 8日
リンク用のソースを表示させる(MovableType)
「このリストは、次のエントリーを参照しています」のリンクって使ったことない。
いらないものは削除!
その代わり、リンクしたいときのソースを表示するってどうでしょう。
<div class="trackback-url">
■トラックバックURL:<br />
<$MTEntryTrackbackLink$><br />
■記事用リンクソース:<br />
<a href="<$MTEntryPermalink$>" title="<$MTBlogName$>: <$MTEntryTitle$>"><$MTEntryTitle$></a><br />
■Wiki用リンクソース:<br />
[[<$MTEntryTitle$>><$MTEntryPermalink$>]]
</div>
自分で自分の関連記事のリンクを貼りたいときなどに役に立ちます。
【関連記事】
[E] リンク用のソースを表示させる(Nucleus)
[[リンク用のソースを表示させる(MovableType)>http://egt.tpot.tk/a/000462.html]]
2005年9月13日
ブログ内の検索
ブログのカレンダーを撤去し、代わりにブログ内の検索を設置してみました。
MovableTypeでは、検索のログが残るのですが、
以前、サイドバーの中間部分に設置していたときは、利用者は皆無だったのが、
トップに設置すると利用者が増えていました。
[[ブログ内の検索>http://egt.tpot.tk/a/000419.html]]
2005年8月17日
個別記事のヘッダに概略を
MovableTypeの個別記事のヘッダにdescriptionが入っていません。
ここに記事の概略を入れたら、GoogleAdsenseで解釈しやすくなるのでしょうか?
テンプレートのIndividual Entry Archiveに
<meta name="description" content="<$MTEntryExcerpt remove_html="1" encode_xml="1" convert_breaks="0 "$>" />
を追加してみた。
【追記】
encode_js="1"などいろいろ試してみましたが、"←ダブルクォートがエスケープされずに画面にゴミとなることがあるのでやめました。
[[個別記事のヘッダに概略を>http://egt.tpot.tk/a/000407.html]]
2005年7月30日
投稿した日に背景色を設定
徒然ぶろぐ: MTのカレンダーで投稿した日に画像を表示
を参考に、背景色を設定。
divだと改行してしまうので、spanに変更。
<MTCalendarIfEntries>のあとに
<span style="background:#FFCC99;">
</MTCalendarIfEntries>のあとに
<span>
[[投稿した日に背景色を設定>http://egt.tpot.tk/a/000387.html]]
2005年7月20日
エンティティコードのトラックバックスパム対策
最近、「Texas Holdem」といった感じのトラックバックスパムが増えています。
エンティティコード(数値文字実体参照)というらしいです。
MT-BlackListでははじいてくれないので、以前応急措置でやった方法を応用して、タイトルに「&#」を含むものを全部はじくことにしました。良い方法があれば、再び書き換えたいと思います。
トラックバックスパム対策
if ($title =~ /&#/) {
return $app->_response(Error =>
$app->translate("You are not allowed to send TrackBack pings."));
}
[[エンティティコードのトラックバックスパム対策>http://egt.tpot.tk/a/000382.html]]
2005年3月20日
Wiki用にリンク
以前から、ウェブログの欠点である階層的なページ構成にならない点をどうにかならないかとWikiとの併用を考えていたのですが、Pukiwikiに簡単にリンクを貼るための改造をMT側でおこなってみました。
[[<$MTEntryTitle$>:<$MTEntryPermalink$>]]
[[Wiki用にリンク>http://egt.tpot.tk/a/000320.html]]
2005年3月 5日
MTの再構築エラー
トラックバックスパムが多く、しかも次々新しいパターンでやってくるので、データベースを直接削除し再構築を、と思ったのですが、最近Monthlyの再構築でエラーが。
探せば、解決方法がありました。
[NS] MovableTypeで再構築にコケるlib/MT/App/CMS.pm で%Limit_Multipliersという配列に格納されていた。Individualだと1倍、Monthlyだと10倍だ。
Monthlyを2倍に変更しておく。
今後、さらに記事数が多くなったら、mt.cfgのEntriesPerRebuild値も少なくしないといけないかも。
[[MTの再構築エラー>http://egt.tpot.tk/a/000315.html]]
2005年2月 8日
個別記事のコメント・トラックバックにNEWマーク
トラックバック・ピープルの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サーバーで動作するように一部修正しました。
[[個別記事のコメント・トラックバックにNEWマーク>http://egt.tpot.tk/a/000301.html]]
2005年2月 1日
トラックバックスパム対策
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を使用した場合の文字化け対策
[[トラックバックスパム対策>http://egt.tpot.tk/a/000295.html]]
2005年1月18日
記事と同じカテゴリのランキングを表示
ウェブログというのは、自分から見るとメインのページからの
階層構造になっていますが、訪問者にとっては、それぞれの記事が
入り口になっている場合が多いです。
そこで、個別の記事のページに同じカテゴリの記事のタイトルを
並べておくことで、他の記事も読んでもらえる可能性が高くなると思います。
さらにこのスクリプトでは、同カテゴリのトップ10を表示することで、
より、その効果を高められるのではないかと思います。
もちろん前バージョンの全記事のランキングやカテゴリのランキングも表示します。
PHPの埋め込みですので、レンタルのアクセス分析などのようにブラウザの機能に
左右されることはありません。
■ダウンロード
[[記事と同じカテゴリのランキングを表示>http://egt.tpot.tk/a/000291.html]]
2005年1月10日
MySQLで記事のアクセス分析
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だけで処理しようとすると
何倍の行数になることか…。
エクセルでごちゃごちゃ数式を書いているのと
アクセスでスマートにデータベースで処理しているのと同じです。
完成品は後日公開します。
(動作中のものは「全記事」にあります)
[[MySQLで記事のアクセス分析>http://egt.tpot.tk/a/000282.html]]
2005年1月 9日
サイト簡易表記の対応方法(Movable Type)
静かなブームになっている「サイト簡易表記」に登録してみました。
簡易表記一覧 - 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では、どういうわけかブログ名は表示しないので、簡易表記はとても便利。

※Nucleusの対応方法は、こちらです。
[E] サイト簡易表記の対応方法(Nucleus)
※WordPressの対応方法は、こちらです。
[E] サイト簡易表記の対応方法(WordPress)
※ココログでの設定方法は、こちらを参照。
[☆] 簡易表記に対応しました
[[サイト簡易表記の対応方法(Movable Type)>http://egt.tpot.tk/a/000277.html]]
2005年1月 8日
エントリーのアクセスランキング for Movable Type
最近は、広告ブロックをする人も増えて、Javascriptを使ったアクセス分析もブロックできるようになってきました。閲覧する側は表示速度が大幅によくなり快適です。しかし、運用している側はアクセスの状況の傾向は知りたいもの。そこで一番確実なのは、PHPにアクセス分析を埋め込んでしまうこと。これは絶対にブロックできませんので、正確なアクセス分析が可能になります。
■概略
エントリーのアクセスを記録し、
アクセス数のランキングを表示します。
■注意
○MySQLで動作しているものに限ります。
○PHPで動作している必要があります。
拡張子がHTMLのままPHP化するには以下の説明を参照してください。
http://egt.tpot.tk/archives/000271.html
○このプログラムでは、直接データベースにアクセスしています。
パーミッション等には気をつけてください。
(mt.cfgから設定を取り出すのが面倒だった)
○データベースのテーブル名のサフィックスは、「mt_」としています。
○MovableType2.661で動作チェックをしています。
3.xxでもアーカイブのファイル形式が2.xxと互換の時(古い形式)は
動作すると思います。
○ファイルは、UTF-8で保存してあるので、EUC-JPの場合は、
テキストエディタ等で変換してください。
○一つのmt.cgiで複数のウェブログを管理していても、
自動的に対応します。
■サンプル
EarlGrey Tearoom Archives
■ダウンロード
■設定
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 初版完成
[[エントリーのアクセスランキング for Movable Type>http://egt.tpot.tk/a/000275.html]]
2005年1月 7日
OSXでMovableTypeを動かす
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 PackagesImageMagick image tools
Perlのモジュールは、次のサイトを参照。
MovableTypeのmt-check.cgiで足りないモジュールをインストール
EarlGrey Tearoom: 自宅サーバーにMySQLでIMAP
EarlGrey Tearoom: Perlのモジュールを自動化
[[OSXでMovableTypeを動かす>http://egt.tpot.tk/a/000272.html]]
2005年1月 6日
埋め込みPHPで「昨日今日カウンタ」
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;
?>
と記述すれば、表示されます。
[[埋め込みPHPで「昨日今日カウンタ」>http://egt.tpot.tk/a/000271.html]]
2005年1月 4日
Movable Typeの検索結果表示のカスタマイズ
Movable Typeの検索結果の画面で、検索結果とともに[Edit]というリンクが表示されます。
この検索結果が誰のためにあるのかという問題になるのかもしれませんが、この[Edit]を[Continue]にすることにしました。
MTが入ったディレクトリのsearch_templatesの中にdefault.tmplがあります。
40行目付近の<$MTEntryEditLink$>と書かれた部分を
[<a href="<$MTEntryPermalink$>">Continue reading <$MTEntryTitle$></a>]
と書き換えます。文字は適当に編集を。
たぶん、検索エンジンで検索した結果、サイトに訪れているので、
さらにサイトで検索する人は、かなり少数でしょう。
ちなみにIndividual Entry Archiveに<$MTEntryEditLink$>と記述しても、
[Edit]は表示されませんでした。
[[Movable Typeの検索結果表示のカスタマイズ>http://egt.tpot.tk/a/000269.html]]
2004年11月27日
xreaのデータベースサーバー
日本語が消えてしまう問題ですが、
ネットで調べるとどうやらMySQLもProgreSQLもUnicodeに対応していないということらしいです。
なので、UTF-8で書き込もうとするとフィルタで消えてしまうようです。
結局、MovableTypeは、MySQLとEUC-JPの組み合わせでインストール。
[[xreaのデータベースサーバー>http://egt.tpot.tk/a/000752.html]]
2004年10月15日
MTの「最近のTrackback」のURLを固定リンクに
#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>
[[MTの「最近のTrackback」のURLを固定リンクに>http://egt.tpot.tk/a/000217.html]]
2004年5月15日
MovableTypeのデータベースをMySQLに
このサーバーの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のデータベースをMySQLに>http://egt.tpot.tk/a/000135.html]]
2004年2月19日
MovableType Bookmartletの改造
クリックするだけで、表示しているウェブページから、
ページタイトルや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 Bookmartletの改造>http://egt.tpot.tk/a/000065.html]]
2004年2月16日
MovableTypeの記事のパーミッション
MovableTypeを導入して、少し気になっていたのは、
作成されるファイルが他から書き込み可になっていること。
ここのサーバーは、suEXECなので、
パーミッションが666だと、閲覧者に書き込み権限がある。
パーミッションを644にするための方法は、
ヘルプの中にあった。
mt.cfgの中の
# DBUmask 0022
# HTMLUmask 0022
# UploadUmask 0022
# DirUmask 0022
のコメントをはずす。
デフォルトが0111だそうだ。
[[MovableTypeの記事のパーミッション>http://egt.tpot.tk/a/000060.html]]
2003年12月 7日
weblogs.comのping送信を外す
「ウェブログ」→「設定」→「公開用設定」の「通知するサービス」で、weblogs.comのチェックを外しました。
このサイト英語でしょ。日本語が読める人がここをたどってくる可能性はかなり低いと思う。
トラフィックの無駄ではないでしょうか。
デフォルトでチェックが入っていたかな?
忘れてしまった。
[[weblogs.comのping送信を外す>http://egt.tpot.tk/a/000016.html]]


