<?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-01-19:/blog//1</id>
    <updated>2012-02-04T04:14:37Z</updated>
    <subtitle>Movable Type, PowerCMS, HTML, CSS, JavaScript, jQuery etc.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.12</generator>

<entry>
    <title>はじめての DynamicMTML #11 - MT タグの中で PHP を実行する</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/02/04-dynamicmtml-11.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1575</id>

    <published>2012-02-03T23:46:03Z</published>
    <updated>2012-02-04T04:14:37Z</updated>

    <summary>これまで数回にわたって DynamicMTML で提供されているテンプレートタグの使い方を紹介してきました。今回はいったん雰囲気を変えて、MT タグの中で PHP のコードを実行する方法を紹介します。...</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>これまで数回にわたって <a href="https://github.com/alfasado/DynamicMTML">DynamicMTML</a> で提供されているテンプレートタグの使い方を紹介してきました。今回はいったん雰囲気を変えて、MT タグの中で PHP のコードを実行する方法を紹介します。正確には「MT タグを実行する前に PHP を実行する」ということになります。</p>
<p>今回の記事では「クラシックブログ」のテーマを使って解説します。もちろん DynamicMTML が有効な環境というのが前提です。</p>]]>
        <![CDATA[<h2 id="php_in_html">出力ファイルが HTML のまま PHP コードを書いてみる</h2>
<p>DynamicMTML では、テンプレート中の PHP も実行してくれます（※これについては次回補足します）。</p>
<p>そこで、試しに「メインページ」の初期状態のテンプレート（出力ファイル名：index.html）の title タグに、以下のような PHP コードを書いてみましょう。DynamicMTML の動作も確認するために、mtml タグで MTDate タグを出力するコードも併記しておきます。</p>
<pre>&lt;title&gt;&lt;?php print 'HTMLのままPHP'; ?&gt; [&lt;mtml tag="mt:date"&gt;]&lt;/title&gt;</pre>
<p>このテンプレートを「保存と再構築」し、公開されたテンプレートを確認してみると、ちゃんと PHP のコードが解釈されているのが分かります。次の画像は、この index.html を表示したブラウザのタイトルバーです。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-32.png" alt="startup-dymtml-32" width="288" height="49" /></p>
<p>出力されたファイルのソースコードを確認してみると、次のようになっています。MTML タグで出力された MTDate タグが記述されています。これがちゃっと日時になって表示されているので、DynamicMTML がきちんと動作していることも確認できます。</p>
<pre>&lt;title&gt;&lt;?php print 'HTMLのままPHP'; ?&gt; [&lt;mt:date&gt;]&lt;/title&gt;</pre>
<p>これで出力ファイルが HTML のままでも PHP を実行できることが確認できました。</p>
<h2>MT タグの中に PHP コードを書いてみる</h2>
<p>次は、初期状態のまま、MT タグの中に PHP のコードを書いてみます。「メインページ」（index.html）のテンプレート中の「&lt;div id="alpha-inner"&gt;」の下に、次のようなコードを書いてみます。もちろん、本当にこの内容を実現したかったらわざわざ PHP を入れる必要はありませんね、あくまで説明のためですので。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />&lt;$mt:SetVar name="date" value="<strong>&lt;?php print date('Ymd'); ?&gt;</strong>"$&gt;<br />&lt;mt:If name="date" eq="20120203"&gt;<br />&lt;p&gt;今日 &lt;mt:date&gt;、節分の日です。&lt;/p&gt;<br />&lt;mt:elseif name="date" gt="20120203"&gt;<br />&lt;p&gt;もう &lt;mt:date&gt; です。豆まきしましたか？&lt;/p&gt;<br />&lt;mt:ElseIf name="date" lt="20120203"&gt;<br />&lt;p&gt;まだ &lt;mt:date&gt; です。豆まきの準備をしておきましょう。&lt;/p&gt;<br />&lt;/mt:If&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>さて、このテンプレートを再構築して index.html を表示してみるとエラーが表示されてしまいます。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-33.png" alt="startup-dymtml-33" width="500" height="161" /></p>
<h2>MT タグを解釈する前に PHP を実行する環境変数&nbsp;DynamicPHPFirst</h2>
<p>上記のようなコードを実現するためには、DynamicMTML で MT タグが解釈される前に PHP のコードを実行する必要がありますが、DynamicMTML には、これを実現するための環境変数 DynamicPHPFirst&nbsp;が用意されています。</p>
<h3>DynamicPHPFirst</h3>
<p>mt-config.cgi に次の１行を追加すると、DynamicMTML の実行時に MTML（MTタグ） よりも先に PHP のコードを実行することができます。</p>
<pre>DynamicPHPFirst 1</pre>
<p>さて、実際に mt-config.cgi にこの１行を追加して、先ほどの index.html にアクセスしてみます。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-34.png" alt="startup-dymtml-34" width="500" height="126" /></p>
<p>見事にきちんと表示されました。MT タグ内の PHP が先に処理され、その値によって MT タグで条件分岐が行われているのが分かると思います。</p>
<p>このような処理ができれば、例えば、MT タグの処理の前に、MT ではない他のデータベースに接続して、その値によって MT タグを処理するといったことができます。</p>
<p>また、MT タグだけでは面倒な処理、例えば「3ヶ月後の末日」を得たい場合などは、PHP の関数を使えば簡単に処理できたりもします。</p>
<pre>&lt;p&gt;今日は &lt;?php print date('Y-m-d'); ?&gt; ですが、この記事の有効期間は、<br />３ヶ月後の末日（&lt;?php print date('Y-m-d', mktime('0','0','0',date('m')+4,0,date('Y')));?&gt;）までです。&lt;/p&gt;</pre>
<p>結果は次のとおり。</p>
<pre>今日は 2012-02-04 ですが、この記事の有効期間は、３ヶ月後の末日（2012-05-31）までです。</pre>
<p>便利ですね。以上です。</p>
<p>※環境変数を変えて色々と試してみる際は、環境変数を変更したら、一度サーバー上のファイルを削除して生成しなおすことをお勧めします。</p>]]>
    </content>
</entry>

<entry>
    <title>『ソーシャルメディアマーケター美咲 新人担当者 美咲の仕事帳』感想</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/31-015247.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1572</id>

    <published>2012-01-30T16:52:47Z</published>
    <updated>2012-01-30T16:59:57Z</updated>

    <summary>表紙の絵につられて思わず買った書籍ですが、すごく良かったです。 僕は、Facebook 関連のイベントに参加するとマーケティング色が強くて、それだけで疲労困ぱいになってしまうようなマーケティング素人で...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Book" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="facebook" label="Facebook" 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.amazon.co.jp/gp/product/4798123498/ref=as_li_ss_il?ie=UTF8&amp;tag=tinybeans-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4798123498"><img style="float: right;" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=4798123498&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=tinybeans-22&amp;ServiceVersion=20070822" alt="" border="0" /></a>表紙の絵につられて思わず買った書籍ですが、すごく良かったです。</p>
<p>僕は、Facebook 関連のイベントに参加するとマーケティング色が強くて、それだけで疲労困ぱいになってしまうようなマーケティング素人ですが、この本は、そんな僕でもすらすら読み進めることができました。</p>
<p>本書は、次の４つの大きなテーマについて、新人ソーシャルメディアマーケター美咲と同僚の拓也が奮闘するというストーリーになっています。</p>
<ul>
<li>認知向上プロジェクト</li>
<li>サイト流入促進プロジェクト</li>
<li>フェイスブックプロジェクト</li>
<li>効果測定プロジェクト</li>
</ul>
<p>どのテーマについても、だらだらとプロジェクト全体像を描くのではなく、これらのテーマに挑む際に重要になるポイント、考え方、注意すべき点などに絞った物語になっているので、読んでいても頭の整理がつきやすくてとても助かりました。</p>
<p>この本は次のような人たちにオススメだと思います。</p>]]>
        <![CDATA[<ul>
<li>Twitter や Facebook を使って何かやりたいんだけど〜、とクライアントさんから漠然とした相談を受けるWeb屋さん</li>
<li>Twitter や Facebook で劇的に業績が向上すると思っている<del datetime="2012-01-31T01:33:44">おめでたい</del>方や、その人に現実を説明しないといけない方</li>
<li>Facebook 関連のイベントに参加するとマーケティング色が強くて疲労困ぱいになっちゃうんだよね、という技術系の方</li>
<li>マーケティングって難しいよな〜と苦手意識を持っている方</li>
<li>他社が始めているからうちの会社も SNS 使って何かやらないと、と焦るWeb担当者さん</li>
<li>Twitter も Facebook も何となく「始めました」って告知したけど、どう活用したらいいか悩んでいるWeb担当者さん</li>
</ul>
<p>あと、Amazon の書籍のページに動画があるので、それを見てみると当てはまる人結構いるかもしれません。</p>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/4798123498/ref=as_li_ss_tl?ie=UTF8&amp;tag=tinybeans-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4798123498">ソーシャルメディアマーケター美咲 新人担当者 美咲の仕事帳</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=4798123498" alt="" width="1" height="1" border="0" /></li>
</ul>
<p>僕は読んでおいて良かったですよ。だいぶ、SNS を使ったマーケティングのお話に対する苦手意識が取り払われた気がしますｗ</p>
<p>あと、表紙の絵がふわっとしたスカートの女の子だったのもポイント高かったかな（違</p>]]>
    </content>
</entry>

