<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>かたつむりくんのWWW</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.tinybeans.net/blog/atom.xml" />
    <id>tag:www.tinybeans.net,2012-03-16:/blog//1</id>
    <updated>2012-05-17T02:38:36Z</updated>
    <subtitle>Movable Type, PowerCMS, HTML, CSS, JavaScript, jQuery etc.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.13-ja</generator>

<entry>
    <title>MAMP の MySQL をコマンドで扱うには</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/05/17-113546.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1598</id>

    <published>2012-05-17T02:35:46Z</published>
    <updated>2012-05-17T02:38:36Z</updated>

    <summary>Mac の代表的な開発環境と言えば MAMP ですね。 MAMP をインストールすると、初めから phpMyAdmin が使えるので、MySQL の作業はついついそれに頼ってしまいがちです。 しかし、...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="MySQL" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mysql" label="mysql" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>Mac の代表的な開発環境と言えば <a href="http://www.mamp.info/en/index.html">MAMP</a> ですね。</p>
<p>MAMP をインストールすると、初めから phpMyAdmin が使えるので、MySQL の作業はついついそれに頼ってしまいがちです。</p>
<p>しかし、サーバーによっては phpMyAdmin がインストールされていない場合もあり、コマンドで作業しないと行けないこともあります。そんな時のために、MAMP の MySQL をコマンドで操作して練習しておきたいですね。</p>]]>
        <![CDATA[<h2>MAMP の MySQL をコマンドで操作する</h2>
<p>MAMP の MySQL を扱う場合には、まずは次のコマンドでディレクトリを移動します。</p>
<pre>cd /Applications/MAMP/Library/bin</pre>
<p>そしてデータベースにログインするには、</p>
<pre>./mysql -u root -p</pre>
<p>です。ちなみに、MAMP のデフォルトのパスワードは root ですね。</p>
<h2>パスを通す</h2>
<p>でもこれだと、いちいち移動して ./mysql とか打つのは面倒なので、あらかじめパスを通しておきます。ターミナルで、</p>
<pre>cd<br />vi .bashrc</pre>
<p>と打って、開いたファイルの一番最後に、カーソルを移動して、「o（オー）」を打って、</p>
<pre>export PATH=$PATH:/Applications/MAMP/Library/bin</pre>
<p>と追記して、「esc」&rarr;「:」&rarr;「wq」でエンターします。最後に、</p>
<pre>source .bashrc</pre>
<p>でエンターでOKです。これで、今後は、</p>
<pre>mysql -u root -p</pre>
<p>でいけます。</p>
<p>ちなみに、mysql から出るときは「control + D」です。</p>]]>
    </content>
</entry>

<entry>
    <title>MTAppjQuery の機能（jQueryプラグイン）をリストアップしてみたらこんなにあった</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/25-093758.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1596</id>

    <published>2012-04-25T00:37:58Z</published>
    <updated>2012-04-25T00:38:52Z</updated>

    <summary><![CDATA[ふと、MTAppjQuery プラグイン&nbsp;の機能（プラグインにセットされている jQuery プラグインの機能）をリストアップしてみたらこんなにあって、自分でも少し驚いた！...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="MT Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletypeplugin" label="movabletype-plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mtappjquery" label="MTAppjQuery" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>ふと、<a href="http://www.tinybeans.net/blog/download/mt-plugin/mtapp-jquery.html">MTAppjQuery プラグイン</a>&nbsp;の機能（プラグインにセットされている jQuery プラグインの機能）をリストアップしてみたらこんなにあって、自分でも少し驚いた！</p>]]>
        <![CDATA[<p>jQuery.MTAppNoScrollRightSidebar()<br />右サイドバーのウィジェットをスクロールに追随するようにする。</p>
<p>jQuery.MTAppMultiCheckbox()<br />テキストフィールドをマルチチェックボックスにする。</p>
<p>jquery.MTAppDynamicSelect.js<br />動的に追加可能なドロップダウンリストにする。</p>
<p>jquery.MTAppFieldSplit.js<br />テキストフィールドを複数に分割する。</p>
<p>jQuery.MTAppKeyboardShortcut()<br />一覧画面でj, k, xのキーボード・ショートカットが使える。</p>
<p>jQuery.MTAppCustomize()<br />主にブログ記事・ウェブページの編集画面の各フィールドをカスタマイズする。</p>
<p>jQuery.MTAppFieldSort()<br />フィールドを並べ替える。カスタムフィールドは対応、ウィジェットは未対応。</p>
<p>jQuery.MTAppTabs()<br />ブログ記事編集画面のフィールドをタブで表示する。</p>
<p>jQuery.MTAppMsg()<br />画面上部にMTデフォルトの形式のメッセージを表示する。</p>
<p>jQuery.MTAppDialogMsg()<br />ダイアログメッセージを表示する。</p>
<p>jQuery.MTAppInCats()<br />カテゴリごとに条件分岐させる。</p>
<p>jQuery.MTAppFullscreen()<br />本文・追記欄をフルスクリーン表示にする。</p>
<p>jQuery.MTApp1clickRebuild()<br />テンプレートの管理画面でワンクリックで再構築できるようになる。</p>
<p>jQuery.MTAppDebug()<br />ページの情報や各種一覧でIDを表示する。</p>
<p>jQuery.MTAppCreateLink()<br />管理画面の主要なページのURLを生成する（開発中）</p>
<p>jQuery.fn.MTAppCheckCategoryCount()<br />必要な数のカテゴリが選択されているかチェックする。</p>
<p>jQuery.MTAppSortableBatchEdit()<br />ブログ記事・ウェブページ一括編集画面をソート可能にして、日付を自動変更する。</p>
<p>jQuery.MTAppBatchEditCategory()<br />ブログ記事・ウェブページ一括編集画面でカテゴリを一括で変更する。</p>
<p>jQuery.MTAppDuplicate()<br />ブログ記事またはウェブページを複製する。（PowerCMSのカスタムオブジェクト対応）</p>
<p>jQuery.MTAppMakeField()<br />メインカラムのフィールドを生成します。</p>
<p>jQuery.MTAppMakeWidget()<br />右サイトバーのウィジェットを生成します。</p>
<p>jQuery.MTAppRemoveVal()<br />ブログ記事・ウェブページ編集画面のメインカラムのinput:text, textareaにクリアボタンを付ける。</p>
<p>jQuery.digit(num, space)<br />numが一桁の場合は、頭に0または半角スペースを付与</p>
<p>jQuery.zeroPad()<br />指定した桁数に満たない場合は頭を0で埋める。</p>
<p>jQuery.toInt()<br />全角数字を半角数字に変換し、半角数字以外は削除する。</p>
<p>.MTAppshowHint()<br />要素にマウスオーバーしたときに、要素上部に吹き出しスタイルでテキストを表示する。</p>
<p>.MTAppTooltip()<br />指定した要素にマウスオーバーするとカーソルに追随するツールチップを表示する。</p>
<p>.MTAppSuggest()<br />テキストフィールドにタグ欄のようなサジェスト機能を追加する。</p>
<p>.MTAppFancyListing()<br />iframeで指定したファイルを読み込みます。</p>
<p>.MTAppInlineEdit()<br />input:text, textareaをインラインエディットモードにする。</p>
<p>.MTAppTabSpace()<br />textareaでタブキーが押されたときに、スペースなどの文字列を挿入する。</p>
<p>.MTAppRemoveVal()<br />指定したinput:textにクリアボタンを付ける。</p>
<p>.MTAppNumChecker()<br />全角数字を半角に変換、半角数字以外の文字を削除、最小値・最大値の設定など</p>
<p>.MTAppTaxAssist()<br />入力された数値から税込み価格、税抜き価格を算出する。</p>
<p>.MTAppNbspGUI()<br />「1項目ごとに改行してください」をGUIで実現する。</p>
<p>.MTAppDateAssist()<br />今日、明日、明後日をワンクリックで入力する。</p>
<p>.hasClasses(classes)<br />classesで指定したクラス名が設定されている場合はtrueを返す。</p>
<p>.notClasses(classes)<br />classesで指定したクラス名が設定されていない場合はtrueを返す。</p>
<p>.noScroll(selector, horizontal)<br />の子要素である$(selector)をスクロールに追随させる。</p>
<p>.insertListingColum()<br />リスティングフレームワークの一覧画面にカラムを追加する。</p>
<p>.insertAtCaret()<br />テキストエリアのカーソルの位置に文字を挿入する。</p>]]>
    </content>
