Movable Type 技術情報
森山
2009年01月07日
新年あけましておめでとうございます。
めずらしくブログを更新します、森山です。
ブログの記事が多くなると検索結果のページ分割がどうしても多くなってしまいます。
デフォルトのMTの検索結果の場合

20ページぐらいならまだいいのですが、200ページとかになるとみずらいという声を社内で聞いたのでMTタグで調整してみました。
MTタグを調整して前後5件のページまでを表示した場合

MTタグは下記を参考にしてください。
太字になっている箇所がポイントです。
<div class="content-nav">
<MTPagerBlock>
<MTIfCurrentPage>
<MTVar name="__value__" setvar="page_next" value="5" op="+">
<MTVar name="__value__" setvar="page_prev" value="5" op="-">
</MTIfCurrentPage>
</MTPagerBlock>
<mt:IfPreviousResults><a href="<$mt:PreviousLink$>" rel="prev" onclick="return swapContent(-1);">< 前</a> </mt:IfPreviousResults>
<mt:PagerBlock>
<mt:IfCurrentPage>
<$mt:Var name="__value__"$>
<mt:Else>
<MTIf name="__value__" le="$page_next"><MTIf name="__value__" ge="$page_prev"><a href="<$mt:PagerLink$>"><$mt:Var name="__value__"$></a></MTIf></MTIf>
</mt:IfCurrentPage>
<mt:Unless name="__last__"> </mt:Unless>
</mt:PagerBlock>
<mt:IfMoreResults> <a href="<$mt:NextLink$>" rel="next" onclick="return swapContent();">次 ></a></mt:IfMoreResults>
</div>
現在のページを取得して、前後プラスマイナス5を足して処理をしています。よかったら利用してみてください。
ぴろり上西
2008年12月19日
EntryImExporter プラグインによって生成される CSV ファイルの各フィールドについて簡単に説明したいと思います。
- entry_id
- MovableType が内部的に使用する通し番号です。必ずユニークな値で重複することはありません。
- entry_allow_comments
- コメントを受け付けるチェックボックスの設定で、チェックが有効な場合に1になります。
- entry_allow_pings
- トラックバックを受け付けるチェックボックスの設定で、チェックが有効な場合に1になります。
- entry_atom_id
- MovableTypeが内部で使用するデータです。
- entry_author_id
- 記事を最初に作成したユーザのIDです。
- entry_authored_on
- 記事が最初に作成された日時です。
- entry_basename
- 記事のファイル名です。
- entry_blog_id
- 記事が所属しているブログのIDです。
- entry_category_id
- 記事が所属しているカテゴリのIDです。
- entry_class
- ブログ記事の場合は「entry」、ウェブページの場合は「page」になります。
- entry_comment_count
- その記事に付けられたコメントの総数です。
- entry_convert_breaks
- 記事のフォーマットです。
- entry_created_by
- entry_created_on
- 記事の公開日です。
- entry_excerpt
- 記事の概要文です。
- entry_keywords
- 記事のキーワードです。
- entry_modified_by
- 記事を最後に更新したユーザのIDです。
- entry_modified_on
- 記事が最後に更新された日時です。
- entry_ping_count
- 受信したトラックバックの総数です。
- entry_pinged_urls
- 受信したトラックバックURLの一覧です。
- entry_status
- 記事の公開状態です。1が下書き、2が公開、4が日時指定公開になります。
- entry_tangent_cache
- MovableTypeが内部で使用するデータです。
- entry_template_id
- entry_text
- 記事の本文です。
- entry_text_more
- 記事の追記です。
- entry_title
- 記事のタイトルです。
- entry_to_ping_urls
- 送信したトラックバックURLの一覧です。
- entry_week_number
- 記事の投稿された週番号です。
- cf_*
- カスタムフィールドの夫々のフィールドの値です。
- tags
- 記事のタグです。コンマ区切りで指定します。
ぴろり上西
2008年12月03日
こんにちは。上西です。4.23(゚∀゚)キターということで、早速、前のバージョンとの差分を取ってみました。Let's diff!
今回はXSS(Cross Site Scripting)脆弱性への対応ということで、プログラム的な変更よりもテンプレートでの細かい変更が目立ちます。追加されたたくさんの escape="html" に涙がちょちょ切れそうになります。シックス・アパート株式会社の中皆さん、本当にお疲れ様でした。
- テンプレート中で、ユーザに入力を許す部分(ユーザ名やURL)の出力時にHTMLエスケープ指定が追加されている
- プログラム中で、フィールドに入力された文字でXSSで利用されうる文字をエラーとして扱うようになった
- 本体のスキーマバージョンの変化はなし
- MT::Util::remove_html のロジック変更
- テンプレートタグ中でも外部からの入力値を使用する際にエスケープを行っている
当初、MTの管理画面で入力されるフィールドは、システムにログインできる人間が使うだけだったこともあって、このあたりの作りこみが甘い傾向があります。コミュニティパックが公開されて以降、一般のビジタにもブログを与えることができるようになり、この管理画面の機能の一部が完全な第三者にも曝されるようになったわけです。そのため、悪意のある第三者によって、フィールドにシステム管理者の意図しないような値を入力されると、これらの部分が脆弱性として現れやすいようです。前回のHack-a-thonでもそのような裏話がありました。ざっとみた感じでは網羅的にHTMLエスケープが施されているようですが、プログラムがこれだけ巨大化してしまった今、もしかしたら、またすぐに4.24が出ちゃうかもしれませんね!?(泣)
ぴろり上西
2008年11月18日
会社帰りに参加してきました。詳しくは私の個人ブログを見ていただくとして(ぉぃ) 個人開発者ではなくMTベンダー視点から見た感想なんかを書いてみたいと思います。
最後の発表会で目立ったのは、マルチメディア的なhackが多かったという点です。これはMTが単にテキストデータを扱うだけにとどまらず、画像ファイルをも超えて、音声や音楽、動画といったメディアまでもその内に取り込もうとしていることの表れではないかと思うのです。昨今、高速なインターネット環境はごく当たり前になり、以前では扱いづらかった大容量のメディアファイルもネット上で手軽に扱える環境が整備されてきました。ここに次世代のPublishing Platform、Communication PlatformとしてのMovableTypeがあるのではないかということです。
友人同士で気軽に動画の交換が行える、イベントの様子を動画付きで記事にしてコメントを貰う、少し前にあったPodCastを全面に押し出したサイトが登場する、色々楽しいサイトが生まれそうな予感がしています。
弊社ではイントラブログなど企業様のイントラネットで運用されるシステムの開発が比較的多いのですが、ここにマルチメディアの融合する余地は果たしてあるのでしょうか? 企業内で遣り取りされる電子データの殆どはテキストデータとして扱えるものばかりです。一般的な事務作業を想像されると判ると思いますが、画像ファイルや動画ファイルを扱うシーンというのはそうそうありません。では、やはり、マルチメディアは必要ないのかでしょうか? 私は社員間のコミュニケーションの活性化にその鍵があると思っています。
社内のちょっとしたワンシーンのスナップ写真や、社員の自己紹介写真をイントラネットで公開する。新規事業の企画MTGの動画を共有する。こういったコンテンツに対して、部署を超えて社員個人が気軽にコメントを残したり、議論が巻き起こることが社内イントラの成果であると思うのです。製品企画部の会議動画に総務のOLがコメントする、そういうある意味変な組み合わせから生まれるイノベーションもあると思うのです。
まだこういった事例は殆ど例がありませんが、今後はこういった方面にも積極的に提案をしていけるようにしたいと考えています。
小林
2008年10月17日
小林です。
今日の帯広は晴天!ここ最近ずっと晴れているのですが、今日は特に暑いです。本当は寒い時期なんですけどね・・・異常気象万歳。
MT4.22からsetvarモディファイアが追加されました。
setvar | グローバル・モディファイアリファレンス
setvar モディファイアを設定したブロックまたはファンクションは展開されず、出力される結果は、モディファイアの設定値が名前の変数の値となります。
こいつは非常に便利です。まえにMT4でMTタグのアトリビュート内で更にタグを使用するという内容をご紹介しましたが、もっと簡単に使えるようになります。
たとえば、ブログ記事テンプレートで自分の所属するカテゴリーの記事一覧を出力する場合はこうやってできます。
<ul>
<$MTEntryCategory setvar="catgory_name"$>
<MTEntries lastn="5" category="$category_name">
<li><$MTEntryTitle$></li>
</MTEntries>
</ul>
MTEntryCategoryにsetvarモディファイアを付与します。category_nameとしてある部分は任意の名前を入れてください。
で、MTEntriesで$category_nameで呼び出してあげれば、MTEntryCategoryの値がMTEntriesに突っ込まれ、MTEntriesが実行されます。
MTSetVarBlockを使わなくても簡単に変数に値を突っ込めるようになったのは便利ですね!