<entry>
    <title>はじめての DynamicMTML #10 - クエリを処理する4つのテンプレートタグ</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/26-dynamicmtml-10.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1568</id>

    <published>2012-01-26T03:30:32Z</published>
    <updated>2012-01-26T09:03:58Z</updated>

    <summary>DynamicMTML には、クエリを処理するテンプレートタグがいくつか用意されています。今日は、そのうちの４つ、MTQueryLoop、MTQueryVars、MTSetQueryVars、MTQu...</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>DynamicMTML には、クエリを処理するテンプレートタグがいくつか用意されています。今日は、そのうちの４つ、MTQueryLoop、MTQueryVars、MTSetQueryVars、MTQuery を紹介します。</p>
<p>なお、検索サイトやサイト内検索からの流入の際に、検索されたキーワードを処理する MTReferralKeywords というタグもあります。これについては、前回の記事を参照してください。</p>
<ul>
<li><a href="http://www.tinybeans.net/blog/2012/01/23-dynamicmtml-09.html">はじめての DynamicMTML #09 - MTSearchEntries (5)</a><br /><a href="http://www.tinybeans.net/blog/2012/01/23-dynamicmtml-09.html">MTReferralKeywords で検索サイトからの流入に対する関連記事を表示する</a></li>
</ul>]]>
        <![CDATA[<h2>注意点</h2>
<p>本題に入る前に、ひとつ注意点があります。クエリーの文字列を扱うときは、セキュリティを考慮して、モディファイアに「escape="html"」を付けるようにしましょう。</p>
<p>※この記事の公開時に、数ヶ所 escape="html" の記述が漏れていました。すいませんでした。</p>
<h2>MTQueryLoop タグ（ブロックタグ）</h2>
<p>MTQueryLoop タグは、key モディファイアで指定したクエリーの配列をループ出力するブロックタグです。クエリーの配列とは、foo[]=はじめて&amp;foo[]=dynamicmtml といった形になります。</p>
<p>例えば、次のような URL のリクエストがあったとします。</p>
<pre>http://tinybeans.info/search.html?<strong>q[]</strong>=はじめて&amp;<strong>q[]</strong>=dynamicmtml</pre>
<p>この場合は、次のように key モディファイアに q を指定して値を取り出せます。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />&lt;mt:QueryLoop key="<strong>q</strong>" glue="&lt;br /&gt;"&gt;<br />&nbsp;&nbsp;&nbsp; q = &lt;mt:Var name="<strong>q</strong>" escape="html"&gt;<br />&lt;/mt:QueryLoop&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>出力結果は次のようになります。</p>
<pre>q = はじめて<br />q = dynamicmtm</pre>
<p>また、MTQueryLoop 内では、以下の値が MTVar にセットされます。</p>
<ul>
<li>__key__ : key モディファイアで文字列</li>
<li>__value__ : key モディファイアで指定したクエリ文字列の配列の値</li>
<li>__first__ : ループの最初</li>
<li>__counter__ : ループの何回目か</li>
<li>__odd__ : 奇数回目の出力</li>
<li>__even__ : 偶数回目の出力</li>
<li>__last__ : ループの最後</li>
</ul>
<p>&nbsp;つまり、先ほどのコードは次のように書いても同じ出力結果となります。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />&lt;mt:QueryLoop key="<strong>q</strong>" glue="&lt;br /&gt;"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mt:Var name="<strong>__key__</strong>" escape="html"&gt; = &lt;mt:Var name="<strong>__value__</strong>" escape="html"&gt;<br />&lt;/mt:QueryLoop&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<h2>MTQueryVars タグ（ブロックタグ）</h2>
<p>MTQueryVars タグは、クエリー文字列の配列を変数 key と value にセットしてループ出力します。</p>
<p>例えば、次のような URL のリクエストがあったとします。</p>
<pre>http://tinybeans.info/search.html?<strong>q</strong>=dynamicmtml&amp;<strong>limit</strong>=5</pre>
<p>この場合は、次のようにして値を取り出せます。</p>
<pre>&lt;mt:QueryVars glue="&lt;br /&gt;"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mt:Var name="<strong>key</strong>" escape="html"&gt; = &lt;mt:Var name="<strong>value</strong>" escape="html"&gt;<br />&lt;/mt:QueryVars&gt;</pre>
<p>出力結果は次のようになります。</p>
<pre>q = dynamicmtml<br />limit = 5</pre>
<p>MTQueryVars&nbsp;内では、以下の値が MTVar にセットされます。</p>
<ul>
<li>key : クエリのキーにあたる文字列</li>
<li>value : 上記 key に対する値</li>
<li>__first__ : ループの最初</li>
<li>__counter__ : ループの何回目か</li>
<li>__odd__ : 奇数回目の出力</li>
<li>__even__ : 偶数回目の出力</li>
<li>__last__ : ループの最後</li>
</ul>
<p>ちなみに、クエリが「?q[]=はじめて&amp;q[]=dynamicmtml&amp;limit=5」という配列だと出力結果は次のようになります。</p>
<pre>q = Array <br />limit = 5 </pre>
<h2>MTSetQueryVars タグ（ブロックタグ）</h2>
<p>MTSetQueryVars タグは、リクエストのクエリー文字列を、キーの名前の変数に値をセットします。</p>
<p>例えば、次のような URL のリクエストがあったとします。</p>
<pre>http://tinybeans.info/search.html?<strong>q</strong>=dynamicmtml&amp;<strong>limit</strong>=5</pre>
<p>この場合は、次のようにして値を取り出せます。</p>
<pre>&lt;mt:SetQueryVars&gt;<br />&nbsp;&nbsp;&nbsp; q = &lt;mt:Var name="<strong>q</strong>" escape="html"&gt;&lt;br /&gt;<br />    limit = &lt;mt:Var name="<strong>limit</strong>" escape="html"&gt;<br />&lt;/mt:SetQueryVars&gt;</pre>
<p>出力結果は次のようになります。</p>
<pre>q = dynamicmtml<br />limit = 5</pre>
<p>先ほどの MTQueryVars はキーと値をセットで順次取り出しましたが、こちらの MTSetQueryVars は、キーの名前の変数名（q や limit など）を明示的に指定して値を取り出す形になります。</p>
<p>ちなみに、この変数が使えるのは MTSetQueryVars タグの中だけになります（他の２つのブロックタグも同様です）。つまり、次のテンプレートのように MTSetQueryVars タグの外側では何も出力されません。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />&lt;mt:SetQueryVars&gt;<br />&nbsp;&nbsp;&nbsp; 中：&lt;mt:Var name="q" escape="html"&gt;,&lt;mt:Var name="limit" escape="html"&gt;&lt;br /&gt;<br />&lt;/mt:SetQueryVars&gt;<br />&nbsp;&nbsp;&nbsp; 外：&lt;mt:Var name="q" escape="html"&gt;,&lt;mt:Var name="limit" escape="html"&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>出力結果は次のとおりです。</p>
<pre>中：dynamicmtml,5<br />外：, </pre>
<p>MTSetQueryVars の外でも使いたい場合は、次の MTQuery タグを利用します。</p>
<h2>MTQuery タグ（ファンクションタグ）</h2>
<p>MTQuery タグは、key モディファイアで指定したクエリー文字列の値を出力します。</p>
<p>例えば、次のような URL のリクエストがあったとします。</p>
<pre>http://tinybeans.info/search.html?<strong>q</strong>=dynamicmtml&amp;<strong>limit</strong>=5</pre>
<p>この場合は、次のようにして値を取り出せます。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />q = &lt;mt:Query key="<strong>q</strong>" escape="html"&gt;&lt;br /&gt;<br />limit = &lt;mt:Query key="<strong>limit</strong>" escape="html"&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>出力結果は次のようになります。</p>
<pre>q = dynamicmtml<br />limit = 5</pre>
<p>この MTQuery タグの値を変数にセットすれば、その後のテンプレートで自由に使うことができます。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />&lt;mt:Query key="q" escape="html" setvar="query_q"&gt;<br />&lt;mt:Query key="limit" escape="html" setvar="query_limit"&gt;<br />パラメータは、「?q=&lt;mt:var name="query_q"&gt;&amp;limit=&lt;mt:var name="query_limit"&gt;」です。<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>この出力結果は次のようになります。</p>
<pre>パラメータは、「?q=dynamicmtml&amp;limit=5」です。</pre>
<p>以上です。</p>]]>
    </content>
</entry>

<entry>
    <title>JavaScript で連番の文字列を簡単に作る</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/25-122623.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1569</id>

    <published>2012-01-25T03:26:23Z</published>
    <updated>2012-01-25T03:28:52Z</updated>

    <summary>すごく基本的な内容ですが、たった今自分が必要だったので。 例えば、次のような5つの項目があったとします。 expensedtlname_1,expensedtlcount_1,expensedtlun...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javascript" label="JavaScript" 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>例えば、次のような5つの項目があったとします。</p>