</entry>

<entry>
    <title>MTCafe Tokyo に行ってきました</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/mtcafe-tokyo.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1595</id>

    <published>2012-04-19T03:14:14Z</published>
    <updated>2012-04-19T04:16:25Z</updated>

    <summary><![CDATA[もう東京では桜がほとんど散ってしまいました。この一瞬の美しさに、人は魅了されるのでしょうか。 さてさて、桜が満開だった4月7日、MTCafe Tokyo に行ってきました（&rarr; MTCafe ...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Seminar" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mtcafe" label="MTCafe" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>もう東京では桜がほとんど散ってしまいました。この一瞬の美しさに、人は魅了されるのでしょうか。</p>
<p>さてさて、桜が満開だった4月7日、<a href="http://kokucheese.com/event/index/29391/">MTCafe Tokyo</a> に行ってきました（&rarr; <a href="http://www.mtcafe.net/">MTCafe とは？</a>）。MTCafe はゆるい感じの会なので、この記事もゆるゆると。</p>
<p>１次会は、４人のLTと雑談、2次会はぶらぶらお酒を飲みながら MT の話をつまみにお散歩しながらお花見、３次会は MT の話をつまみに飲み会、４次会は MT の話をつまみに飲み会、という感じでした。</p>
<p>全体を通して、初めてお会いした方とも色々話せて楽しい会でした。また、色々教えていただいたことも多くて、勉強にもなりました。</p>
<p>１次会の最後では、ダイエットの極意の話もそっちのけで開発した<a href="http://junnama.alfasado.net/online/">野田さん</a>の新作プラグインのデモもあったりしましたが、トイレに行っていて見逃したという&hellip;</p>
<p>僕も LT で2つのデモをさせていただきました。</p>]]>
        <![CDATA[<p>1つめは、JavaScript を利用した高速 Ajax 検索の jQuery プラグイン「<a href="http://www.tinybeans.net/blog/download/jquery-plugin/flexibleSearch.html">flexibleSearch.js</a>」（90万円ww）のデモです。実際に利用しているサイトを紹介してデモしました。<a href="http://www.susi-paku.com/">susipaku さん</a>が導入を検討しているという噂も。</p>
<p>当日言い忘れましたが、こいつは hashchange.js を利用してるので、「戻る」とかできるし、ページ送りにも対応してるんですよ！（確か&hellip;）</p>
<p>2つめは、Movable Type のプラグインの「雛形」をあっという間に作ってしまう Webサービス（？）のデモをさせていただきました。その名も「mt-plug.in」。</p>
<p><a href="http://www.tinybeans.net/blog/files/mt-plugin-capture.png"><img src="http://www.tinybeans.net/blog/assets_c/2012/04/mt-plugin-capture-thumb-500x288-1401.png" alt="" width="500" height="288" /></a></p>
<p>例えば「mt_entry を拡張して、スタティックとダイナミックに対応したファンクションタグで出力するプラグイン」だったら、5分ちょっとで出来ちゃうんじゃないですかね。あ、フィールドの並べ替えには対応していないので、その辺は <a href="http://www.tinybeans.net/blog/download/mt-plugin/mtapp-jquery.html">MTAppjQuery</a> の $.MTAppFieldSort() でよろしくって感じです。</p>
<p>現在、絶賛開発中ですが、僕的には便利でやばいです。もっと完成度を上げてリリースしたいなーと思っています。</p>
<p>そんな感じの MTCafe でしたが、今後は、名古屋、福岡での開催が予定されているそうです。行ってみたいな。</p>
<p>最後に、MTCafe Tokyo の記事をピックアップしておきますので、全体的なお話はそちらをご覧ください。</p>
<ul>
<li><a href="http://blog.sixapart.jp/2012-04/mtcafe.html">オフ会・勉強会で、Movable Type ユーザーの和を広げませんか? - Six Apart ブログ</a></li>
<li><a href="http://www.susi-paku.com/pakumovabletypemt-cafemt.html">movabletypeのゆるいユーザー交流会！第二回MT Cafe東京へ行ってきました。MT業界ろくろ回しすぎ。｜susi-paku web</a></li>
<li><a href="http://www.h-fj.com/blog/archives/2012/04/08-103758.php">MTCafe Tokyo終了 - The blog of H.Fujimoto</a></li>
<li><a href="http://linker.in/journal/2012/04/mtcafe-tokyo-mtcafe.php">MTCafe Tokyoへ参加してきました #mtcafe｜linker journal｜linker</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>Custom Field GUI Utility 3.2.5 リリース</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/19-012746.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1594</id>

    <published>2012-04-18T16:27:46Z</published>
    <updated>2012-04-18T16:27:55Z</updated>

    <summary>WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.2.5」をリリースしました。 ラジオボタンに「must = 1」を設定したとき...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="WP Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="customfieldguiutility" label="Custom Field GUI Utility" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wordpressplugin" label="wordpress-plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>WordPress のカスタムフィールドを使いやすくするプラグイン「<a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-3.html">Custom Field GUI Utility 3.2.5</a>」をリリースしました。</p>
<p>ラジオボタンに「must = 1」を設定したときのバグを修正しました。</p>
<p>以下のページからダウンロードしてください。</p>
<ul>
<li><a href="http://code.google.com/p/custom-field-gui-utility-3/downloads/list">Downloads - custom-field-gui-utility-3 - Google Project Hosting</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Movable Type の特定の記事のユーザーを変更する SQL</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/18-162343.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1593</id>

    <published>2012-04-18T07:23:43Z</published>
    <updated>2012-04-18T07:25:59Z</updated>

    <summary>Movable Type の特定の記事のユーザーを変更する SQL です。 phpMyAdmin を使うのであれば、mt_entry のテーブルを開いた状態で、上のタブメニューの「SQL」で次の SQ...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="database" label="database" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mysql" label="mysql" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="phpmyadmin" label="phpMyAdmin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>Movable Type の特定の記事のユーザーを変更する SQL です。</p>
<p>phpMyAdmin を使うのであれば、mt_entry のテーブルを開いた状態で、上のタブメニューの「SQL」で次の SQL を実行すればOKです。この例では、エントリーID = 1136 の記事の著者を ID = 3 に変更しています。</p>
<pre>UPDATE `mt_entry` SET `entry_author_id`=3,`entry_created_by`=3,`entry_modified_by`=3 WHERE `entry_id` =1136</pre>
<p>ブログの記事の著者を一気に変更したい場合は次のようになります。この例では、ブログID = 2 内のすべての記事の著者を ID = 3 に変更しています。</p>
<pre>UPDATE `mt_entry` SET `entry_author_id`=3,`entry_created_by`=3,`entry_modified_by`=3 WHERE `entry_blog_id` =2</pre>
<p>以上です。</p>]]>
        
    </content>
