XMLRPCでブログ記事を投稿する
Movable Type のXML-RPC API を利用して、外部のプログラムから記事を投稿する実験。パスワードの部分が、MTのログインパスワードではなくって、WebサービスのAPIパスワードになっている点でハマりました...
Movable Type のXML-RPC API を利用して、外部のプログラムから記事を投稿する実験。パスワードの部分が、MTのログインパスワードではなくって、WebサービスのAPIパスワードになっている点でハマりました...
こんにちは。上西です。4.24(゚∀゚)キターということで、早速、前のバージョンとの差分を取ってみました。Let's diff!
...告知にある分の変更しかみつかりませんでした。うーん、告知された内容以外にはテンプレートやプログラムモジュールの更新はありません。ただし、パスワード関係のセキュリティアップデートということなので、アップデートは早急に行われることをおすすめします。
データベースのスキーマバージョンが変わっているので、データベースのバックアップは忘れずに。
MTFeedタグでRSSを読みだして表示させることができますが、
記事毎に任意のものを呼び出すのは結構手間がかかります。
(しかし結構要望があったりするのですが)
というわけで、追記に覚書を。
カスタムフィールドとタグだけで実装できるので、一度お試しください。
まず、以下のカスタムフィールドを用意します。
ベースネームと説明は任意で入力してください。
| フィールド名 | 種類 | テンプレートタグ |
|---|---|---|
| 関連フィードURL | テキスト | RelatedFeedURL |
| 表示件数 | テキスト | RelatedFeedCount |
あとは下記のように、任意の場所にタグを実装します。
※記事に関連付いたカスタムフィールドになるため、ブログ記事アーカイブでご利用ください。
<MTIfNonEmpty tag="RelatedFeedURL">
<MTSetVars>
feeduri=<$MTRelatedFeedURL encode_xml="1"$>
feedcount=<$MTFeedCount encode_xml="1"$>
</MTSetVars><dl>
<dt>関連フィード</dt>
<dd>
<ul class="feeds">
<MTFeed uri="$feeduri">
<li><a href="<$MTRelatedFeedURL$>" target="_blank"><$MTFeedTitle$></a>
<ul>
<MTFeedEntries lastn="$feedcount">
<li><a href="<$MTFeedEntryLink encode_html="1"$>"><$MTFeedEntryTitle$></a></li>
</MTFeedEntries>
</ul>
</li>
</MTFeed>
</ul>
</dd>
</dl>
</MTIfNonEmpty>
最初にSetVarsで、カスタムフィールドの値をセットします。
その値をMTFeedタグで読み込ませ、あとはMTFeedで利用できるタグを使ってフィードを表示させます。
なお、件数指定は固定で良ければ変数にする必要も、カスタムフィールドを作る必要もありません。
普通に5とかの数字を入れてしまってください。
...これって一般ユーザーに需要あるのかなぁ。
こんばんは。お久しぶりの板橋です。
今日は複雑な処理ではなく、簡単なTIPSをひとつ。
みなさん、remove_htmlというグローバル・モディファイアは使われていますか?
タグの値からhtmlタグを除外するモディファイアです。よくあるのが、こんばんは。お久しぶりの板橋です。 今日は複雑な処理ではなく、簡単なTIPSをひとつ。 みなさん、remove_htmlというグローバル・モディファイアは使われていますか? タグの値からhtmlタグを...などですね。このタグで、記事から自動出力される概要からhtmlタグを除外することができます。
...たまにソースを除くと、meta descriptionにものすごい改行が入っていたり、htmlタグが出ていたりするサイトってありませんか?remove_htmlを入れればそれが解決します。
さて、ここまでは標準的な使い方のお話でした。
今回は、このremove_htmlを利用して、デフォルトの機能のみでフォルダやカテゴリを並びかえたり、特殊なグループ設定をつけてみたり...という方法をご紹介いたします。
みなさんは普段フォルダやカテゴリのラベル、どのように設定されているでしょうか?
恐らく、「日記」「写真」「その他」...など、日本語で入れてみたり、はたまた英語で「diary」「photo」...など、表示に使われる名前を入れているかと思います。
そこで、ラベルに一工夫。
例えば、写真、日記、その他の順に並べたいとします。
<1>写真
<2>日記
<3>その他
htmlタグを打つ時に囲む半角のカッコで数字を囲みます。
続いて、フォルダを呼び出してみましょう。
<ul>
<MTFolders show_empty="1">
<li><$MTFolderLabel$></li>
</MTFolders>
</ul>
すると、以下のように表示されると思います。
<1>写真
<2>日記
<3>その他
並び順はかわりましたが、数字とカッコは表示したくないですよね。
そんなときこそremove_htmlの出番です。
<ul>
<MTFolders show_empty="1">
<li><$MTFolderLabel remove_html="1"$></li>
</MTFolders>
</ul>
remove_htmlではカッコの中身をhtmlタグとして認識してくれるので、
写真
日記
その他
という順に並びかわります。
#まあ、UIが優れた並び替えのプラグインもあるのであまり需要はなさそうですが...
上記の並び替えを参考に、今度はグループ設定をつけてみましょう。
例えばカテゴリーが以下のようなカテゴリーが存在するとします。
全社ニュース
総務部からのお知らせ
今日の社食メニュー
渋谷おすすめランチ
ここで、例えば自分が「全社ニュース」のカテゴリページにいる場合は、「総務部からのお知らせ」は出したいが、「今日の社食メニュー」、「渋谷おすすめランチ」は出したくない...という場合、以下のような処理で実現できます。
<news>全社ニュース
<news>総務部からのお知らせ
<lunch>今日の社食メニュー
<lunch>渋谷おすすめランチ
あとはカテゴリーを出すところで以下のような処理をしてあげれば完了です。
<$MTArchiveCategory setvar="thisgroup"$>
<ul>
<MTCategories>
<MTSetVarBlock name="setgroup"><MTIf tag="MTArchiveCategory" like="news">news<MTElseIf name="lunch">lunch</MTIf></MTSetVarBlock>
<MTIf name="thisgroup" like="$setgroup">
<li><$MTCategoryLabel remove_html="1"$></li>
</MTIf>
</MTCategories>
</ul>
まず最初に現在地のカテゴリラベルをthisgroupにセットします。
続いてMTCategoriesでカテゴリの一覧を出し、吐き出されるカテゴリラベルに、先程設定したグループ「news」が含まれるかチェックします。含まれる場合はsetgroupにnewsを、含まれない場合は次のElseIfでlunchをセットします。
次に、現在地のカテゴリとして設定したthisgroupに、先程セットしたsetgroupの値が含まれるかチェックし、含まれていればカテゴリラベルを出力します。含まれていなければ出力せず、次のカテゴリを処理します。
例えば現在地が「<news>全社ニュース」であった場合、最初にthisgroupに「<news>全社ニュース」がセットされます。
次の処理でカテゴリの一覧を出しますが、setgroupに同じnewsがセットされた全社ニュースと総務部からのお知らせは出力しますが、lunchがセットされた今日の社食メニューや渋谷おすすめランチは出力されません。
...と、こういった形で簡単なグループ分けをすることができます。
なお、このタグはカテゴリ、或いはブログ記事のアーカイブでのみ動作します。
カテゴリを含まない月別アーカイブ(カテゴリ別月別等を除く)やインデックスページなどでは動作しません。
と、このようにいろいろな活用方法があります。
日ごろあまり目を向けないグローバル・モディファイアですが、便利なものも多いので、一度一覧に目を通してみてはどうでしょうか。「こういう処理をしたかった...」というものもあるかもしれません。
グローバル・モディファイアリファレンス(SixApart社)
http://www.movabletype.jp/documentation/appendices/modifiers/