Movable Type

Movable Type で、他ブログまで検索して結果を表示させない方法

Movable Type(バージョンは 3.2)は、私もなぜこんな仕様になっているのか謎なのだが、デフォルトのテンプレートについてる検索ボックスから検索して、その検索結果が表示されたページからまた検索を行うと、今度は Movable Type が管理しているすべてのブログを検索しに行ってしまう。これを防ぐにはどうしたらいいのだろうか?

にその方法が紹介されていた。要は、Movable Type をインストールしたディレクトリにある、

search_templates/default.tmpl

の中の~ の部分を探して以下の青字の 1行を追加すればよい。

<$MTSearchScript$>">

" /> " />

" />
続きを読む

Amazon アソシエイトで、テンプレート (XSLT) を使って商品情報や画像を表示する方法

先のエントリーで、「Amazon アソシエイトで、商品画像だけ表示する方法」 とか 「Amazon アソシエイトで、ウェブサービス (AWS) を REST で利用する方法」 とか検討してきたが、結局これらをまとめるとどうなるのだろう?オールマイティな方法、もっと楽な方法はないのだろうか?いろいろ試しているうちに、要はアマゾンの商品情報や画像を表示したい HTML の中で iframe を使えばよいことがわかったのでその方法を紹介する。

続きを読む

Amazon アソシエイトで、ウェブサービス (A2S / 旧AWS) を REST で利用する方法 (A2S: Amazon Associates Web Services)

REST とは、REpresentational State Transfer の略で、クライアントが HTTP の GET または POST でリクエストした内容を、サーバ通常の HTML ページの代わりに XML ドキュメントで返すもののことである。つまりは SOAP を使わなくてもサーバからクライアントがデータを受信するようなもので、従来の HTTP の Request - Response のスキームは何ひとつ変わらない。なので決して難しいことはない。

アマゾン・アソシエイトで、商品の画像だけ表示する方法は述べた通りだが、現在の価格を表示したり、「24時間以内に発送可能」 などの在庫状況を表示したりするにはどうしたらいいのだろう?たとえば、以下のように表示したい場合である。

  • 以下は、TOEIC スターターキットで紹介している本の一部(ちなみに、以下の本に紹介されている試験勉強方法はどんな試験にも役に立つ。内容はほとんど精神論であるが、私はこの本があったから TOEIC 920 に達することができたと言っても過言ではない)。

    試験に受かる超効率勉強法試験に受かる超効率勉強法
    井藤 公量

    日本実業出版社 2002-01
    <iframe scrolling="no" frameborder="0" width="200" height="40" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=152ZP71KPB47XM09CS02&AssociateTag=twinklexxx-22&Operation=ItemLookup&IdType=ASIN&ContentType=text/html&Version=2006-03-08&Page=1&ResponseGroup=Offers&ItemId=4534033427&Style=http://perltips.twinkle.cc/files/sites/perltips/xsl/amazon_price.xsl"></iframe>
    Amazonで詳しく見る

必要な情報・手順としては以下の通りである。

  1. アマゾン・アソシエイトの ID を取得する。
  2. Amazon Web サービスの Access Key ID を取得する。
  3. XSLT を用意する。
  4. 商品リンクの URL を作成する。
  5. リンクを自分のサイトに貼り付ける。