</entry>

<entry>
    <title>入れ子になったカテゴリの階層を調べるテンプレート</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/15-235524.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1592</id>

    <published>2012-04-15T14:55:24Z</published>
    <updated>2012-04-15T16:30:14Z</updated>

    <summary><![CDATA[入れ子になったカテゴリの階層を調べる方法です。 MTSubCategories タグやカテゴリアーカイブに次のテンプレートを入れればOKです。 &lt;$mt:SetVar name="cat_lev...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="MT Customize" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypetemplate" label="movabletype-template" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>入れ子になったカテゴリの階層を調べる方法です。</p>
<p>MTSubCategories タグやカテゴリアーカイブに次のテンプレートを入れればOKです。</p>
<pre>&lt;$mt:SetVar name="cat_level" value="0"$&gt;<br />&lt;mt:ParentCategories&gt;&lt;$mt:SetVar name="cat_level" op="++"$&gt;&lt;/mt:ParentCategories&gt;</pre>
<p>最初に変数 cat_level を初期化（ゼロを代入）して、MTParentCategories タグ内でインクリメント（ +1 ）します。これで親カテゴリの数だけ加算されていくので、カテゴリの階層が分かるというわけです。</p>
<p>ちなみに、MTParentCategories タグはトップレベルのカテゴリのコンテキストでも呼ばれ、その場合は MTParentCategories はトップレベルカテゴリである現在のカテゴリを返すようです（ソース未確認）。</p>]]>
        <![CDATA[<p>試しに、このブログのカテゴリの一覧を、階層付きで表示すると次のようになります。</p>
<pre>&nbsp;&nbsp;&nbsp; [level:1]Movable Type<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]MT Plugins<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]MT Customize<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Power CMS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]DynamicMTML<br />&nbsp;&nbsp;&nbsp; [level:1]WordPress<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]WP Plugins<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]WP Template<br />&nbsp;&nbsp;&nbsp; [level:1]Web Development<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]XHTML＋CSS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]JavaScript<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]jQuery<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Git<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Server<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Adobe AIR<br />&nbsp;&nbsp;&nbsp; [level:1]Tool<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Firefox<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Web Browser<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Web Service<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:3]Google<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Mac<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]iPhone<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]CMS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:3]EC-CUBE<br />&nbsp;&nbsp;&nbsp; [level:1]Book<br />&nbsp;&nbsp;&nbsp; [level:1]Diary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Design<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [level:2]Seminar</pre>
<p>これを表示するためのテンプレートは次のようになります。</p>
<pre>&lt;mt:SubCategories top="1"&gt;<br />&lt;mt:SubCatisFirst&gt;&lt;ul&gt;&lt;/mt:SubCatisFirst&gt;<br />&lt;$mt:SetVar name="cat_level" value="0"$&gt;<br />&lt;mt:ParentCategories&gt;&lt;$mt:SetVar name="cat_level" op="++"$&gt;&lt;/mt:ParentCategories&gt;<br />&lt;li&gt;[level:&lt;$mt:Var name="cat_level"$&gt;]&lt;$mt:categorylabel$&gt;&lt;mt:SubCatsRecurse&gt;&lt;/li&gt;<br />&lt;mt:SubCatisLast&gt;&lt;/ul&gt;&lt;/mt:SubCatisLast&gt;<br />&lt;/mt:SubCategories&gt;</pre>
<p>以上です。</p>]]>
    </content>
</entry>

<entry>
    <title>Movable Type で 13 日の金曜日に JSON が現れる</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/13-101324.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1591</id>

    <published>2012-04-13T01:13:24Z</published>
    <updated>2012-04-13T01:15:55Z</updated>

    <summary>今日は平成24年4月13日(金)ということで、JSONの日だとか Twitter で見かけたので Movable Type でもやってみましょう。 DynamicMTML が使える環境で、次のようなイ...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dynamicmtml" label="DynamicMTML" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="json" label="json" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypetemplate" label="movabletype-template" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>今日は平成24年4月13日(金)ということで、JSONの日だとか Twitter で見かけたので Movable Type でもやってみましょう。</p>
<p>DynamicMTML が使える環境で、次のようなインデックステンプレートを作ればOKです！</p>
<pre>&lt;!DOCTYPE HTML&gt;<br />&lt;html lang="ja"&gt;<br />&lt;head&gt;<br />&nbsp;&nbsp; &nbsp;&lt;meta charset="UTF-8"&gt;<br />&nbsp;&nbsp; &nbsp;&lt;title&gt;13日の金曜日にJSON現る&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;mt:DynamicMTML&gt;<br />&lt;$mt:Date format="%d" setvar="date"$&gt;<br />&lt;$mt:Date format="%A" setvar="day_ja"$&gt;<br />&lt;$mt:Date format="%w" setvar="day_num"$&gt;<br />&lt;h1&gt;今日は&lt;$mt:Var name="date"$&gt;日の&lt;$mt:Var name="day_ja"$&gt;です。&lt;/h1&gt;<br />&lt;mt:If name="date" eq="13"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mt:If name="day_num" eq="5"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:SetHashVar name="json"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="Love" value="再構築"$&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="and" value="Love DynamicMTML"$&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:SetHashVar&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:Var name="json" to_json="1"$&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="appear" value="1"$&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&lt;/mt:If&gt;<br />&lt;mt:Unless name="appear"&gt;<br />&lt;p&gt;平和だな〜&lt;/p&gt;<br />&lt;/mt:Unless&gt;<br />&lt;/mt:DynamicMTML&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</pre>
<p>以上です(￣ロ￣lll)</p>]]>
        
    </content>