<pre>expensedtlname_1,expensedtlcount_1,expensedtlunitmoney_1,expensedtlmoney_1,expensedtlremarks_1</pre>
<p>これらは枝番が _1 となっていますが、これを 1 〜 10 まで一気に作りたいという場面に出くわしました（まあ、10個くらいなら手作業でも&hellip;）。</p>
<p>そんなときは、次のコードを Firebug や Chrome の JavaScript コンソールにコピペして実行すれば一瞬で終わります。</p>
<pre>var str = 'expensedtlname_*,expensedtlcount_*,expensedtlunitmoney_*,expensedtlmoney_*,expensedtlremarks_*';<br />var snippet = [], from = 1, to = 10, glue = ",";<br />for (var n = to + 1; from &lt; n; from ++) {<br />&nbsp;&nbsp;&nbsp; snippet.push(str.replace(/\*/g, from));<br />}<br />console.log(snippet.join(glue));</pre>]]>
        <![CDATA[<h2>簡単に解説</h2>
<p>まず、変数 str に連番にしたい文字列を代入します。このとき、連番にしたい数字の部分を「*」としておきます。</p>
<p>次に、変数 from に開始番号を、変数 to に終了番号を入れます。このとき、JavaScript はゼロから始まって for はなんたらとか考えなくて大丈夫です。</p>
<p>そして、変数 glue に連結する文字列を入れます。これは、連番にした変数 str を連結するときの文字列です。改行で区切りたい場合は「\n」ですね。</p>
<p>これで実行すればOKです。らくだ。</p>
<p>今、<a href="http://powercms.jp/features/field.html">PowerCMS のスニペットフィールド</a>というすごく便利なカスタムフィールドを使っているところで役に立ちました。</p>]]>
    </content>
</entry>

<entry>
    <title>Movable Type のカスタムフィールド一覧ですべてのテンプレートタグをまとめてコピーしたい</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/24-114651.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1567</id>

    <published>2012-01-24T02:46:51Z</published>
    <updated>2012-01-24T02:51:12Z</updated>

    <summary>Movable Type のカスタムフィールド一覧、テンプレートタグが表示されるようになったのは嬉しいんですけど、人間欲深いもので、今度はまとめてコピーしたくなったりします。 そんなときは、次のコード...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <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="管理画面のカスタマイズ" label="管理画面のカスタマイズ" 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 のカスタムフィールド一覧、テンプレートタグが表示されるようになったのは嬉しいんですけど、人間欲深いもので、今度はまとめてコピーしたくなったりします。</p>
<p><img src="http://www.tinybeans.net/blog/files/cflist.png" alt="cflist" width="238" height="303" /></p>
<p>そんなときは、次のコードを Firebug や Chrome の JavaScript コンソールにコピペして実行すればOK。一覧の上に表示されます。</p>
<pre>(function($){<br />  var code = [];<br />  $('pre.code').each(function(){<br />    code.push($(this).text());<br />  });<br />  for (var i=0,n=code.length;i&lt;n;i++){<br />    code[i]=code[i].replace(/^[^&lt;]+/m,'')<br />                         .replace(/\n/g,'')<br />                         .replace(/&lt;([^\/&gt;]+)\s\/&gt;/,'&lt;$$$1$&gt;')<br />                         .replace(/&lt;/g,'&amp;lt;')<br />                         .replace(/&gt;/g,'&amp;gt;');<br />  }<br />  $('#actions-bar-top').before('&lt;div class="msg msg-success" style="line-height:1.5;"&gt;&lt;pre&gt;'+ code.join("\n") +'&lt;/pre&gt;&lt;/div&gt;');<br />})(jQuery);</pre>
<p><img src="http://www.tinybeans.net/blog/files/cflist_tags.png" alt="cflist_tags" width="484" height="458" /></p>
<p>あとは zen-coding とがでマークアップよろしくということで。あぁ、ラクダ。</p>]]>
        
    </content>
</entry>

<entry>
    <title>AND 検索のテンプレートを修正しました</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/23-221347.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1566</id>

    <published>2012-01-23T13:13:47Z</published>
    <updated>2012-01-23T13:13:51Z</updated>

    <summary>「はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索」の記事で紹介している AND 検索のテンプレート...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="DynamicMTML" 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>「<a href="http://www.tinybeans.net/blog/2012/01/06-dynamicmtml-08.html">はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索</a>」の記事で紹介している AND 検索のテンプレートですが、別のところに流用したらうまく動きませんでした。</p>
<p>そのため、最後の出力の前に、一度 MTLoop を回してすべてのキーワードにマッチするものだけを、最終的な出力用のハッシュ変数 result にセットする方法に変更しました。</p>
<p>なお、このブログ記事の修正の際には、<a href="http://powercms.jp/features/workflow.html">PowerCMSのワークフローリビジョンの機能</a>を使いました。便利すぎてヤバいですｗ</p>]]>
        
    </content>
</entry>

<entry>
    <title>はじめての DynamicMTML #09 - MTSearchEntries (5) MTReferralKeywords で検索サイトからの流入に対する関連記事を表示する</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/23-dynamicmtml-09.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1551</id>

    <published>2012-01-21T03:24:41Z</published>
    <updated>2012-01-23T13:32:15Z</updated>

    <summary>今回は、MTReferralKeywords というブロックタグを使い、Google、Yahoo!、bing、MSN、goo で検索してサイトに訪れたユーザーに対して、そのキーワードに関連する記事をリ...</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>今回は、MTReferralKeywords というブロックタグを使い、Google、Yahoo!、bing、MSN、goo で検索してサイトに訪れたユーザーに対して、そのキーワードに関連する記事をリストアップする方法を紹介します。</p>
