MTOSのトラックバックURLに手間をかけたみたときのメモ

この記事は、公開日時より1年以上経過しています。最新の情報のご確認をお願いします。

思っていた以上に成果がみられなくて、気休め程度のモノでしかないのだけれども、せっかくなのでメモとしておきます。

Movable Type のトラックバックスパム対策としては、トラックバックURLを通常のものとかえる、というのがあります。検索すれば大手なサイトはじめ様様なサイトで紹介されています。

今回トライしたのは以下の通り。

  • 環境変数、TrackbackScript でトラックバックURLを変更する
  • mt-tb.cgi をリネーム
  • mod_redirect で、 表示形式も [ siteURL/trackback/トラックバックid/適当な数字 ] に変更する

まず、環境変数 TrackbackScript をmt-config.cgi に記載。

TrackbackScript mt-trackback.cgi  # これは例であって実際のものとは違う

次に、実際のトラックバックスクリプトファイルのリネームを行なう

mv mt-tb.cgi mt-trackback.cgi

.htaccess ファイルに以下を追記(mt のシステムディレクトリを対象として)

RewriteEngine on
RewriteRule ^trackback/(.*)/[0-9]{3}$ /mtos5/mt-trackback.cgi/$1 [L]

これだけでは、出力が目的のURL構造になってないので、MTのトラックバックに関係するテンプレートを書き換える

<$MTEntryTrackbackLink replace="mt-trackback.cgi","trackback"$>/<$MTEntryDate format="%j"$>

format の %j というのは記事を作成した年から数えた日数を3桁の数字で出力するというもの(だったとおもいます。詳しくはMTの日付に関するリファレンスを参考にしてください)

これで再構築して完了、といきたいところだけれど、トラックバックオートディスカバリーの出力も考慮しないといけない。

MTEntryTrackbackData というファンクションタグなのですが、これが厄介で一旦、変数に格納してあげないとうまく文字列リプレイスが出来ない

<$MTEntryTrackbackData setvar="TrackBackData">
<MTIfPingsAccepted>
<mt:GetVar name="TrackBackData" regex_replace="/mt-trackback.cgi/([\d]+)/","trackback/$1/001">
</MTIfPingsAccepted>
<mt:var name="TrackBackData" value="" />

トラックバックIDの次のいわゆるダミーな数字(本当はMD5とかにしようと思ったけど鬱陶しいので却下)なのだけど、RewriteRuleで無視しているので、ややこしいことせずに直接001とか適当に指定しています。

以上で再構築して改造終わりです。

memo(というか下書き):ActionStreamsでサムネイル表示

この記事は、公開日時より1年以上経過しています。最新の情報のご確認をお願いします。

maRkのMyOwnのほうのサーバの機嫌がよくないようなのでこっちで書いておくとします。
Movable Typeのplugin、ActionstreamsでFlickrなどのサービスのサムネイルを表示させるためのメモです。

サムネイルを表示させるためのコードは、実はPluginのなかに同梱されている、README.txtのなかに記載されていて、以下のようなコードを表示させたい箇所に挿入することになってます。

<code>
    <mt:setvarblock name="thumb_url"><mt:StreamActionThumbnailURL></mt:setvarblock>
    <mt:if name="thumb_url">
        <div style='padding-left: 20px; padding-bottom: 10px; padding-top: 5px;'>
            <img src='<mt:var name='thumb_url'>' />
        </div>
    </mt:if>

<mt:StreamActionThumbnailURL>というのがサムネイル画を表示させるテンプレートタグで、<mt:ActionStreams>ブロックタグのなかにいれるということになります。