</entry>

<entry>
    <title>AnotherCustomFields プラグインの日付型のフィールドを DynamicMTML に対応させる</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/04/03-030205.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1590</id>

    <published>2012-04-02T18:02:05Z</published>
    <updated>2012-04-02T18:05:41Z</updated>

    <summary>前回に引き続き、今回は AnotherCustomFields プラグインで追加した日付型のフィールドを DynamicMTML に対応させる方法を紹介します。なお、この記事は前回の記事を前提として話...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypeplugin" label="movabletype-plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p><a href="http://www.tinybeans.net/blog/2012/03/28-085031.html">前回に引き続き</a>、今回は AnotherCustomFields プラグインで追加した日付型のフィールドを DynamicMTML に対応させる方法を紹介します。なお、この記事は<a href="http://www.tinybeans.net/blog/2012/03/28-085031.html">前回の記事</a>を前提として話を進めます。</p>
<p>まずは藤本さんのところで販売されている<a href="http://www.h-fj.com/blog/acfbook/">マニュアル</a>に沿って、「日付と時刻」型のフィールドを追加してください。</p>
<p>今回は、次のようなのフィールドを EntryFields の config.yaml に追加しました。</p>
<ul>
<li>フィールド名：startdate</li>
<li>ラベル名：開始日時</li>
<li>テンプレートタグ：MTEntryStartDate</li>
</ul>
<p>なお、既存の config.yaml に追記してオブジェクトを拡張するときは、schema_version のバージョン番号を上げるのをお忘れなく。</p>]]>
        <![CDATA[<h2>開始日時フィールドに値を保存する</h2>
<p>フィールドの追加が成功したら、前回作成したブログ記事（タイトル：AnotherCustomFields プラグイン）の編集画面を開き、開始日時フィールドに値を設定して保存します。今回は「2012-03-28&nbsp;12:30:23」としました。</p>
<h2>スタティック・パブリッシングで出力してみる</h2>
<p>次に、前回作成した「<span>AnotherCustomFields テスト」インデックステンプレートの上段を次のように変更してみます。</span></p>
<pre>&lt;h2&gt;スタティック・パブリッシング&lt;/h2&gt;<br /><br />&lt;p&gt;mt:Date : &lt;$mt:date format="%Y-%m-%d %H:%M:%S"$&gt;&lt;/p&gt;<br />&lt;mt:Entries id="2"&gt;<br />&lt;ul&gt;<br />  &lt;li&gt;&lt;$mt:EntryTitle$&gt;&lt;/li&gt;<br />  &lt;li&gt;&lt;$mt:EntrySubTitle$&gt;&lt;/li&gt;<br />  &lt;li&gt;&lt;$mt:EntryStartDate format="%Y年%m月%d日 %H時%M分%S秒"$&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/mt:Entries&gt;</pre>
<p><span>これを「保存と再構築」して表示させると次のようになります。format モディファイアもばっちりですね。</span></p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_4.png" alt="acf_dynamic_4" width="419" height="352" /></p>
<p>これと同じタグを、下段のダイナミックの方に書くと「ページが見つかりません」といった類いのエラーになりますので今は書かないでおきます。</p>
<h2>テンプレートタグをダイナミックに対応させる</h2>
<p>今回は、「MTEntryStartDate」という「ファンクションタグ」をダイナミックに対応させるので、ダイナミック・パブリッシング時のテンプレートタグの処理を記述するファイル名は、「function.mtentrystartdate.php」となります。</p>
<p>このファイルを前回と同様に下記のように EntryFields ディレクトリに保存します。</p>
<p>MT_DIR/plugins/EntryFields/php/<strong>function.mtentrystartdate.php</strong></p>
<h2>function.mtentrystartdate.php の内容</h2>
<p>さて、function.mtentrystartdate.php の内容を書いていきます。</p>
<p>まずは前回と同様に、フィールドの値を取り出すところまで書いてみると、その内容は次のようになります。</p>
<pre>&lt;?php<br />function smarty_function_mtentrystartdate ($args, &amp;$ctx) {<br />  $entry = $ctx-&gt;stash('entry');<br />  return $entry-&gt;entry_startdate;<br />}<br />?&gt;</pre>
<p>これで、最低限はMTEntryStartDate タグもダイナミックに対応しましたので、先ほどと同様に「AnotherCustomFields テスト」インデックステンプレートの下段にも MTEntryStartDate タグを追記します。</p>
<pre>&lt;h2&gt;DynamicMTML&lt;/h2&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;p&gt;mt:Date : &lt;$mt:date format="%Y-%m-%d %H:%M:%S"$&gt;&lt;/p&gt;<br />&lt;mt:Entries id="2"&gt;<br />&lt;ul&gt;<br />  &lt;li&gt;&lt;$mt:EntryTitle$&gt;&lt;/li&gt;<br />  &lt;li&gt;&lt;$mt:EntrySubTitle$&gt;&lt;/li&gt;<br />  <strong>&lt;li&gt;&lt;$mt:EntryStartDate format="%Y年%m月%d日 %H時%M分%S秒"$&gt;&lt;/li&gt;</strong><br />&lt;/ul&gt;<br />&lt;/mt:Entries&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>このテンプレートを保存と再構築して表示すると次のようになります。</p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_5.png" alt="acf_dynamic_5" width="406" height="362" /></p>
<p>フィールドの値はちゃんと出力されましたが、format モディファイアに対応していませんね。</p>
<h3>format モディファイアに対応させる</h3>
<p>このタグを MTEntryDate などと同様に format モディファイアに対応させるには、function.mtentrystartdate.php の内容を次のように変更します。</p>
<pre>&lt;?php<br />function smarty_function_mtentrystartdate ($args, &amp;$ctx) {<br />&nbsp; $entry = $ctx-&gt;stash('entry');<br />  <strong>$args['ts'] = $entry-&gt;entry_startdate;</strong><br />  <strong>return $ctx-&gt;_hdlr_date($args, $ctx);</strong><br />}<br />?&gt;</pre>
<p>フィールドの値（$entry-&gt;entry_startdate）を $args['ts'] にセットし、それと $ctx を MT の _hdlr_date() に渡してあげればOKです。</p>
<p>これを表示させると次のようになります。</p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_6.png" alt="acf_dynamic_6" width="406" height="362" /></p>
<p>format モディファイアもちゃんと反映されましたね。</p>
<p>以上です。</p>]]>
    </content>
</entry>