<h2>今回のテンプレートの仕様</h2>
<ul>
<li>検索サイトで検索されたキーワードを含むブログ記事一覧を表示する</li>
<li>検索サイトからの流入のときだけ表示する</li>
<li>現在のブログ内のブログ記事から検索する</li>
<li>最新5件を表示する</li>
<li>現在のブログ記事を除く</li>
</ul>]]>
        <![CDATA[<h2>MTReferralKeywords&nbsp;の使い方</h2>
<p>MTReferralKeywords&nbsp;タグは、Google、Yahoo!、bing、MSN、goo からの流入の際に、検索されたキーワードをループで出力するブロックタグです。</p>
<p>また、検索サイトからの流入だけでなく、サイト内検索の際のパラメータ（query または search）にセットされたキーワードも同様にループで出力します。</p>
<p>キーワードは、変数 keyword にセットされます。</p>
<h2>MTReferralKeywords のモディファイアなど</h2>
<h3>glue</h3>
<p>1回のループを繋ぎ合わせる文字列を指定します。</p>
<h3>MTVar にセットされる値</h3>
<p>MTReferralKeywords&nbsp;タグ内では、以下の値が MTVar にセットされます。</p>
<ul>
<li>keyword: 検索されたキーワード</li>
<li>__first__: ループの最初</li>
<li>__counter__: ループの何回目か</li>
<li>__odd__: 奇数回目の出力</li>
<li>__even__: 偶数回目の出力</li>
<li>__last__: ループの最後</li>
</ul>
<h2>MTReferralKeywords と関連するファンクションタグ</h2>
<h3>MTReferralKeyword</h3>
<p>MTReferralKeyword は、Google、Yahoo!、bing、MSN、goo からの流入や、サイト内検索（パラメータが query または search）の際に、検索されたキーワードをそのまま出力します。</p>
<p>モディファイアは特にありません。</p>
<h2>サンプル</h2>
<p>さっそく&nbsp;MTReferralKeywords をシンプルな例で試してみましょう。</p>
<p>インデックステンプレートに次のテンプレートを書きます。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />「<strong>&lt;$mt:ReferralKeyword$&gt;</strong>」で検索<br /><strong>&lt;mt:ReferralKeywords&gt;</strong><br />&lt;mt:If name="__first__"&gt;&lt;ul&gt;&lt;/mt:If&gt;<br />&nbsp; &lt;li&gt;&lt;mt:Var name="keyword"&gt;&lt;/li&gt;<br />&lt;mt:If name="__last__"&gt;&lt;/ul&gt;&lt;/mt:If&gt;<br /><strong>&lt;/mt:ReferralKeywords&gt;</strong><br />&lt;/mt:DynamicMTML&gt;</pre>
<p>Google で「はじめて dynamicmtml」と検索すると運良くこのインデックステンプレートのページが表示されました。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-27.png" alt="startup-dymtml-27" width="500" height="154" /></p>
<p>ここからアクセスすると次のように表示され、ちゃんとキーワードが出力されていることが分かります。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-28.png" alt="startup-dymtml-28" width="500" height="282" /></p>
<p>MTReferralKeywords タグについて分かったところで、今回の記事のコードを見ていきましょう。</p>
<h2>完成したコード</h2>
<p>今回の記事の完成版のコードは次のようになります。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;$mt:SetVar name="keywords_length" value="0"$&gt;<br />&lt;mt:ReferralKeywords&gt;<br />  &lt;$mt:SetVar name="keywords_length" op="++"$&gt;<br />&lt;/mt:ReferralKeywords&gt;<br /><br />&lt;mt:ReferralKeywords&gt;<br />  &lt;$mt:Var name="__counter__" setvar="ref_counter"$&gt;<br />  &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />    &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />    &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />      &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;$mt:EntryBody$&gt;&lt;/li&gt;<br />    &lt;/mt:SetVarBlock&gt;<br />  &lt;/mt:SearchEntries&gt;<br />  &lt;mt:If name="ref_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries" sort_by="key reverse"&gt;<br />      &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;h3&gt;「&lt;$mt:ReferralKeyword$&gt;」に関連するブログ記事&lt;/h3&gt;<br />        &lt;ul&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" le="$limit"&gt;<br />        &lt;mt:Var name="__value__" highlightingsearchword="match-words"&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" eq="$limit"&gt;<br />        &lt;/ul&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />  &lt;/mt:If&gt;<br />&lt;/mt:ReferralKeywords&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>以下、コードを分解して解説していきますが、このコードは、「<a href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html">はじめての DynamicMTML #07 - MTSearchEntries (3) MTSplitVars を組み合わせて複数ワードのOR検索</a>」のコードがベースになっていますので、詳細は、そちらの記事もご確認ください。</p>
<p>このテンプレートで出力したブログ記事に、Google で「はじめて dynamicmtml」というキーワードで検索して訪れると次のようになります。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-30.png" alt="startup-dymtml-30" width="500" height="472" /></p>
<p>普通にアクセスすると次のようになにも表示されません。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-31.png" alt="startup-dymtml-31" width="500" height="220" /></p>
<p>ではテンプレートを解説していきます。</p>
<h2>MTSearchEntries に渡す変数をセットする</h2>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;</pre>
<p>最初に MTSearchEntries に渡すための変数をセットしています。スタティックパブリッシングで出せるものはスタティックで処理します。</p>
<h2>検索ワードの数を取得する</h2>
<p>以下、MTDynamicMTML タグの中身になります。</p>
<pre>&lt;$mt:SetVar name="keywords_length" value="0"$&gt;<br />&lt;mt:ReferralKeywords&gt;<br />  &lt;$mt:SetVar name="keywords_length" op="++"$&gt;<br />&lt;/mt:ReferralKeywords&gt;</pre>
<p>その最初で、一度 MTReferralKeywords を回して検索ワードの数を取得しています。</p>
<p>MTReferralKeywords の手前で変数&nbsp;keywords_length を初期化（=0）し、MTReferralKeywords の中でインクリメント（+1）しています。</p>
<h2>MTSearchEntries で検索ワードに関連するブログ記事を検索する</h2>
<p>以下、MTReferralKeywords タグの中身になります。まずは上段を解説します。</p>
<h3>MTSearchEntries でブログ記事を検</h3>
<pre>&lt;mt:ReferralKeywords&gt;<br />  &lt;$mt:Var name="__counter__" setvar="ref_counter"$&gt;<br />  &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />    &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />    &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />      &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;$mt:EntryBody$&gt;&lt;/li&gt;<br />    &lt;/mt:SetVarBlock&gt;<br />  &lt;/mt:SearchEntries&gt;<br />  <br />（下段は後述）<br /><br />&lt;/mt:ReferralKeywords&gt;</pre>
<p>最初に変数&nbsp;ref_counter に&nbsp;MTReferralKeywords の特別な変数を代入しています。この理由は「<a href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html#split_counter">特別な変数の初期化</a>」をご覧ください。</p>
<p>※実はこの&nbsp;MTReferralKeywords では、__counter__ がちゃんと局所化されているので、この変数の初期化不要なのですが、この方が見やすいと思うので入れることにしました。</p>
<p>次に、MTSearchEntries で検索ワードを含むブログ記事を検索し、公開日時をキーとしたハッシュ変数 entries にセットしていきます。</p>
<p>MTReferralKeywords では、変数 keyword に検索ワードがセットされているので、それをそのまま MTSearchEntries に渡しています（query="$keyword"）。</p>
<p>MTSearchEntries タグの詳細は<a title="MTSearchEntries の詳細を見る" href="http://www.tinybeans.net/blog/2011/12/17-dynamicmtml-05.html">こちら</a>をご覧ください。</p>
<p>ちなみに、ここの中で「&lt;br /&gt;&lt;$mt:EntryBody$&gt;」と言う部分がありますが、これはサンプルサイトでキーワードが含まれるのが本文だったので便宜上入れてあるだけで特に意味はありません。</p>
<h3>MTLoop で値の取り出し</h3>
<p>続いて下段の説明です。実際に HTML を出力するのはこの部分です。</p>
<pre>&lt;mt:ReferralKeywords&gt;<br />  <br />  （上段は前述）<br /><br />  &lt;mt:If name="ref_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries" sort_by="key reverse"&gt;<br />      &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;h3&gt;「&lt;$mt:ReferralKeyword$&gt;」に関連するブログ記事&lt;/h3&gt;<br />        &lt;ul&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" le="$limit"&gt;<br />        &lt;mt:Var name="__value__" highlightingsearchword="match-words"&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" eq="$limit"&gt;<br />        &lt;/ul&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />  &lt;/mt:If&gt;<br />&lt;/mt:ReferralKeywords&gt;</pre>
<p>下段は、MTIf タグによって、MTReferralKeywords のループの回数（変数 ref_counter）がキーワードの数（変数 keywords_length）と一致するとき、つまり、MTReferralKeywords の最後のループのときだけ実行されるようにしています。</p>
<p>そして、MTLoop タグで、変数 entries から key（ここでは公開日）を基準に降順（reverse）で値（__value__）を取り出しています。</p>
<p>MTLoopの中では、__counter__ の値と上段の初めの方でセットした変数 limit の値を比較して個数を制御しています。</p>
<p>これで完成です。</p>
<h2 id="highlightingsearchword">highlightingsearchword で検索ワードをハイライト</h2>
<p>MTLoop の中で変数の値を取り出すところで highlightingsearchword というモディファイア付けています。</p>
<pre>&lt;mt:Var name="__value__" <strong>highlightingsearchword="match-words"</strong>&gt;</pre>
<p>highlightingsearchword は、Google、Yahoo!、bing、MSN、goo からの流入や、サイト内検索（パラメータが query または search）の際に、検索されたキーワードを、モディファイアで指定した値の class を付けた strong タグでマークアップするモディファイアです。</p>
<p>この&nbsp;highlightingsearchword モディファイアは、ファンクションタグ・ブロックタグの両方に付けることができます。</p>
<p>仮に「はじめて dynamicmtml」という検索ワードからの流入だとして、以下のコードはいずれも同じように出力されます。なお、ブログ記事本文には「はじめての DynamicMTML」とだけ書いてあるとします。もちろん、どれも DynamicMTML でダイナミックに出力するという前提です。</p>
<pre>&lt;mt:DynamicMTML&gt;<br />==== ここから ====&lt;br /&gt;<br />&lt;$mt:SetVar name="sample1" value="はじめての DynamicMTML"$&gt;<br />(1) &lt;$mt:Var name="sample1" highlightingsearchword="1"$&gt;&lt;br /&gt;<br /><br />(2) &lt;$mt:EntryBody highlightingsearchword="1"$&gt;&lt;br /&gt;<br /><br />(3) &lt;mt:Unless highlightingsearchword="1"&gt;&lt;$mt:EntryBody$&gt;&lt;/mt:Unless&gt;<br />==== ここまで ====<br />&lt;/mt:DynamicMTML&gt;&nbsp;</pre>
<p>これをブログ記事アーカイブテンプレートに貼り付けると、以下のように出力されます。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-29.png" alt="startup-dymtml-29" width="215" height="178" /></p>
<p>ちなみに、このサンプルで見ても分かるように、highlightingsearchword に 1 を設定すれば、デフォルトの「<span>search-word</span>」という class が付きます。</p>
<h2>AND検索の場合</h2>
<p>今回の記事は OR 検索の例でしたが、AND 検索にしたい場合は、「<a href="http://www.tinybeans.net/blog/2012/01/06-dynamicmtml-08.html">はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索</a>」のコードを今回の記事を参考に書き換えればOKです。</p>
<p>最後に、AND 検索にした場合のコードも掲載しておきます。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;$mt:SetVar name="keywords_length" value="0"$&gt;<br />&lt;mt:ReferralKeywords&gt;<br />  &lt;$mt:SetVar name="keywords_length" op="++"$&gt;<br />&lt;/mt:ReferralKeywords&gt;<br />
&lt;mt:ReferralKeywords&gt;<br />&nbsp; &lt;$mt:Var name="__counter__" setvar="ref_counter"$&gt;<br />&nbsp; &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />&nbsp;&nbsp;&nbsp; <strong>&lt;mt:If name="ref_counter" eq="1"&gt;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;br /&gt;&lt;$mt:EntryBody$&gt;&lt;/li&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:SetVarBlock&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;$mt:SetVar name="match_count" key="$date" value="1"$&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp; &lt;mt:Else&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="entries" key="$date"&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="match_count" key="$date" op="++"$&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;</strong><br />&nbsp; &lt;/mt:SearchEntries&gt;<br />&nbsp; &lt;mt:If name="ref_counter" eq="$keywords_length"&gt;<br />    <strong>&lt;mt:Loop name="entries"&gt;</strong><br /><strong> &lt;mt:If name="match_count" key="$__key__" eq="$keywords_length"&gt;</strong><br /><strong> &lt;$mt:SetVar name="result" key="$__key__" value="$__value__"$&gt;</strong><br /><strong> &lt;/mt:If&gt;</strong><br /><strong> &lt;/mt:Loop&gt;</strong><br />&nbsp;&nbsp;&nbsp; &lt;mt:Loop name="<strong>result</strong>" sort_by="key reverse"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;h3&gt;「&lt;$mt:ReferralKeyword$&gt;」に関連するブログ記事&lt;/h3&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" le="$limit"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:Var name="__value__" highlightingsearchword="match-words"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" eq="$limit"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mt:Loop&gt;<br />&nbsp; &lt;/mt:If&gt;<br />&lt;/mt:ReferralKeywords&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>以上です。</p>]]>
    </content>
</entry>

<entry>
    <title>Custom Field GUI Utility の conf.ini ジェネレーターを作ってみた</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/17-210556.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1550</id>

    <published>2012-01-17T12:05:56Z</published>
    <updated>2012-01-23T03:47:04Z</updated>

    <summary>Custom Field GUI Utility の設定ファイルを書き出す「conf.ini ジェネレーター（BETA）」というのを作ってみました。少しは設定ファイルを作るのが楽になるでしょうか。 あ...</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" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-3.html">Custom Field GUI Utility</a> の設定ファイルを書き出す「<a href="http://www.tinybeans.net/blog/download/wp-plugin/cfgu/make-conf.html">conf.ini ジェネレーター（BETA）</a>」というのを作ってみました。少しは設定ファイルを作るのが楽になるでしょうか。</p>
