Movable Type 技術情報

検索結果のページ分割のページ数を前後5件までに制御するMTタグ

森山 2009年01月07日

新年あけましておめでとうございます。
めずらしくブログを更新します、森山です。

ブログの記事が多くなると検索結果のページ分割がどうしても多くなってしまいます。
デフォルトのMTの検索結果の場合
page01.jpg

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

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);">&lt; 前</a>&nbsp;&nbsp;</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__">&nbsp;</mt:Unless>
    </mt:PagerBlock>
    <mt:IfMoreResults>&nbsp;&nbsp;<a href="<$mt:NextLink$>" rel="next" onclick="return swapContent();">次 &gt;</a></mt:IfMoreResults>
</div>

現在のページを取得して、前後プラスマイナス5を足して処理をしています。よかったら利用してみてください。

投稿者 森山 : 01/07

EntryImExporter が生成する CSV ファイルのカラムについて

ぴろり上西 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
記事のタグです。コンマ区切りで指定します。
投稿者 ぴろり上西 : 12/19

どこよりも早いMovableType4.23の差分を調べる会

ぴろり上西 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が出ちゃうかもしれませんね!?(泣)

投稿者 ぴろり上西 : 12/03

MovableType Japana Hack-a-thon Vol.4 で感じたこと

ぴろり上西 2008年11月18日

 会社帰りに参加してきました。詳しくは私の個人ブログを見ていただくとして(ぉぃ) 個人開発者ではなくMTベンダー視点から見た感想なんかを書いてみたいと思います。

 最後の発表会で目立ったのは、マルチメディア的なhackが多かったという点です。これはMTが単にテキストデータを扱うだけにとどまらず、画像ファイルをも超えて、音声や音楽、動画といったメディアまでもその内に取り込もうとしていることの表れではないかと思うのです。昨今、高速なインターネット環境はごく当たり前になり、以前では扱いづらかった大容量のメディアファイルもネット上で手軽に扱える環境が整備されてきました。ここに次世代のPublishing Platform、Communication PlatformとしてのMovableTypeがあるのではないかということです。
 友人同士で気軽に動画の交換が行える、イベントの様子を動画付きで記事にしてコメントを貰う、少し前にあったPodCastを全面に押し出したサイトが登場する、色々楽しいサイトが生まれそうな予感がしています。

 弊社ではイントラブログなど企業様のイントラネットで運用されるシステムの開発が比較的多いのですが、ここにマルチメディアの融合する余地は果たしてあるのでしょうか? 企業内で遣り取りされる電子データの殆どはテキストデータとして扱えるものばかりです。一般的な事務作業を想像されると判ると思いますが、画像ファイルや動画ファイルを扱うシーンというのはそうそうありません。では、やはり、マルチメディアは必要ないのかでしょうか? 私は社員間のコミュニケーションの活性化にその鍵があると思っています。
 社内のちょっとしたワンシーンのスナップ写真や、社員の自己紹介写真をイントラネットで公開する。新規事業の企画MTGの動画を共有する。こういったコンテンツに対して、部署を超えて社員個人が気軽にコメントを残したり、議論が巻き起こることが社内イントラの成果であると思うのです。製品企画部の会議動画に総務のOLがコメントする、そういうある意味変な組み合わせから生まれるイノベーションもあると思うのです。

 まだこういった事例は殆ど例がありませんが、今後はこういった方面にも積極的に提案をしていけるようにしたいと考えています。

投稿者 ぴろり上西 : 11/18

MT4.22流 : setvarモディファイアをつかってMTタグのアトリビュート内で更にMTタグを使用する

小林 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を使わなくても簡単に変数に値を突っ込めるようになったのは便利ですね!

投稿者 小林 : 10/17
お問い合わせはこちらから お電話でのお問い合わせ03-5475-5101

MTエンジニアブログ

MTCMS Smartキャンペーン!
承認フロー付きCMS「MTCMS Smart(98,000円)」をお買い上げの方、MTライセンス1本がタダに!

配布プラグイン一覧

注目記事

RSS

ページの先頭へ戻る