<entry>
    <title>AnotherCustomFields プラグインを DynamicMTML に対応させる</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/03/28-085031.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1589</id>

    <published>2012-03-27T23:50:31Z</published>
    <updated>2012-03-28T04:08:54Z</updated>

    <summary>藤本さんの AnotherCustomFields プラグインの解説書を買いました。 AnotherCustomFields プラグインは、MTOS（オープンソース版の Movable Type）にカ...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletypeplugin" label="movabletype-plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p><a href="http://www.h-fj.com/blog/">藤本さん</a>の <a href="http://www.h-fj.com/blog/archives/2011/09/02-143708.php">AnotherCustomFields</a> プラグインの<a href="http://www.h-fj.com/blog/acfbook/">解説書</a>を買いました。</p>
<p>AnotherCustomFields プラグインは、<a href="http://www.movabletype.jp/opensource/">MTOS（オープンソース版の Movable Type）</a>にカスタムフィールドの機能を追加することができるプラグインです。フィールドの追加は、管理画面から行うのではなく config.yaml という設定ファイルを書いてサーバーにアップロードするという手間はありますが、とても簡単な設定ファイルですので特に苦になりません。設定ファイルの書き方は、プラグインの<a href="http://www.h-fj.com/blog/acfbook/">解説書</a>に丁寧に書かれていますので、MTOS を頻繁に使う方は、是非とも１冊購入しておくと良いかもしれません。</p>
<p>また、AnotherCustomFields は、Movable Type の標準のカスタムフィールドとはデータの持ち方が違います。そのため、AnotherCustomFields を標準のカスタムフィールドと併用するということも考えられます。例えば、「自分で PHP で SQL を投げて、カスタムフィールドで条件を絞りブログ記事を取得する」ということをやる場合は、MT 標準のカスタムフィールドよりもずっと楽に SQL が書けるようになるので、そういった需要にもオススメです。</p>
<p>さて、この&nbsp;AnotherCustomFields ですが、スタティック・パブリッシングについては自動的に拡張テンプレートタグを生成してくれるので問題ありませんが、<a href="https://github.com/alfasado/DynamicMTML">DynamicMTML</a>（ダイナミック・パブリッシング）には対応していません。</p>
<p>そこで、AnotherCustomFields のテンプレートタグを DynamicMTML でも使えるようにする方法の基本的な部分を紹介します。</p>
<p>なお、今回は、DynamicMTML が使える状態というのを前提に話を進めます。DynamicMTML のインストールには下記のページを参照してください。</p>
<ul>
<li><a href="http://www.tinybeans.net/blog/2011/11/29-dynamicmtml-01.html">はじめての DynamicMTML #01 - 準備とインストール</a></li>
</ul>]]>
        <![CDATA[<h2>AnotherCustomFields でカスタムフィールドを追加する</h2>
<p>初めに&nbsp;<a href="http://www.h-fj.com/blog/archives/2011/09/02-143708.php">AnotherCustomFields の紹介ページ</a>を参考にプラグインをインストールし（現時点での最新版は<a href="http://www.h-fj.com/blog/archives/2012/02/29-092911.php">こちら</a>）、サンプルの config.yaml をインストールしてブログ記事に「サブタイトル」という欄を追加してください（テーマのインストールは不要です）。5分もあればそこまで簡単にできます。</p>
<h2>ブログ記事を投稿する</h2>
<p>ブログ記事の編集画面に「サブタイトル」が追加されたら、試しにブログ記事を追加してみます。今回は次のような内容にしてみました。</p>
<ul>
<li>タイトル：AnotherCustomFields プラグイン</li>
<li>サブタイトル：AnotherCustomFields を DynamicMTML で！</li>
</ul>
<p>記事を投稿したらそのブログ記事のIDをメモしておいてください。保存後の管理画面のURL中の「id=2」の部分です。今回は「2」でした。</p>
<h2>テスト用のインデック・ステンプレートを作成</h2>
<p>次に、動作を検証するためのインデックス・テンプレートを作成します。インデックス・テンプレートの内容は次の通りです。まずはスタティック・パブリッシングから試してみます。</p>
<ul>
<li>テンプレート名：AnotherCustomFields テスト</li>
<li>出力ファイル名：acftest.html</li>
<li>公開：スタティック（既定）</li>
<li>内容：以下のとおり</li>
</ul>
<pre>&lt;h2&gt;スタティック・パブリッシング&lt;/h2&gt;<br /><br />&lt;p&gt;mt:Date : &lt;$mt:date format="%Y-%m-%d %H:%M:%S"$&gt;&lt;/p&gt;<br />&lt;mt:Entries id="2"&gt;<br />&lt;ul&gt;<br />  &lt;li&gt;&lt;$mt:EntryTitle$&gt;&lt;/li&gt;<br />  &lt;li&gt;&lt;$mt:EntrySubTitle$&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/mt:Entries&gt;</pre>
<p>このテンプレートを再構築して表示すると次のようになります。</p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_1.png" alt="acf_dynamic_1" width="409" height="161" /></p>
<p>ちゃんと表示されましたね。</p>
<h2>DynamicMTML で出力する部分を追記する</h2>
<p>次に、先ほどのテンプレートの最後に以下の内容を追加します。</p>
<pre>&lt;h2&gt;DynamicMTML&lt;/h2&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;p&gt;mt:Date : &lt;$mt:date format="%Y-%m-%d %H:%M:%S"$&gt;&lt;/p&gt;<br />&lt;mt:Entries id="2"&gt;<br />&lt;ul&gt;<br />  &lt;li&gt;&lt;$mt:EntryTitle$&gt;&lt;/li&gt;<br />  &lt;li&gt;&lt;$mt:EntrySubTitle$&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/mt:Entries&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>これを保存と再構築して表示させると、次のような「ページが見つかりません」という類いのエラーが出ると思います。</p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_2.png" alt="acf_dynamic_2" width="500" height="110" /></p>
<h2>ダイナミック用の拡張テンプレートタグを書く</h2>
<p>さて、いよいよ本題です。今回は MTEntrySubTitle タグをダイナミックに対応させます。ダイナミック・パブリッシング用のプラグインの書き方は藤本さんの以下の記事が参考になりますのでご覧ください。ここでは淡々と進めます。</p>
<ul>
<li><a href="http://www.h-fj.com/blog/archives/2011/12/07-122406.php">ダイナミック・パブリッシング＆DynamicMTML用のプラグイン（ファンクションタグ）のひな形(その1) - The blog of H.Fujimoto</a></li>
<li><a href="http://www.h-fj.com/blog/archives/2011/12/08-120831.php">ダイナミック・パブリッシング＆DynamicMTML用のプラグイン（ファンクションタグ）のひな形(その2) - The blog of H.Fujimoto</a></li>
</ul>
<h3>PHP ディレクトリを作る</h3>
<p>今回は&nbsp;<a href="http://www.h-fj.com/blog/archives/2011/09/02-143708.php">AnotherCustomFields の紹介ページ</a>にあるサンプルをインストールしているという前提で進めます。</p>
<p>サンプルがちゃんとインストールされているのであれば、MT のインストールディレクトリ（MT_DIR）直下の plugins ディレクトリに「EntryFields」というディレクトリがアップロードされているはずです。</p>
<ul>
<li>MT_DIR/plugins/EntryFields</li>
</ul>
<p>この「EntryFields」ディレクトリの中に、「php」というディレクトリを作成します。</p>
<ul>
<li>MT_DIR/plugins/EntryFields/php</li>
</ul>
<p>この php ディレクトリの中に、MTEntrySubTitle タグのダイナミック用のファイルを入ることになります。</p>
<h3>ファイル名</h3>
<p>今回は「MTSubTitle」という「ファンクションタグ」をダイナミックに対応させますので、次の名前のファイルを、先ほど作成した php ディレクトリ内に作成します。</p>
<ul>
<li>MT_DIR/plugins/EntryFields/php/function.<strong>mtentrysubtitle</strong>.php</li>
</ul>
<h3>ファイルの内容</h3>
<p>function.mtentrysubtitle.php には次のコードを書きます。</p>
<pre>&lt;?php<br />function smarty_function_<strong>mtentrysubtitle</strong> ($args, &amp;$ctx) {<br />&nbsp; &nbsp; $entry = $ctx-&gt;stash('entry');<br />&nbsp; &nbsp; return $entry-&gt;entry_subtitle;<br />}<br />?&gt;</pre>
<p>まず、$ctx-&gt;stash('entry') で処理中のコンテキストからブログ記事のオブジェクト（entry）を取得します。</p>
<p>そして、取得したブログ記事のオブジェクトから&nbsp;$entry-&gt;entry_subtitle でサンプルで追加したサブタイトルの値を取り出して出力すればOKです。</p>
<h3>オブジェクトから値を取り出す</h3>
<p>ここで一度サンプルの config.yaml の内容を見てみましょう。</p>
<pre>object_types:<br />  entry:<br />    subtitle:<br />      type: string<br />      size: 255<br />      revisioned: 1<br />      acf:<br />        type: text<br />        label: サブタイトル<br />        tag: EntrySubtitle<br />    topimage:<br />        type: integer<br />        revisioned: 1<br />        acf:<br />            type: image<br />            label: トップ画像<br />            tag: EntryTopImage</pre>
<p>サンプルでは、このように「 subtitle 」というベースネームのフィールドと「 topImage 」というベースネームのフィールドを mt_entry テーブルに追加しています。</p>
<p>このように「 subtitle 」として追加すると、実際のデータベースのフィールド名は「 entry_subtitle 」となります。ダイナミック用のプラグインでオブジェクトから値を取り出すときはそのままフィールド名で取り出します。</p>
<h2>動作確認</h2>
<p>さて、function.mtentrysubtitle.php をアップロードしたら、先ほどエラーが出たページを再度表示してみましょう。次のようにちゃんと表示され、リロードする度に下段の時刻が更新されれば完璧です。</p>
<p><img src="http://www.tinybeans.net/blog/files/acf_dynamic_3.png" alt="acf_dynamic_3" width="418" height="327" /></p>
<p>&nbsp;</p>
<p>以上です。この方法を使って、普通のテキスト系のものはどんどん DynamicMTML （ダイナミック・パブリッシング）に対応させましょう！</p>]]>
    </content>