<p>あまり動作検証してないので適当に使ってみてください！</p>
<p>明日からまた、MT に戻ります。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Custom Field GUI Utility 3.2 リリース - WordPress 3.3 に対応</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/16-235946.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1545</id>

    <published>2012-01-16T14:59:46Z</published>
    <updated>2012-01-17T08:59:39Z</updated>

    <summary>WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.2」をリリースしました。 主な変更点は以下の通りです。 投稿タイプごとに設定フ...</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</a>」をリリースしました。 主な変更点は以下の通りです。</p>
<ul>
<li>投稿タイプごとに設定ファイルを変えられるようにしました。</li>
<li>カスタムフィールドのボックス名（「カスタムフィールド」というタイトルバーです）も変更できるようにしました。</li>
<li>オリジナルの必須チェックを廃止し、「<a href="http://5509.me/log/exvalidation">exValidation</a>」を同梱しました。must オプションで簡単に必須項目にすることもできますし、validation オプションで細かく設定することもできます。<a href="http://5509.me/"><br /></a>いつも大変お世話になっている <a href="http://5509.me/">5509</a> さんに深くお礼申し上げます。</li>
<li>textfield、imagefield、filefield に placeholder を追加できるようにしました。</li>
<li>細かい話ですが、imagefield のアップローダーの「&times;」をクリックしなくてもカスタムフィールドに値が入るようにしました。</li>
<li>PHP ファイルを１つにまとめました、すいません。</li>
</ul>
<p>詳細は以下のページをご確認ください。がんばって書き換えました。</p>
<ul>
<li><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-3.html">Custom Field GUI Utility 3.2</a></li>
</ul>
<p>なお、今後は一部有料化を検討しています。たぶん 3,000円くらいですが、「有料化すると会社の手続き的に使いにくくなるな&minus;」という声もあるので、それも含めて検討したいと思います（って前にも書いたような&hellip;）。</p>
<p>さて、また MT の人に戻りたいと思います。不具合がないことを祈ります&hellip;</p>]]>
        
    </content>
</entry>

<entry>
    <title>シェルスクリプトで自動的にデータベースをバックアップ</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/16-145505.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1548</id>

    <published>2012-01-16T05:55:05Z</published>
    <updated>2012-01-16T07:19:41Z</updated>

    <summary>シェルスクリプトと cron で自動的にデータベースをバックアップする方法を勉強しました。サーバー初心者です。 サーバーは、CentOS 5.7 です。 参考サイトは「mysqldumpとcronでM...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Server" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="centos" label="CentOS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.tinybeans.net/blog/">
        <![CDATA[<p>シェルスクリプトと cron で自動的にデータベースをバックアップする方法を勉強しました。サーバー初心者です。</p>
<p>サーバーは、CentOS 5.7 です。</p>
<p>参考サイトは「<a href="http://linuxserver.jp/%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89/DB/MySQL/mysqldump%E3%81%A8cron%E3%81%A7%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97.php">mysqldumpとcronでMySQLを自動バックアップする | Linuxで自宅サーバ構築</a>」です。</p>]]>
        <![CDATA[<p>まず、バックアップファイルを保存するディレクトリを作っておきます。</p>
<pre>mkdir -p /backup/data/mysql</pre>
<p>&nbsp;mkdir コマンドに -p オプションを付けると、サブディレクトリもまとめて作れます。</p>
<p>次に、バックアップを自動的にとる backup_mysql.sh というシェルスクリプトを作り、/usr/local/bin に保存します。</p>
<pre>vi /usr/local/bin/backup_mysql.sh</pre>
<pre>#!/bin/sh<br /><br /># バックアップする関数を定義<br />function bk_mysql() {<br />  # 引き数の覚え書き<br />&nbsp; # $1 : database name（データベース名）<br />&nbsp; # $2 : password（データベースのパスワード）<br />&nbsp; # $3 : period（保存期間）<br />&nbsp; # $4 : backup path（バックアップファイルを保存するディレクトリ）<br /><br />  # 現在年月日を「%y%m%d」の形（yymmdd）で取得<br />&nbsp; CUR_DATE=`date +%y%m%d`<br /><br />  # 保存期間で指定した日数前の年月日を取得<br />&nbsp; OLD_DATE=`date --date "$3 days ago" +%y%m%d`<br /><br />  # MySQLから指定したデータベースをダンプする<br />&nbsp; mysqldump --opt --password=$2 $1 &gt; $4/${CUR_DATE}_$1.sql<br /><br />  # バックアップしたファイルを管理者だけ触れる権限にする<br />&nbsp; chmod 600 $4/${CUR_DATE}_$1.sql<br /><br />  # 指定した保存期間前のバックアップファイルを削除する<br />&nbsp; rm -f $4/${OLD_DATE}_$1.sql<br />}<br /><br /># 関数bk_mysql に引き数（$1〜$4）を渡して実行します。<br />bk_mysql データベース名 パスワード 7 /backup/data/mysql</pre>
<p>エスケープキーを押して、:wq で保存します。</p>
<p>作成した backup_mysql.sh に実行権限を与えます。</p>
<pre>chmod 700 /usr/local/bin/backup_mysql.sh</pre>
<p>次に、cron に登録します。</p>
<pre>crontab -e</pre>
<pre>0 3 * * * /usr/local/bin/backup_mysql.sh</pre>
<p>エスケープキーを押して、「:x」で保存（変更があったら保存）します。これで毎日午前3時に backup_mysql.sh が実行され、データベースが保存されます。</p>
<p>ご利用は自己責任で&hellip;</p>]]>
    </content>
</entry>

<entry>
    <title>Git でローカルに作ったブランチをリモートに反映させる</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/11-131955.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1540</id>

    <published>2012-01-11T04:19:55Z</published>
    <updated>2012-01-11T04:21:55Z</updated>

    <summary><![CDATA[すごく基本的なことですが、どうしてもド忘れしてしまうのでメモしておきます。 まず、ローカルリポジトリに&nbsp;hoge という名前のブランチを追加するときは、 git checkout -b ho...]]></summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Git" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="git" label="Git" 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>まず、ローカルリポジトリに&nbsp;hoge という名前のブランチを追加するときは、</p>
<pre>git checkout -b hoge</pre>
<p>で、このブランチをリモートリポジトリにも追加する場合は、</p>
<pre>git push origin hoge</pre>
<p>となります。</p>
<p>これ以降は、master ブランチにチェックアウトしている状態で、</p>
<pre>git push</pre>
<p>すれば、master ブランチも、hoge ブランチも、すべてのブランチの変更が push されます。</p>
<p>ここに書いたから、もう忘れないな。っていうか、こんな単純なことをどうして覚えられないんだろう&hellip;</p>]]>
        
    </content>
</entry>

<entry>
    <title>はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/06-dynamicmtml-08.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1541</id>

    <published>2012-01-06T01:12:21Z</published>
    <updated>2012-01-23T13:25:41Z</updated>

    <summary>前回は MTSearchEntries タグと MTSplitVars タグを使って複数のキーワードを OR 検索する方法を紹介しました。 今回は、AND 検索をする方法を紹介します。なお、前回の O...</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><a href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html">前回</a>は MTSearchEntries タグと MTSplitVars タグを使って複数のキーワードを OR 検索する方法を紹介しました。</p>