まず、XSLT を作成し、自分のサイトのどこか(たとえば、http://perltips.twinkle.cc/amazon_price.xsl)に保存しておく。

<?xml version="1.0"?>

あとは、以下の URL からアクセスするだけである。

4534033427/twinklexxx-22/ref=nosim/" target="_blank"> 4534033427.09._SCMZZZZZZZ_.jpg" border="0" alt="4534033427" /> 4534033427/twinklexxx-22/ref=nosim/" target="_blank">試験に受かる超効率勉強法
井藤 公量

日本実業出版社 2002-01
<iframe scrolling="no" frameborder="0" width="200" height="40" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=<font color="blue"> 152ZP71KPB47XM09CS02</font>&AssociateTag=<font color="blue">twinklexxx-22</font>&Operation=ItemLookup&IdType=ASIN&ContentType=text/html&Version=2006-03-08&Page=1&ResponseGroup=Offers&ItemId=<font color="blue">4534033427</font>&Style=<font color="blue">http://perltips.twinkle.cc/amazon_price.xsl</font>"></iframe>
4534033427/twinklexxx-22/ref=nosim/" target="_blank">Amazonで詳しく見る

この中で、REST として AWS (Amazon Web Services) に渡す重要なパラメータは以下の通り。青字は、自分の環境に合わせて変更する部分である。

  • Operation=ItemLookup
  • IdType=ASIN
  • ContentType=text/html
  • Version=2006-03-08
  • Page=1
  • ResponseGroup=Offers
  • AWSAccessKeyId=152ZP71KPB47XM09CS02
  • AssociateTag=twinklexxx-22
  • Style=http://perltips.twinkle.cc/amazon_price.xsl
  • ItemId=4534033427

続きを読む

RSS で Favicon を表示させる方法

RSS 1.0 (index.rdf など) の場合は、以下の行を RSS のテンプレートに追加すればよい。

HP のタイトル

または、Movable Type 3.2 以上であれば、Atom (atom.xml) や RSS 2.0 (index.xml) のテンプレートの最初の方に、

<$MTBlogRelativeURL$>favicon.ico" type="image/x-icon" /> <$MTBlogRelativeURL$>favicon.ico" type="image/x-icon" />

の 2つのタグを追加してもよい。

続きを読む

Movable Type で、Google の SEO 対策をする。

このサイトはほとんどは Google の検索結果をたどって来る方が多い。ここでは、このサイトで実際に施している SEO 対策を紹介しよう。最初に断っておくが、SEO といっても、対象となる検索エンジンは Google オンリーである。

  1. 3日おきに定期的に更新を目標。

    本来なら 「1日ごとに更新」 とした方が格好がいいに決まっているが、どんなに技術に詳しい人でもそんなにたくさん Tips が次から次に書けるわけでもないのは最初から目に見えている。毎日更新するためには Tips を 1年で 365個用意しなければならないことを考えてみて欲しい。それを職業にするなら別の話だが、私の場合は自分の無理のない範囲で最大限の目標値とした。この目標は今のところ守っている。それが守れているのは、その日に公開するエントリーをその日に書いて公開するような自転車操業的なものではなく、ある程度エントリーを書き溜めておいて、Movable Type の 「投稿日」 - 「指定日」 として公開されるようにスケジューリングしているからだと思う。この方法は SEO 対策というよりは、モチベーションを維持する上で自分にとってはうまくいっている。

    Google が一番好むのは良質なサイトから多数のリンクが貼られている(自サイトから貼っているではない)サイトだ。これはブログのエントリーの内容の質を高めることでリンクの数の増やすことができるだろうが、多数の一般サイトからリンクが貼られていればいいというわけでもなく、おそらく Yahoo! から 1つリンクが貼られるだけでそのサイトの価値が高まるだろう。自分の希望通りに価値の高いサイトにリンクが貼ってもらえるとは限らず、こればかりは粛々と良質なエントリーを書いて自サイトの価値を高めるしかない。本当に価値のあるサイトなら向こうからリンクを貼らせて欲しいと依頼やトラックバックが来るだろう。

    では自分にできることは他にはないのだろうか?それは、コツコツ更新することであろう。このサイトはある時点から、エントリーが 100 になるまでは 3日 1回更新することに決めた。今はこのペースを守っている。実際には Google がそれを評価してくれているのかはわからないが、Google の出している特許を読む限りは、放置されているサイトよりは頻繁に更新するサイトの方が評価されるのは確かだろう。

  2. コンテンツを増やす。

    上の 「100 エントリーまでは 3日置きに更新」 と関係するのだが、このサイトは Tips のサイトであるし、もともとウェブサイトはコンテンツが豊富な方が優良なサイトである。Google のサイトにもそう書いてある。従って 100 の Tips 以上にすることを目指した。

  3. サブドメインでアクセスできるようにした。

    当初、このサイトの URL は http://twinkle.cc/perltips/ であったが、http://perltips.twinkle.cc/ に変えた。Google は、ディレクトリが 1 階層深くなるごとにそのページを重要でないとみなしていくからである。また、ドメイン名(この場合はサブドメイン名)が perltips... で始まり、サブドメイン名に perl という重要なキーワードが含まれているため、これも検索キーワードとして重要なポジションになっていると思う。

  4. ディレクト名にキーワードを含めた。

    [続きを読む]

  5. デフォルトのエントリー・ファイル名は使わない。

    個々のエントリーのパーマリンク (Permalink) の名前は必ず自分で考えてつける。
    Google は URL に含まれる文字列(英単語)もキーワードとして考える。Movable Type は、タイトルに含まれる英数字を拾って自動的にエントリー・ファイル名をつけるが、タイトルがすべて日本語だったりすると 「post」 「post_2」 などという、そっけないファイル名をつけてしまう。このサイトは技術的内容を扱うので、例えタイトルが日本語オンリーであっても、できれば検索されやすい英単語を含めたエントリー・ファイル名をつけるようにしている。

    このエントリーの URL は 「http://perltips.twinkle.cc/movable_type/seo.php」 であるはずだ。URL の中に perl ・tips・movable_type・seo というキーワードが含まれていることに注目して欲しい(徹底的に気合を入れるなら、まずはドメイン名を考えるべきだ)。実際 Google で検索してこれらのキーワードがヒットした部分は、Google によって太字にされているはずだ。

  6. Google Sitemap に対応させる。

    [続きを読む]

  7. 無駄なディレクトリ(archives)は省いた。

    Movable Type では、デフォルトの 「アーカイブ」 の場所は archives というディレクトリになっている。しかし Google は長い URL を好まない。archives なるディレクトリを作る目的は、強いていえばサイト運営者がバックアップを取るときに管理しやすいとか、その程度のものであろう。一方、サイトに訪れる人たちは archives というディレクトリがあったとしてもそれは何の意味も成し得ない。このような理由から、archives というディレクトリは省略して、相対パスのルートにアーカイブファイルも置いてしまおう。どうせカテゴリ別にディレクトリが作成されるのだから、archives のディレクトリがある積極的な理由はみつからない。

  8. 個々のエントリーのタイトルは タグにした。

    Google は、見出しダグの 、

    、

    …で囲まれている文字列を、重要なキーワードとして重み付けする。その法則に従って、このブログの見出しもテンプレートの中ですべて にした。Movable Type のデフォルトのテンプレートの見出しは < h3> タグである。見出しの重み付けなど、あくまでもページ内の相対的なものでしかないような気がするので、この方法が有効なのかは実はよくわからない。

  9. タイトルは 「×××で、」 という形で(例えばこのエントリーなら「Movable Type で、Google の SEO 対策をする。」)、重要なキーワードを含めるようにした。

    エントリーのタイトルが h1 タグならば、ここには重要なキーワードが当然入らないと意味がないわけで、そのためにタイトルにはカテゴリを表すキーワードを入れた。たとえばこのエントリーであれば、「Movable Type で、…」 といった書き出しである(特にこのエントリーの内容の場合は Movable Type でなくてもいいのだが、そういうことである)。

  10. できるだけ指示語を使わないでエントリーを書く。

    Google はエントリー中のキーワードを拾う。エントリー中にはそのテーマに関連するキーワードが多ければ多いほど Google はそのエントリーの言いたいことを解釈するという。このことからつまり Google は指示語が苦手なのではという推測が成り立つ。文章をスムーズにするために 「こそあど言葉」 があるのだが、これだとせっかくの キーワードを指示語で置き換えてしまうことになってしまう。従って指示語はなるべく使わず、多少エントリーの文章がしつこくなっても指示語が指す言葉をあえて使うようにしている。

  11. AdSense だけでなくアマゾンのアフィリエイトも貼った。

    Google はそのサイトが表示している広告の質も判断しているらしい。良質なスポンサーと見なすのだろう。そうすると当然 AdSense は貼るべきだが、それは何も考えずに別の実験としてすでにこのサイトには貼ってあった。しかし「広告の質も判断する」 と聞いてアマゾンのアフィリエイトも貼った次第である。ちなみに、このサイトで紹介している Perl の参考書で、実際にクリックして買った方がいたのには驚いた(いやはや、まったく期待していなかったものですから)。アマゾン恐るべし。

  12. ルートディレクトリに robots.txt を置いた。

    Google Sitemap を使っていると、「robots.txt にアクセスできなかった」 といちいちエラーを返す。 仕方がないので以下の内容で robots.txt をルートディレクトリに置いた。

    User-Agent: * Disallow: /images/
  13. サイト内のリンクを増やした。

    Google の SEO で肝となるのは優良サイトからのリンクだ。これは外部からのリンクだが、内部でのリンクもポイントになるという。このサイトでも(というか Movable Type のデフォルトのテンプレートだが)ページの最初のタイトル 「Perl Tips」 をクリックすればどのページからでもトップページに戻れるようになっているが、これは Google にとってはトップページが重要となることを意味する。従って一見マスターベーションのような気もするが、内部のリンクも増やした方がよいだろう。

    内部のリンクとはすなわち、エントリーを書いたら関連しそうな過去のエントリーに対してトラックバックを送るということに他ならない。もちろん、外部のサイトで関連しそうな内容のブログのエントリーがあったらトラックバックを送ると、自動的にそのサイトに自分のサイトへのリンクが貼られるわけだから、これも積極的に行った方がよいだろう。しかしこの方法は時間と手間がかかるので、まずは内部のリンクを増やすことから始めてはどうだろうか、ということだ。

続きを読む

Movable Type で、アーカイブのページにインデックス (目次) を作る

Movable Type というか、ブログは、実は当サイトのような技術解説のような内容のサイトにははっきり言って向かない。なぜなら技術文書では、時系列に日々のコンテンツを並べるという日記やニュース的なブログのスタイルよりも、後から参照されることを前提としたリファレンスとしての利用のされ方をするからである。技術は積み重ねでもあるので、簡単なものから難しいものへ、すなわちアーカイブでは最新順ではなく古い順から並んでいってもらった方が良い場合がある。そしてさらに技術文書のインデックス (目次) を作っておくと便利だろう。当サイトのアーカイブページのように、このような場合は Movable Type ではアーカイブ用のテンプレートを少し改造する。以下、青で示している部分が追加・変更点である。参考にして欲しい。

...

「<$MTArchiveTitle$>」のインデックス

  1. "><$MTEntryTitle$>
<MTEntries <font color="blue">sort_order="ascend"> <$MTEntryTrackbackData$> ">

"> <$MTEntryTitle$>

<$MTEntryBody$> ... | Top ↑ ...
続きを読む

Movable Type で、エントリーの通知ユーザーを受け付ける方法

この方法は Movable Type のヘルプからたどれる Movable Typeユーザー・マニュアル: 通知 にも書いてあるのだが、以下の部分をテンプレートに貼り付ければよい。

mt-add-notify.cgi"> " /> " />

注意しなければならないのは、mt-config.cgi の最後の方にでも、

EmailVerificationSecret <ここに好きなパスワードを記述>

を設定しておかなければならない点。

EmailVerificationSecret なんて行は、私の mt-config.cgi にはなかったから、自分で追加した。場所はどこでもよい。あと、

EmailAddressMain youraddress@yourdomain.com

も設定する必要がありそう。

続きを読む

Movable Type で、通知メールのテンプレートをカスタマイズする

Movable Type のメール通知機能でのテンプレートは、直接コードに埋め込まれているため、素人が変更するのは難しい。しかし Perl の知識があればなんとかなるだろう。以下の例では、サブジェクトはエントリーのタイトルそのままに、本文からエントリータイトルや日付など余計な部分を除いたもの。

/lib/MT/App/CMS.pm の 6618 行付近より。

=comment
$name = ('(' x ($fill_len/2)) . ' ' . $name . ' ' . (')' x ($fill_len/2));
$body .= $name . "\n\n";
my @ts = offset_time_list(time, $blog);
my $ts = sprintf "%04d%02d%02d%02d%02d%02d",
    $ts[5]+1900, $ts[4]+1, @ts[3,2,1,0];
my $date = format_ts('%Y.%m.%d %H:%M:%S', $ts, $blog);
my $fill_left = ' ' x int(($cols - length($date)) / 2);
$body .= "$fill_left$date\n\n\n";
$body .= ('-' x $cols) . "\n\n";
=cut
if ($q->param('send_excerpt')) {
    $body .= MT::I18N::wrap_text($entry->get_excerpt, $cols-4, "    ","    ") . "\n\n";
    $body .= ('-' x $cols) . "\n\n";
}
$body .= $entry->permalink . "\n\n";
$body .= MT::I18N::wrap_text($q->param('message'),$cols, '', '') . "\n\n";
if ($q->param('send_body')) {
    $body .= ('-' x $cols) . "\n\n";
    $body .= MT::I18N::wrap_text($entry->text, $cols, '', '') . "\n";
}
# 以下の部分をコメントアウトまたは修正 # my $subj = $app->translate("[_1] Update: [_2]", $blog->name, $entry->title); # ここまで # 以下の部分を追加
my $subj = $app->translate("[_1]", $entry->title);</font>
続きを読む

Movable Type で、管理画面で Favicon を表示したい。

Movable Type 3.2 の管理画面(アドミン)では six apart の Favicon (favicon.ico → favicon.ico) が表示されない。これは、ダウンロードした Movable Type のパッケージの中に favicon.ico ファイルがなく、テンプレートにも Favicon の記述がないから。やはり Movable Type の管理画面では six apart の Favicon を表示させたい。その場合は、以下のようにする。

  1. favicon.ico を Movable Type をインストールしたディレクトリにコピーする。
    とりあえず six apart からコピーしよう。

    → http://www.sixapart.jp/favicon.ico

  2. tmpl/cms/header.tmpl をエディタ開く
  3. このファイルの先頭から数行目にある

    <link rel="stylesheet" href="<TMPL_VAR NAME=STATIC_URI>styles.css"... </code> を探す。

  4. この行の後に、

    favicon.ico" /> を追記する。

  5. header.tmpl を保存。
続きを読む

Favicon を表示させる方法

まず元になる画像を用意する。画像形式は JPEG、PNG、そしてアニメ GIF どれでもよい。それを favicon.ico という名前で Favicon を 作成、サーバにアップロードする。favicon.ico という名前は決めうちである。基本的には Favionを表示させたいページの ... タグの中に下記のタグを追加する。従って Movable Type でも、テンプレート中の ... の間に、下記のタグを追記すればよい。

<link rel="shortcut icon" href="favicon までのパス/favicon.ico" />

Favicon は以下のサイトで作成できる。

続きを読む
Movable Type を購読