</entry>

<entry>
    <title>Movable Type のスタティック・パブリッシングでループ以外でも odd と even を出力する方法</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/03/16-124712.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1588</id>

    <published>2012-03-16T03:47:12Z</published>
    <updated>2012-03-16T03:51:46Z</updated>

    <summary>リストや表を出力するときに、交互に odd（奇数）や even（偶数）というクラス名などを付けたいことって結構ありますよね。 それを実現する方法としては、jQuery など JavaScript を使...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="MT Customize" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletypetemplate" label="movabletype-template" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>リストや表を出力するときに、交互に odd（奇数）や even（偶数）というクラス名などを付けたいことって結構ありますよね。</p>
<p>それを実現する方法としては、jQuery など JavaScript を使う方法が簡単ですが、Movable Type を使っているなら、できればスタティック・パブリッシングで直接出力しておきたいですよね。</p>
<p>MTLoop などの繰り返しタグの中であれば、&lt;mt:If name="__odd__"&gt; などで簡単にできますが、ループの中以外では少し工夫が必要です。</p>
<p>今回は、ループ以外でそれを実現する方法の紹介です。</p>]]>
        <![CDATA[<h2>出力結果サンプル</h2>
<p>サンプルとして、次のようなリストに odd、even を交互に付けたいとします。</p>
<pre>&lt;ul&gt;<br />  &lt;li&gt;1 : odd&lt;/li&gt;<br />  &lt;li&gt;2 : even&lt;/li&gt;<br />  &lt;li&gt;3 : odd&lt;/li&gt;<br />  &lt;li&gt;4 : even&lt;/li&gt;<br />  &lt;li&gt;5 : odd&lt;/li&gt;<br />  &lt;li&gt;6 : even&lt;/li&gt;<br />  &lt;li&gt;7 : odd&lt;/li&gt;<br />  &lt;li&gt;8 : even&lt;/li&gt;<br />  &lt;li&gt;9 : odd&lt;/li&gt;<br />  &lt;li&gt;10 : even&lt;/li&gt;<br />&lt;/ul&gt;</pre>
<h2>テンプレート</h2>
<p>まず、odd、even を付けたいソースの手前に、次のテンプレートを挿入します。</p>
<pre>&lt;$mt:SetVar name="_count" value="0"$&gt;<br />&lt;mt:SetVarTemplate name="odd_even"&gt;<br />  &lt;$mt:SetVar name="_count" op="++"$&gt;<br />  &lt;$mt:Var name="_count" op="%" value="2" setvar="_mod"$&gt;<br />&lt;mt:If name="_mod"&gt;odd&lt;mt:Else&gt;even&lt;/mt:If&gt;<br />&lt;/mt:SetVarTemplate&gt;</pre>
<p>このテンプレートの解説は次のとおりです。</p>
<pre>変数_countを初期化（=0）します。<br />&lt;$mt:SetVar name="_count" value="0"$&gt;<br /><br />mt:SetVarTemplateは、その変数がmt:Varされる場所で変数の内容が展開されます。<br />&lt;mt:SetVarTemplate name="odd_even"&gt;<br /><br />  変数_countをインクリメント（+1）します。<br />  &lt;$mt:SetVar name="_count" op="++"$&gt;<br /><br />  変数_countを2で割った余り（0か1）を変数_modに入れます。<br />  &lt;$mt:Var name="_count" op="%" value="2" setvar="_mod"$&gt;<br /><br />  余りが1のときは奇数なのでodd、0のときは偶数なのでevenを出力します。<br />  &lt;mt:If name="_mod"&gt;odd&lt;mt:Else&gt;even&lt;/mt:If&gt;<br /><br />&lt;/mt:SetVarTemplate&gt;</pre>
<p>この MTSetVarTemplate でセットされた変数&nbsp;odd_even を、odd か even を交互に出力したい場所で MTVar すればOKです。</p>
<pre>&lt;ul&gt;<br />  &lt;li&gt;1 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;2 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;3 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;4 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;5 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;6 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;7 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;8 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;9 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />  &lt;li&gt;10 : &lt;$mt:Var name="odd_even"$&gt;&lt;/li&gt;<br />&lt;/ul&gt;</pre>
<p>以上です。ナイス・アイデア。</p>]]>
    </content>