<p>今回は、AND 検索をする方法を紹介します。なお、前回の OR 検索の記事をお読みいただいている前提で進めます。</p>
<h2>今回のテンプレートの仕様</h2>
<p>AND 検索以外は、前回の記事と同様です。</p>
<ul>
<li>検索ワードはキーワード欄にカンマ区切りで指定する</li>
<li>複数のキーワードは AND 検索</li>
<li>現在のブログ内のブログ記事から検索する</li>
<li>最新5件を表示する</li>
<li>現在のブログ記事を除く</li>
</ul>]]>
        <![CDATA[<h2>結果をイメージするために</h2>
<p>今回のサンプルに使ったブログには、次のような10本のブログ記事が公開されているとします。</p>
<p>この中で「<strong>つめ</strong>」「<strong>dynamicmtml</strong>」という２つのキーワードを両方含むブログ記事を、最大５本リストアップするようにします。「つめ」というキーワードは、普通ではあり得ませんが、結果を意図的に操作するためですので気にしないでください。</p>
<pre>ブログ記事#10 : これはブログ「はじめての <span style="color: #008000;">DynamicMTML</span> ブログ」の10番目の記事です。<br />ブログ記事#09 : これはブログ「はじめての <span style="color: #008000;">DynamicMTML</span> ブログ」の9番目の記事です。<br />ブログ記事#08 : これはブログ「はじめての <span style="color: #008000;">DynamicMTML</span> ブログ」の8番目の記事です。<br />ブログ記事#07 : これはブログ「はじめての <span style="color: #008000;">DynamicMTML</span> ブログ」の7番目の記事です。<br />ブログ記事#06 : これはブログ「はじめての <span style="color: #008000;">DynamicMTML</span> ブログ」の6番目の記事です。<span style="color: #ff0000;"><br />ブログ記事#05</span> : これはブログ「はじめての <span style="color: #ff0000;">DynamicMTML</span> ブログ」の５<span style="color: #ff0000;">つめ</span>の記事です。<span style="color: #ff0000;"><br />ブログ記事#04</span> : これはブログ「はじめての <span style="color: #ff0000;">DynamicMTML</span> ブログ」の４<span style="color: #ff0000;">つめ</span>の記事です。<br />ブログ記事#03 : ３つ目の記事です。<span style="color: #ff0000;"><br />ブログ記事#02</span> : これはブログ「はじめての <span style="color: #ff0000;">DynamicMTML</span> ブログ」の２<span style="color: #ff0000;">つめ</span>の記事です。<span style="color: #ff0000;"><br />ブログ記事#01</span> : これはブログ「はじめての <span style="color: #ff0000;">DynamicMTML</span> ブログ」の１<span style="color: #ff0000;">つめ</span>の記事です。</pre>
<p>赤字になっているブログ記事の「01, 02, 04, 05」が検索結果になります。</p>
<h2>完成したコード</h2>
<p>今回の記事の完成版のコードは次のようになります。強調されている部分が、前回の OR 検索との変更点になります。</p>
<p>※2012-01-23 MTLoop のところを少し修正しました。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />keywords=&lt;$mt:EntryKeywords$&gt;<br />keywords_length=&lt;$mt:EntryKeywords regex_replace="/[^,]|\s/g","" cat="," count_characters="1"$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;mt:SplitVars name="keyword" text="$keywords"&gt;<br />&nbsp; &lt;$mt:Var name="__counter__" setvar="split_counter"$&gt;<br />&nbsp; &lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;<br />&nbsp; &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />&nbsp;&nbsp;&nbsp; <strong>&lt;mt:If name="split_counter" eq="1"&gt;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:SetVarBlock&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;$mt:SetVar name="match_count" key="$date" value="1"$&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp; &lt;mt:Else&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="entries" key="$date"&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="match_count" key="$date" op="++"$&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;</strong><br />&nbsp; &lt;/mt:SearchEntries&gt;<br />&nbsp; &lt;mt:If name="split_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries"&gt;<br />      &lt;mt:If name="match_count" key="$__key__" eq="$keywords_length"&gt;<br />        &lt;$mt:SetVar name="result" key="$__key__" value="$__value__"$&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mt:Loop name="result" sort_by="key reverse"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" eq="1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" le="$limit"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:Var name="__value__"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mt:If name="__counter__" eq="$limit"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mt:If&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mt:Loop&gt;<br />&nbsp; &lt;/mt:If&gt;<br />&lt;/mt:SplitVars&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>以下、変更されている部分を見ていきます。</p>
<h2>MTSplitVars のループの１回目とそれ以外で分岐する</h2>
<pre><strong>&lt;mt:If name="split_counter" eq="1"&gt;</strong><br />&nbsp; &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;<br />&nbsp; &lt;/mt:SetVarBlock&gt;<br />&nbsp; <strong>&lt;$mt:SetVar name="match_count" key="$date" value="1"$&gt;</strong><br /><strong>&lt;mt:Else&gt;</strong><br /><strong>&nbsp; &lt;mt:If name="entries" key="$date"&gt;</strong><br /><strong>&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="match_count" key="$date" op="++"$&gt;</strong><br /><strong>&nbsp; &lt;/mt:If&gt;</strong><br /><strong>&lt;/mt:If&gt;</strong></pre>
<p>MTSearchEntries タグの中で、MTSplitVars のループの１回目とそれ以外とで動作を分岐します。変数 split_counter には、MTSplitVars タグのループの回数がセットされています（1から始まる）。この split_counter は、MTSplitVars タグの先頭で初期化してある必要があります（<a href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html#split_counter">前回記事参照</a>）。</p>
<h3>最初のループ（１つめのキーワード）</h3>
<p>MTSplitVars タグの最初のループ、つまり１つめのキーワードについては、そのまま MTSearchEntries を回しています。</p>
<p>ここでは、投稿日時（年月日時分秒）がキーであるハッシュ変数 entries に値を入れていきます。今回は AND 検索なので、最終的な検索結果は、<strong>この変数 entries から絞り込まれることになります</strong>。</p>
<p>さらに、同様に投稿日時がキーであるハッシュ変数 <strong>match_entries</strong> の各値に 1 をセットします。この entries と match_entries のキーを同じにしておくことがポイントとなります（後述）。</p>
<p>※これ以降の解説を読むと、ここでセットするキーは、投稿日時よりもエントリーID の方がしっくりくるのですが、最終的に出力するときに、投稿日時でソートするためにそのようにしています。</p>
<h3>２回目以降のループ（２つめのキーワード以降）</h3>
<p>MTSplitVars タグの２回目のループ、つまり２つめのキーワード以降で、１つめのキーワードの検索結果の中にそのブログ記事があるかどうかを調べます。</p>
<pre>&nbsp; &lt;mt:If name="entries" key="$date"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;$mt:SetVar name="match_count" key="$date" op="++"$&gt;<br />&nbsp; &lt;/mt:If&gt;<br /><strong></strong></pre>
<p>もし該当するブログ記事が既に変数 entries にセットされているのであれば、変数 match_entries の値をインクリメント（１増やす）します。</p>
<p>つまり、この変数 match_entries の各キーに対応する値が、キーワードにマッチした回数ということになります。</p>
<h2>キーワードにマッチした回数がキーワード数と同じものを出力する</h2>
<p>最後に、MTLoop を2回まわしています。</p>
<p>1つめの MTLoop で変数 entries について、ループ中のブログ記事のキーワードにマッチした回数がキーワード数と同じもの、つまりすべてのキーワードにマッチしたものだけを、ハッシュ変数 result にセットします。このとき、ハッシュ変数 result の key と value は、元のハッシュ変数 entries の $__key__ と $__value__ を引き継ぎます。</p>
<pre>&lt;mt:Loop name="entries"&gt;<br />  &lt;mt:If name="match_count" key="$__key__" eq="$keywords_length"&gt;<br />    &lt;$mt:SetVar name="result" key="$__key__" value="$__value__"$&gt;<br />  &lt;/mt:If&gt;<br />&lt;/mt:Loop&gt;</pre>
<p>ここで見て分かるように、entries と match_entries のキーを同じにしておけば、entries のループの時に、キー（ __key__ ）をそのまま match_entries のキーとして渡すことで、そのブログ記事のマッチ回数を調べることができます。</p>
<p>このマッチ回数がキーワード数（keyword_length : 先頭の MTSetVars でセット。<a href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html#keywords_length">こちらを参照</a>）と同じであれば AND 検索の結果に該当（すべてのキーワードがマッチ）することになります。</p>
<p>そして、2つめの MTLoop で、先頭の MTSetVars でセットした limit の数だけ出力します。</p>
<p>以上です。複雑ですね。</p>]]>
    </content>
</entry>

<entry>
    <title>2012年 今年もよろしくお願いいたします - をDynamicMTMLで期間限定で表示する</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2012/01/01-082036.html" />
    <id>tag:www.tinybeans.net,2012:/blog//1.1542</id>

    <published>2011-12-31T23:20:36Z</published>
    <updated>2011-12-31T23:24:22Z</updated>

    <summary>1年間ってあっという間ですね。 昨年は日本が一変してしまった年でした。今年も引き続き、多くの方々にとって、色々なことで大変な１年だと思いますが、まわりの人と協力しあい、この厳しい時代を乗り越えて行けれ...</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>1年間ってあっという間ですね。</p>
<p>昨年は日本が一変してしまった年でした。今年も引き続き、多くの方々にとって、色々なことで大変な１年だと思いますが、まわりの人と協力しあい、この厳しい時代を乗り越えて行ければいいなと思います。皆様のもとに、少しでも多くの幸せが訪れますように、切に願います。</p>
<p>2012年も、かたつむりくんのWWW をよろしくお願いいたします！</p>
<p>さて、2011年は、あいかわらず Movable Type にどっぷりつかった年でした。そして『<a href="http://www.amazon.co.jp/gp/product/4839937311/ref=as_li_ss_tl?ie=UTF8&amp;tag=tinybeans-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4839937311">Movable Type 5.1　プロの現場の仕事術</a>』の執筆に参加させていただけたことは、この上ない喜びでした。</p>
<p>今年も引き続き、Movable Type にどっぷりつかっていこうと思います。Love MT、Love 再構築、Love DynamicMTML、Love PowerCMS といった感じです。</p>
<p>また、2011年は 57 本のブログ記事を書いていました。だいたい１週間に１本ちょっとといったペースということになります。ちょっと少ないかな&hellip;</p>
<p>まだまだ勉強したいことは山ほどあります。今年は 100 本くらいの記事をアウトプットできるようにがんばりたいと思います。</p>
<p>では、新年１本目のこの記事は、今年も MT でいくぞ、という意思表示も含めて、「DynamicMTMLで期間限定でメッセージを表示する方法」を紹介します。</p>]]>
        <![CDATA[<h2>DynamicMTMLで期間限定で表示する</h2>
<p>例えば、1月3日まで新年の挨拶を表示させたい、というときは次のように書きます。</p>
<pre>&lt;MTDynamicMTML&gt;<br />&lt;$mt:Date format="%Y%m%d" setvar="today"$&gt;<br />&lt;mt:If name="today" ge="20120101"&gt;<br />  &lt;mt:If name="today" le="20120103"&gt;<br />    2012年1月1日から1月3日までのメッセージ<br />  &lt;mt:Else&gt;<br />    通常のメッセージ<br />  &lt;/mt:If&gt;<br />&lt;mt:Else&gt;<br />  通常のメッセージ<br />&lt;/mt:If&gt;<br />&lt;/MTDynamicMTML&gt;</pre>
<p>全体を MTDynamicMTML タグで囲んでダイナミックに処理されるようにして、そのテンプレートの構築日（MTDate）を変数 today にセットし、その日付で条件分岐させます。簡単ですね。</p>
<p>以上です。このネタ、昨年末に書けば良かったのに&hellip;と思います。</p>
<p>ではでは、今年もよろしくお願いいたします。</p>]]>
    </content>