</entry>

<entry>
    <title>『よくわかるPHPの教科書』感想</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/03/15-125703.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1587</id>

    <published>2012-03-15T03:57:03Z</published>
    <updated>2012-03-16T01:49:14Z</updated>

    <summary><![CDATA[ 昨年話題になり、発売以降いまだに売れ続けているっぽい書籍『よくわかるPHPの教科書』（たにぐち まこと&nbsp;著）を読みました。評判通り、すごく良かったです！ PHPって、すごく手軽に動的なWe...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Book" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p style="float: right;"><a href="http://www.amazon.co.jp/gp/product/4839933146/ref=as_li_ss_il?ie=UTF8&amp;tag=tinybeans-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4839933146"><img src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=4839933146&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=tinybeans-22&amp;ServiceVersion=20070822" alt="" border="0" /></a></p>
<p>昨年話題になり、発売以降いまだに売れ続けているっぽい書籍『<a href="http://www.amazon.co.jp/gp/product/4839933146/ref=as_li_ss_tl?ie=UTF8&amp;tag=tinybeans-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4839933146">よくわかるPHPの教科書</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=tinybeans-22&amp;l=as2&amp;o=9&amp;a=4839933146" alt="" width="1" height="1" border="0" />』（<a href="https://twitter.com/#!/seltzer">たにぐち まこと</a>&nbsp;著）を読みました。<strong>評判通り、すごく良かったです！</strong></p>
<p>PHPって、すごく手軽に動的なWebページが作れるし、人気の CMS なども PHP で作られていることが多いですよね。</p>
<p>そのため、「さあ、PHP でも勉強しようか」という人は、「手軽に何かを作りたい人」が多いのだと思います。作りたいというか、目に見える実用的なことを実現したい、といった感じですね。</p>
<p>この本の良いところは、その実用的なものを実現するための必要最低限の知識に絞られて書かれていることだと思いました。この視点でまとめた谷口さんと編集者さん、なんてすばらしいんだろう！</p>
<p>この本を読み終えれば、すでに PHP と MySQL を連携させてちょっとしたことができるようになってしまいます。</p>]]>
        <![CDATA[<p>そして、この本、それだけでは終わらないところがますますすばらしい！というのは、最後の章では、PHP を使っていく中で必ず必要になるであろうライブラリ（PEAR）とフレームワーク（CakePHP）の使い方にも触れているんです。</p>
<p>つまり、この本を読み終えると「PHP + MySQL」で何か作れるようになっている上に、その先にあるワンステップ上のレイヤーもボヤーッと見せてくれるんですね。これ、次へ繋がるのですごく大きいことだと思います。</p>
<p>これまで PHP の書籍で挫折した人、読んでみる価値ありますよ〜！</p>]]>
    </content>
</entry>

<entry>
    <title>DynamicMTML の MTIfLogin が動かなくなったときには</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/03/09-000401.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1585</id>

    <published>2012-03-08T15:04:01Z</published>
    <updated>2012-03-10T02:42:13Z</updated>

    <summary>MT5.13 にアップグレードしてから、DynamicMTML の MTIfLogin がうまく動かなくなりました。もしそうなったら、mt-config.cgi に以下の記述があるか確認し、無ければ追...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="MT Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dynamicmtml" label="DynamicMTML" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>MT5.13 にアップグレードしてから、<a href="https://github.com/alfasado/DynamicMTML">DynamicMTML</a> の <a href="http://www.tinybeans.net/blog/2011/12/07-dynamicmtml-04.html">MTIfLogin</a> がうまく動かなくなりました。もしそうなったら、mt-config.cgi に以下の記述があるか確認し、無ければ追記してみてください。</p>
<pre>CookiePath /</pre>
<p>僕はそれで解決しました（<a href="http://alfasado.net/">アルファサード</a>の抜群のソーシャルサポートのおかげで解決できました。ありがとうございました）。</p>
<p>ただし、この設定は、Cookie の有効範囲を広げることになるので、その分セキュリティリスクが高まるという点は押さえておきましょう。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Movable Type のブログ記事一覧で下書き記事の背景色を変更する</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/03/05-061607.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1582</id>

    <published>2012-03-04T21:16:07Z</published>
    <updated>2012-03-04T21:16:14Z</updated>

    <summary>当ブログで公開している「MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン」について、以下のようなコメントを頂きました。 $.MTA...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="MT Customize" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="MT Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mtappjquery" label="MTAppjQuery" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>当ブログで公開している「<a href="http://www.tinybeans.net/blog/download/mt-plugin/mtapp-jquery.html">MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン</a>」について、以下のようなコメントを頂きました。</p>
<blockquote>
<p><span>$.MTAppDebug();</span><span>で記事一覧画面を見ると下書き保存の記事が赤くハイライトされます。この機能をMTAppDebugなしで実装することは可能でしょうか？</span><br /><span>とても見やすく便利な機能です。</span></p>
</blockquote>
<p><img src="http://www.tinybeans.net/blog/files/mtapp-draftentry.png" alt="mtapp-draftentry" width="500" height="206" /></p>
<p><span>これを実現するのは簡単で、user.js に次のコードを書き入れればOKです。</span></p>]]>
        <![CDATA[<pre>if (mtappVars.screen_id == 'list-entry') {<br />  jQuery(window).bind('listReady', function(){<br />    jQuery('#entry-table').find('span.draft').closest('tr').css({'background':'#FFCBD0'});<br />  });<br />}</pre>
<p>なお、スタイル部分（.css({'background':'#FFCBD0'})）は自由に変更してください。</p>
<p>MTAppjQuery プラグインを使っていなければ、alt-tmpl で対応しても良いでしょう。</p>
<p>この機能、我ながら便利です。一覧を見る度に「あ、この記事早く完成させないと」というプレッシャーを与えてくれますのでｗ</p>]]>
    </content>
</entry>