</entry>

<entry>
    <title>はじめての DynamicMTML #07 - MTSearchEntries (3) MTSplitVars を組み合わせて複数ワードのOR検索</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2011/12/28-dynamicmtml-07.html" />
    <id>tag:www.tinybeans.net,2011:/blog//1.1539</id>

    <published>2011-12-27T23:51:51Z</published>
    <updated>2012-01-19T21:33:58Z</updated>

    <summary>今回は、前回に引き続き MTSeachEntries についてと、MTSplitVars タグの使い方です。 MTSearchEntries は基本的には１つの検索ワードで検索する仕様になっています。...</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>今回は、<a href="http://www.tinybeans.net/blog/2011/12/21-dynamicmtml-06.html">前回</a>に引き続き MTSeachEntries についてと、MTSplitVars タグの使い方です。</p>
<p>MTSearchEntries は基本的には１つの検索ワードで検索する仕様になっています。<a href="http://www.tinybeans.net/blog/2011/12/21-dynamicmtml-06.html">前回</a>のサンプルでも、キーワード欄に入力した１つのキーワードを、動的に検索する方法を紹介しました。</p>
<p>今回は、MTSearchEntries に「 MTSplitVars 」というブロックタグを組み合わせて複数の検索ワードで検索してみます。複数のキーワードは、キーワード欄にカンマ区切りで設定します。</p>
<h2>今回のテンプレートの仕様</h2>
<ul>
<li>検索ワードはキーワード欄にカンマ区切りで指定する</li>
<li>複数のキーワードは OR 検索とする（AND 検索は次回）</li>
<li>現在のブログ内のブログ記事から検索する</li>
<li>最新5件を表示する</li>
<li>現在のブログ記事を除く</li>
</ul>]]>
        <![CDATA[<h2>完成したコード</h2>
<p>今回の記事の完成版のコードは次のようになります。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />keywords=&lt;$mt:EntryKeywords$&gt;<br />keywords_length=&lt;$mt:EntryKeywords regex_replace="/[^,]|\s/g","" cat="," count_characters="1"$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;mt:SplitVars name="keyword" text="$keywords"&gt;<br />  &lt;$mt:Var name="__counter__" setvar="split_counter"$&gt;<br />  &lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;<br />  &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />    &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />    &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />      &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;<br />    &lt;/mt:SetVarBlock&gt;<br />  &lt;/mt:SearchEntries&gt;<br />  &lt;mt:If name="split_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries" sort_by="key reverse"&gt;<br />      &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;ul&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" le="$limit"&gt;<br />        &lt;mt:Var name="__value__"&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" eq="$limit"&gt;<br />        &lt;/ul&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />  &lt;/mt:If&gt;<br />&lt;/mt:SplitVars&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<h2>MTSplitVars を使う前に</h2>
<p>2011年12月27日現在、<a href="https://github.com/alfasado/DynamicMTML">Github に公開されている DynamicMTML</a> の MTSplitVars には２つほど不具合があります。その不具合を修正したファイルを用意しました。</p>
<ul>
<li><a href="http://www.tinybeans.net/blog/files/block.mtsplitvars.php.zip">block.mtsplitvars.php.zip</a></li>
</ul>
<p>このファイルをダウンロードして解凍し、次の場所にある同ファイルと置き換えてください。差し替えないと、今回の記事の内容はうまく動きません。</p>
<ul>
<li class="file">/addons/DynamicMTML.pack/php/tags/block.mtsplitvars.php</li>
</ul>
<h2>MTSplitVars の使い方</h2>
<p>MTSplitVars タグは、text モディファイアで指定した文字列を delimiter モディファイアで指定した文字列で分割して、１つずつループで出力するブロックタグです。</p>
<p>まずは&nbsp;MTSplitVars のサンプルを見てみましょう。最もシンプルな例です。</p>
<pre>&lt;mt:SplitVars text="MT,MTOS,DynanicMTML"&gt;<br />&lt;mt:If name="__first__"&gt;&lt;ul&gt;&lt;/mt:If&gt;<br />  &lt;li&gt;&lt;$mt:Var name="value"$&gt;&lt;/li&gt;<br />&lt;mt:If name="__last__"&gt;&lt;/ul&gt;&lt;/mt:If&gt;<br />&lt;/mt:SplitVars&gt;</pre>
<p>出力結果は次のようになります。</p>
<pre>&lt;ul&gt;<br />  &lt;li&gt;MT&lt;/li&gt;<br />  &lt;li&gt;MTOS&lt;/li&gt;<br />  &lt;li&gt;DynanicMTML&lt;/li&gt;<br />&lt;/ul&gt;</pre>
<p>このように、text モディファイアにカンマ区切りのテキストを設定すると、カンマで分割された値を value という変数名で順次取り出すことができます。上記のコードを、デフォルト設定のままのモディファイアも省略せずに書くと次のようになります。</p>
<pre>&lt;mt:SplitVars name="value" text="MT,MTOS,DynanicMTML" delimiter="," glue=""&gt;<br />&lt;mt:If name="__first__"&gt;&lt;ul&gt;&lt;/mt:If&gt;<br />  &lt;li&gt;&lt;$mt:Var name="value"$&gt;&lt;/li&gt;<br />&lt;mt:If name="__last__"&gt;&lt;/ul&gt;&lt;/mt:If&gt;<br />&lt;/mt:SplitVars&gt;</pre>
<p>設定できるモディファイアは以下の通りです。</p>
<h2>MTSplitVars のモディファイアなど</h2>
<h3>name</h3>
<p>MTSplitVars タグのループ内で、分割された１つ１つの値を取り出す変数名を指定します。デフォルトは&nbsp;value です。</p>
<p>上記のサンプルでは、デフォルトのままなので、MTVar name="value" で値を取り出しています。</p>
<h3>delimiter</h3>
<p>区切り文字を指定します。デフォルトはカンマです。</p>
<h3>text</h3>
<p>分割するテキストを指定します。デフォルトはカンマ区切りのテキストですが、delimiter モディファイアで指定した値で区切ったテキストを指定できます。</p>
<h3>glue</h3>
<p>1回のループを繋ぎ合わせる文字列を指定します。</p>
<h3>MTVar にセットされる値</h3>
<p>MTSplitVars タグ内では、以下の値が MTVar にセットされます。</p>
<ul>
<li>__first__: ループの最初</li>
<li>__counter__: ループの何回目か</li>
<li>__odd__: 奇数回目の出力</li>
<li>__even__: 偶数回目の出力</li>
<li>__last__: ループの最後</li>
</ul>
<h2>MTSplitVars でキーワードを順次取り出す</h2>
<p>MTSplitVars の使い方が分かったところで、さっそくテンプレートを書いていきましょう。</p>
<p>まずは、キーワード欄に保存されているカンマ区切りの文字列を、カンマで分割して順次取り出すようにします。DynamicMTML、ブログ記事アーカイブテンプレートでの利用を前提にします。</p>
<p>このコードは、次のようになります。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />keywords=&lt;$mt:EntryKeywords$&gt;<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;mt:SplitVars name="keyword" text="$keywords"&gt;<br /> &lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;<br /> &lt;$mt:Var name="keyword"$&gt;&lt;br /&gt;<br />&lt;/mt:SplitVars&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>以下、コードを分解して解説します。</p>
<p>まず、上段で、MTML タグを使って MTSetVars タグを出力します。その中で、カンマ区切りで入力したキーワード欄の値を keywords という変数にセットします。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />keywords=&lt;$mt:EntryKeywords$&gt;<br />&lt;$mtml tag='/mt:SetVars'$&gt;</pre>
<p>このように、MTML タグで&nbsp;MTSetVars タグを出力すれば、変数をセットするところに MT タグが使えるので便利です。MTML タグについては「<a href="http://www.tinybeans.net/blog/2011/12/02-dynamicmtml-03.html#mtml">MTML タグで MT タグ自体を出力する方法</a>」を参照してください。</p>
<p>下段は、MTDynamicMTML タグで囲み、ダイナミックに処理されるようにします。</p>
<p>上段でセットした変数 keywords の値を MTSplitVars の text モディファイアに渡し（text="$keywords"）、順次 keyword という変数名（name="keyword"）で取り出します。</p>
<pre>&lt;mt:SplitVars name="keyword" text="$keywords"&gt;</pre>
<p>MTSplitVars 内の１行目で、カンマで分割されたキーワードの前後に余分なスペースが含まれていた場合は取り除き、キーワード中のスペースは任意の１文字を示す「%」に置換しています。</p>
<pre>&lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;</pre>
<p>MTSplitVars 内の２行目の「&lt;$mt:Var name="keyword"$&gt;&lt;br /&gt;」は、動作確認のためのものです。</p>
<p>例えば、キーワード欄に「はじめて,dynamicmtml」と入力していた場合、上記のテンプレートにより次のように出力されます。</p>
<p><img src="http://www.tinybeans.net/blog/files/startup-dymtml-21.png" alt="startup-dymtml-21" width="500" height="264" /></p>
<h2>MTSearchEntries に渡す変数などをセットする</h2>
<p>先ほどまでのコードは次のようになります。変わったのは上段部分です。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br /><strong>blog_id=&lt;$mt:BlogID$&gt;</strong><br /><strong>entry_id=&lt;$mt:EntryID$&gt;</strong><br />keywords=&lt;$mt:EntryKeywords$&gt;<br /><strong>keywords_length=&lt;$mt:EntryKeywords regex_replace="/[^,]|\s/g","" cat="," count_characters="1"$&gt;</strong><br /><strong>limit=5</strong><br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;mt:SplitVars name="keyword" text="$keywords"&gt;<br />  &lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;<br />  &lt;$mt:Var name="keyword"$&gt;&lt;br /&gt;<br />&lt;/mt:SplitVars&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>上段の MTSetVars タグ内に、次のような変数をセットします。</p>
<ul>
<li>ブログID = blog_id</li>
<li>現在のブログ記事ID = entry_id</li>
<li>キーワード欄の値 = keywords</li>
<li>分割されたキーワードの個数 = keywords_length</li>
<li>リストアップするブログ記事数 = limit</li>
</ul>
<p id="keywords_length">ポイントは「分割されたキーワードの個数」です。</p>
<pre>keywords_length=&lt;$mt:EntryKeywords regex_replace="/[^,]|\s/g","" cat="," count_characters="1"$&gt;</pre>
<p>この部分は、次の流れで考えると分かりやすいと思います。</p>
<ol>
<li>regex_replace="/[^,]|\s/g","" で、区切り文字であるカンマ以外を削除</li>
<li>区切り文字の個数はキーワードの個数よりも１つ少ないので、cat="," でカンマを１つ追加</li>
<li>count_characters="1" で文字数（カンマの数を出力</li>
<li>これが、キーワードの数となる。</li>
</ol>
<h2>MTSearchEntries でブログ記事をリストアップ</h2>
<p>次に、上記のコードで取り出した変数 keyword の値を、MTSearchEntries に渡します。最終的なコードは次のようになります。変更部分は下段になります。</p>
<pre>&lt;$mtml tag='mt:SetVars'$&gt;<br />blog_id=&lt;$mt:BlogID$&gt;<br />entry_id=&lt;$mt:EntryID$&gt;<br />keywords=&lt;$mt:EntryKeywords$&gt;<br />keywords_length=&lt;$mt:EntryKeywords regex_replace="/[^,]|\s/g","" cat="," count_characters="1"$&gt;<br />limit=5<br />&lt;$mtml tag='/mt:SetVars'$&gt;<br /><br />&lt;mt:DynamicMTML&gt;<br />&lt;mt:SplitVars name="keyword" text="$keywords"&gt;<br />  &lt;$mt:Var name="__counter__" setvar="split_counter"$&gt;<br />  &lt;$mt:Var name="keyword" trim="1" regex_replace="/\s|　/g","%" setvar="keyword"$&gt;<br />  &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />    &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />    &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />      &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;<br />    &lt;/mt:SetVarBlock&gt;<br />  &lt;/mt:SearchEntries&gt;<br />  &lt;mt:If name="split_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries" sort_by="key reverse"&gt;<br />      &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;ul&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" le="$limit"&gt;<br />        &lt;mt:Var name="__value__"&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" eq="$limit"&gt;<br />        &lt;/ul&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />  &lt;/mt:If&gt;<br />&lt;/mt:SplitVars&gt;<br />&lt;/mt:DynamicMTML&gt;</pre>
<p>下段のコードを分割して解説します。</p>
<h3 id="split_counter">特別な変数の初期化</h3>
<p>MTSplitVars タグ内の最初で、変数 __counter__ の値を変数&nbsp;split_counter に代入しています。</p>
<pre>&lt;$mt:Var name="__counter__" setvar="split_counter"$&gt;</pre>
<p>これは、MTSplitVars タグでセットされる特別な変数（__first__ や __counter__ など）が、入れ子になっている MTSearchEntries タグの後ろでは、MTSearchEntries タグの影響を受け、値が変わってしまう問題に対処するためです。この点は、ダイナミックパブリッシングのテンプレートを書くときには注意する必要がありそうです。</p>
<p>そのために、入れ子の後ろでもちゃんと特別な変数にアクセスできるように、最初に別の変数名にセットしておくわけです。</p>
<h3>MTSearchEntries でブログ記事をリストアップ</h3>
<p>次に、MTSearchEntries タグに、上段の MTSeatVars タグでセットした変数などを渡します。</p>
<pre>  &lt;mt:SearchEntries query="$keyword" blog_id="$blog_id" not_entry_id="$entry_id"&gt;<br />    &lt;$mt:EntryDate format="%Y%m%d%H%M%S" setvar="date"$&gt;<br />    &lt;mt:SetVarBlock name="entries" key="$date"&gt;<br />      &lt;li&gt;&lt;a href="&lt;$mt:EntryPermalink$&gt;"&gt;&lt;$mt:EntryTitle$&gt;&lt;/a&gt;&lt;/li&gt;<br />    &lt;/mt:SetVarBlock&gt;<br />  &lt;/mt:SearchEntries&gt;</pre>
<p>そして、ここでは結果を直接出力せずに、一度 entries というハッシュ変数に代入します。変数 entries のキーは、MTEntryDate タグで取得したブログ記事の公開日を設定しています。こうすることで、後々公開日でソートすることができます。</p>
<h3>変数の値を出力する</h3>
<p>最後に変数 entries の値を出力します。</p>
<pre>  &lt;mt:If name="split_counter" eq="$keywords_length"&gt;<br />    &lt;mt:Loop name="entries" sort_by="key reverse"&gt;<br />      &lt;mt:If name="__counter__" eq="1"&gt;<br />        &lt;ul&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" le="$limit"&gt;<br />        &lt;mt:Var name="__value__"&gt;<br />      &lt;/mt:If&gt;<br />      &lt;mt:If name="__counter__" eq="$limit"&gt;<br />        &lt;/ul&gt;<br />      &lt;/mt:If&gt;<br />    &lt;/mt:Loop&gt;<br />  &lt;/mt:If&gt;</pre>
<p>ここでポイントとなるのは、MTSplitVars タグの最後のループであるかを如何に判断するかです。</p>
<p>ここで MTSplitVars の前半で初期化した変数 split_counter （ループの回数）と、上段でセットした変数&nbsp;keywords_length （＝キーワードの数）を比較します。</p>
<pre>&lt;mt:If name="split_counter" eq="$keywords_length"&gt;</pre>
<p>MTSplitVars は分割したキーワードをループで出力するので、キーワードの数とループの回数が同じであれば、それが最後のループということになります。</p>
<p>後は、MTLoop タグでハッシュ変数&nbsp;entries の値を出力します。sort_by モディファイアで、キーの値でソートし、降順（reverse）に並べ替えています。</p>
<p>また、この入れ子になっている側のループでは、__counter__ の値は上書きされるのでそのまま使えます。したがって、__counter__ の値を使って出力数を制御しています。</p>
<ul>
<li>__counter__ が 1 と等しい: ループの最初</li>
<li>__counter__ が変数 limit 以下：最初の MTSetVars でセットしたリストアップするブログ記事数まで、ハッシュ変数の値（__value__）を出力</li>
<li>__counter__ が変数 limit と等しい : ループの最後</li>
</ul>
<p>MTSetVars で設定する limit の値を変更すれば、リストアップする記事数を変えられますし、sort_by の値を変えれば並び順を変更できます。</p>
<p>以上です。次回は、AND 検索の仕方を紹介します。</p>]]>
    </content>
</entry>

<entry>
    <title>ローカルで自分がcommitしたのにアイコンが表示されなかった件</title>
    <link rel="alternate" type="text/html" href="http://www.tinybeans.net/blog/2011/12/26-124144.html" />
    <id>tag:www.tinybeans.net,2011:/blog//1.1049</id>

    <published>2011-12-26T03:41:44Z</published>
    <updated>2011-12-26T03:41:50Z</updated>

    <summary>どうでもいいといえばどうでもいいんですけど、Tower とか Bitbacket とかのコミット履歴の画面で、ローカルの Git で自分が commit したのに、アイコンが表示されないのがずっと気に...</summary>
    <author>
        <name>tinybeans</name>
        
    </author>
    
        <category term="Git" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="git" label="Git" 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.git-tower.com/">Tower</a> とか <a href="https://bitbucket.org/">Bitbacket</a> とかのコミット履歴の画面で、ローカルの Git で自分が commit したのに、アイコンが表示されないのがずっと気になってたんです、というか、アイコンどうやって設定するのかなーって。</p>
<p>今まで色々とググってみても情報が出てこなかったんですけど、やっと見つけました。</p>]]>
        <![CDATA[<ul>
<li><a href="http://tobysoft.net/wiki/index.php?git%2Fgithub#m516aa34">自分がコミットしたのにプロジェクトページに変更者のアイコンが出ない</a></li>
</ul>
<p>ここにあるとおり、ローカルの Git に登録してあるメールアドレスが、Github とか Bitbacket とかとは違っていました。それを統一したらバッチリアイコンが表示されました。</p>
<p>上記参考サイトにも書いてありますが、Git のメールアドレスの確認は、</p>
<pre>git config --global user.email</pre>
<p>で、設定は、</p>
<pre>git config --global user.email hoge@fuga.net</pre>
<p>です。ヽ( ﾟーﾟ)ノ ふぅ、スッキリ♪</p>]]>
    </content>
</entry>

</feed>