<entry>
    <title>はじめての DynamicMTML #14 - デバイスごとに表示を分ける MTIfUserAgent と MTUserAgent</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/02/28-dynamicmtml-14.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1579</id>

    <published>2012-02-27T15:46:13Z</published>
    <updated>2012-02-27T15:47:22Z</updated>

    <summary>今回は、サイトにアクセスしてきたユーザーエージェントによって条件分岐する MTIfUserAgent タグと、ユーザーエージェントの情報を出力する MTUserAgent タグを紹介します。...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="MT Plugins" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dynamicmtml" label="DynamicMTML" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>今回は、サイトにアクセスしてきたユーザーエージェントによって条件分岐する MTIfUserAgent タグと、ユーザーエージェントの情報を出力する MTUserAgent タグを紹介します。</p>]]>
        <![CDATA[<h2>MTIfUserAgent</h2>
<p>MTIfUserAgent タグは、wants モディファイア、like モディファイアを指定して、ページにアクセスしてきたユーザーエージェント情報によって分岐するブロックタグです。</p>
<h3>wants モディファイア</h3>
<p>wants モディファイアには、Smartphone、Keitai、Tablet のいずれかを指定します。小文字でも大丈夫です。</p>
<p><strong>Smartphone</strong> を指定した場合は、Android、BlackBerry、iPhone（iPod touch）、iPad、Palm、Opera Mini、Windows Phone の場合にブロックタグの中身が実行されます。</p>
<p><strong>Keitai</strong> を指定した場合は、DoCoMo、AU、SoftBank の場合にブロックタグの中身が実行されます。</p>
<p><strong>Tablet</strong> を指定した場合は、iPad またはユーザーエージェントに&nbsp;Mobile の文字を含まない smartphone の場合にブロックタグの中身が実行されます。なお、wants="Smartphone" exclude="Tablet" としていしても、wants="Tablet&nbsp;" と同様に扱いになります。</p>
<h3>like モディファイア</h3>
<p>like モディファイアには、任意の文字列を指定します。その文字列が、<span>HTTP_USER_AGENT に含まれている場合にブロックタグの中身が実行されます。</span>wants モディファイアよりも先に評価されます。</p>
<p><span>例えば、次のようにした場合、IE6 が該当します（他にも該当しますが）。</span></p>
<pre><span>&lt;mt:IfUserAgent like="MEIE 6.0"&gt; &lt;/mt:IfUserAgent&gt;</span></pre>
<h2>MTUserAgent</h2>
<p>MTUserAgent&nbsp;タグは、<span>ユーザーエージェントを判別する文字列を出力します。</span></p>
<h3>raw モディファイア</h3>
<p>raw モディファイアを指定（raw="1"）するとユーザーエージェントの情報（HTTP_USER_AGENT情報）をそのまま出力します。サンプルページを用意したので確認してみてください。</p>
<ul>
<li><a href="http://www.tinybeans.net/blog/2012/02/28-001009.html">MTIfUserAgent と MTUserAgent 確認ページ</a></li>
</ul>
<h3>wants、like モディファイア</h3>
<p>MTIfUserAgent タグと同様、wants モディファイアと like モディファイアも指定できます。</p>
<p>例えば、wants モディファイアに smartphone を指定した場合、Android、BlackBerry、iPhone（iPod touch）、iPad、Palm、Opera Mini、Windows Phone からのアクセスのときに 1 が出力されます。</p>
<p>このように、MTUserAgent タグと MTIfUserAgent タグは、内部では同じ関数（$app-&gt;get_agent()）が呼ばれています。つまり、MTIfUserAgent タグの説明で、ブロックタグの中身が実行されるパターンのときは、MTUserAgent タグは 1 を出力するということになります。</p>
<p>したがって、MTIfUserAgent の条件分岐を明示的に出力することができるので、テンプレート構築中のデバッグにも使えるかもしれません。</p>
<p>また、wants="agent" を指定した場合は、iPhone や PC といったユーザーエージェント名を出力します。</p>
<p>以上です。</p>]]>
    </content>
</entry>

<entry>
    <title>MTIfUserAgent と MTUserAgent 確認ページ</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/02/28-001009.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1581</id>

    <published>2012-02-27T15:10:09Z</published>
    <updated>2012-02-27T15:34:32Z</updated>

    <summary><![CDATA[あなたのユーザーエージェント情報 サンプル &lt;mt:IfUserAgent wants="smartphone"&gt;&lt;p&gt;スマートフォン：&lt;$mt:UserAgent ra...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<h2>あなたのユーザーエージェント情報</h2>

<pre><mtml tag="mt:UserAgent" params='raw="1"'></pre>

<h2>サンプル</h2>
<pre>&lt;mt:IfUserAgent wants="smartphone"&gt;<br />&lt;p&gt;スマートフォン：&lt;$mt:UserAgent raw="1"$&gt;&lt;/p&gt;<br />&lt;/mt:IfUserAgent&gt;<br /><br />&lt;mt:IfUserAgent wants="keitai"&gt;<br />&lt;p&gt;携帯：&lt;$mt:UserAgent raw="1"$&gt;&lt;/p&gt;<br />&lt;/mt:IfUserAgent&gt;<br /><br />&lt;mt:If tag="mt:UserAgent" eq="PC"&gt;<br />&lt;p&gt;PC : &lt;$mt:UserAgent raw="1"$&gt;&lt;/p&gt;<br />&lt;/mt:If&gt;<br /><br />&lt;mt:IfUserAgent like="<span>Chrome</span>"&gt;<br />&lt;p&gt;Google Chrome 拡張機能はこちらからダウンロードしてください&lt;/p&gt;<br />&lt;/mt:IfUserAgent&gt;&nbsp;<br /><br />&lt;mt:IfUserAgent like="Firefox"&gt;<br />&lt;p&gt;Firefox のアドオンはこちらからダウンロードしてください&lt;/p&gt;<br />&lt;/mt:IfUserAgent&gt;</pre>
<h2>上記コードの実行結果</h2>
<mt:DynamicMTML>
<mt:IfUserAgent wants="smartphone">
<p>スマートフォン：<$mt:UserAgent raw="1"$></p>
</mt:IfUserAgent>

<mt:IfUserAgent wants="keitai">
<p>携帯：<$mt:UserAgent raw="1"$></p>
</mt:IfUserAgent>

<mt:If tag="mt:UserAgent" eq="PC">
<p>PC : <$mt:UserAgent raw="1"$></p>
</mt:If>

<mt:IfUserAgent like="Chrome">
<p>Google Chrome 拡張機能はこちらからダウンロードしてください</p>
</mt:IfUserAgent> 

<mt:IfUserAgent like="Firefox">
<p>Firefox のアドオンはこちらからダウンロードしてください</p>
</mt:IfUserAgent>
</mt:DynamicMTML>]]>
        
    </content>
</entry>

</feed>

