<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Power CMS for MT ブログ</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://powercms.alfasado.net/blog/atom.xml" />
    <id>tag:powercms.alfasado.net,2008-10-28:/blog//1</id>
    <updated>2010-07-20T11:18:16Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 4.27-ja</generator>

<entry>
    <title>リンクをオブジェクトで管理するLinkプラグイン(製品版)</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/07/link_1.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.240</id>

    <published>2010-07-05T05:34:14Z</published>
    <updated>2010-07-20T11:18:16Z</updated>

    <summary>Power CMS for MT 2.03で追加される新機能のひとつ、Linkプ...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>Power CMS for MT 2.03で追加される新機能のひとつ、Linkプラグインについてご紹介します。下記のページで公開しているLinkプラグインとベースは同じです。</p>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/2010/05/link.html">リンクをオブジェクトで管理するLinkプラグイン</a></li>
</ul>

<p>尚、製品版については下記の違いがあります。</p>

<ul>
	<li>OPMLに加えCSVからのインポート、CSVエクスポートに対応</li>
	<li><a href="http://powercms.alfasado.net/blog/2010/06/post_6.html">グループ機能に対応</a>(リンクグループ)</li>
	<li>本文テキスト欄のリッチテキストエディタ対応</li>
</ul>

<p>以下、<a href="http://powercms.alfasado.net/blog/2010/05/link.html">「リンクをオブジェクトで管理するLinkプラグイン」のページ</a>と一部重複する部分がありますが、概要についてご紹介します。</p>


<h3 font-weight:bold;margin-bottom:0.2em;font-size:105%">Linkプラグインについて</h3>

<ul>
	<li>外部リンクの「名前」「URL」「RSS」等の情報をオブジェクトとして管理できます。</li>
	<li>リンク「タグ」をつけることができます。</li>
	<li>管理画面での検索に対応しています。</li>
	<li>エディタにリンクを貼り付けることができます。</li>
	<li>リンクをMTタグで出力することができます。</li>
	<li>スタティック/ダイナミック・パブリッシングの両方に対応しています。</li>
	<li>OPML/CSV形式のファイルからリンクをインポートすることができます。</li>
	<li>CSVファイルへのエクスポートが可能です。</li>
	<li>一覧画面、または定期実行タスクによってリンクチェックを行えます。</li>
	<li>カスタム・パーミッション/ロールを作成します。</li>
	<li>個別リンクのページを表示する場合は、オプションプラグインのViewerをインストールします。Viewerのインストールと利用方法については<a href="http://powercms.alfasado.net/blog/2010/06/custom_object_2.html">カスタムオブジェクト</a>の記事を参照してください。</li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">スクリーンショット</h3>

<p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/07/05/link01.jpg"><img alt="リンクの一覧" src="http://powercms.alfasado.net/blog/assets_c/2010/07/link01-thumb-264x141-898.jpg" width="264" height="141" class="mt-image-none" style="" /></a></span>
&nbsp;
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/07/05/link02.jpg"><img alt="リンクの編集" src="http://powercms.alfasado.net/blog/assets_c/2010/07/link02-thumb-264x141-900.jpg" width="264" height="141" class="mt-image-none" style="" /></a></span>
</p>

<p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/07/05/link03.jpg"><img alt="エディタへの貼付け" src="http://powercms.alfasado.net/blog/assets_c/2010/07/link03-thumb-264x141-902.jpg" width="264" height="141" class="mt-image-none" style="" /></a></span>
&nbsp;
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/07/05/link04.jpg"><img alt="リンクグループの編集" src="http://powercms.alfasado.net/blog/assets_c/2010/07/link04-thumb-264x141-904.jpg" width="264" height="141" class="mt-image-none" style="" /></a></span>
</p>

<p>
&nbsp;
</p>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">テンプレート・タグ</h3>
<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ブロック・タグ</h4>

<table>
<tr><th style="width:20%">タグ</th><th>説明</th><th style="width:35%">備考</th></tr>
<tr><td>MTLinks</td><td>リンクをループで出力します</td><td>
コンテクスト(MTVar)にセットされる値<br />
 __first__:ループの最初<br />
 __counter__:ループの何回目か<br />
 __odd__:奇数回目の出力<br />
 __even__:偶数回目の出力<br />
 __last__:ループの最後<br />
<br />
指定出来るモディファイア<br />
 lastn (limit):何件表示するかを指定します。<br />
 offset:何件目から表示するかを指定します(デフォルト値:0)。<br />
 sort_order:昇順、降順を指定します(descend,ascend / デフォルト値:ascend)。<br />
 sort_by:ソートするカラム名を指定します(created_on, urlupdated_on, rssupdated_on, url等 / デフォルト値:id)<br />
group:リンクグループ名を指定します。<br />グループ名を指定した場合は表示順は常にグループのオーダー順になります(昇順,降順の指定は可能です)。<br />
 blog_id:リンクが属するブログのIDを指定する場合に記述します。<br />
 rating:ランク(rating)が指定した数字と一致するリンクをロードします。<br />
 more:ランク(rating)が指定した数字以上のリンクをロードします。<br />
 less:ランク(rating)が指定した数字以下のリンクをロードします。<br />
 tag:タグが一致するリンクをロードします。
</td></tr>
<tr><td>MTLinksHeader / MTLinksFooter</td><td colspan="2">MTLinksブロックタグの最初と最後に出力されます。</td></tr>
<tr><td>MTLinkBlock</td><td colspan="2">idモディファイアを指定してキャンペーンオブジェクトを読み込みます。</td></tr>
<tr><td>MTLinkTags</td><td>リンクのタグをループ出力します。MTTagName、MTTagID等のタグ関連のMTタグが利用できます。
</td><td>MT標準のMTTagsタグでtypeに'link'を指定することができます</td></tr>
<tr><td>MTLinkAuthor</td><td>
リンクを作成したユーザーのコンテクストをセットします。</td><td>ブロックの中ではMTAuthor関連のタグが利用できます。</td></tr>
<tr><td>MTLinkIfTagged</td><td colspan="2">リンクがタグ付けされている時に出力されます。</td></tr>
<tr><td>MTIfActiveLink (MTIfBrokenLink)</td><td colspan="2">リンクのURLがリンク切れしていない(している)場合に出力されます。</td></tr>
<tr><td>MTIfActiveRss (MTIfBrokenRss)</td><td colspan="2">リンクのRSSがリンク切れしていない(している)場合に出力されます。</td></tr>
<tr><td>MTIfActiveImage (MTIfBrokenImage)</td><td colspan="2">リンクの画像のURLがリンク切れしていない(している)場合に出力されます。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ファンクション・タグ</h4>

<table>
<tr><th style="width:25%">タグ</th><th>説明</th></tr>
<tr><td>MTLinkBlogID</td><td>リンクのブログIDを出力します。</td></tr>
<tr><td>MTLinkName</td><td>リンクの名前を出力します。</td></tr>
<tr><td>MTLinkHTML</td><td>リンクをHTMLのタグの形式で出力します。</td></tr>
<tr><td>MTLinkAuthorDisplayName</td><td>リンクの作成者名を出力します。</td></tr>
<tr><td>MTLinkUrl</td><td>リンクのURLを出力します。</td></tr>
<tr><td>MTLinkDescription</td><td>リンクの概要を出力します。</td></tr>
<tr><td>MTLinkTitle</td><td>リンクのタイトル(title属性値)を出力します。</td></tr>
<tr><td>MTLinkRel</td><td>リンクのrel属性値を出力します。</td></tr>
<tr><td>MTLinkImageAddress</td><td>リンクの画像URLを出力します。</td></tr>
<tr><td>MTLinkRSSAddress</td><td>リンクのRSSのURLを出力します。</td></tr>
<tr><td>MTLinkNotes</td><td>リンクのメモを出力します。</td></tr>
<tr><td>MTLinkRating</td><td>リンクのランク(rating)を出力します。</td></tr>
<tr><td>MTLinkAuthoredOn</td><td>リンクの作成日を出力します。</td></tr>
<tr><td>MTLinkModifiedOn</td><td>リンクオブジェクトの更新日を出力します。</td></tr>
<tr><td>MTLinkURLUpdatedOn</td><td>リンク先のページの最終更新日を出力します(正確に取得できない可能性があります)。</td></tr>
<tr><td>MTLinkRSSUpdatedOn</td><td>リンク先のRSSの最終更新日を出力します。</td></tr>
</table>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">エディタでのリンク貼り付け</h3>

<p>リンク挿入ボタンをリットテキストエディタに適用するには、システムプラグイン設定→TinyMCEの設定で、advanced_buttons1(〜5)のボタンを表示させたい箇所に「mt-link」と入力して設定を保存してください。</p>

<h3 font-weight:bold;margin-bottom:0.2em;font-size:105%">コールバック</h3>

<p>コールバックをトリガとして処理を行うプラグインを書くことで例えばリンク切れ検出をメールで通知する、等の拡張が可能です。</p>

<table>
<tr><th style="width:20%">コールバック</th><th>パラメタ</th><th>説明</th></tr>
<tr>
<td>cms_pre_save.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを作成・更新した際に保存の直前にコールされます。</td>
</tr>
<tr>
<td>cms_post_save.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを作成・更新した際に保存の直後にコールされます。</td>
</tr>
<tr>
<td>cms_post_delete.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを削除した直後にコールされます。</td>
</tr>
<tr>
<td>post_broken_url.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトのリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_broken_rss.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトのRSSのリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_broken_image.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトの画像のリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_task_blog_linkcheck</td><td>$cb, $app, $blog, $error</td><td>定期実行タスクで各ブログのリンクチェックが完了したタイミングでコールされます。エラーが1つ以上見つかったときには$errorに1が入ります。</td>
</tr>
<tr>
<td>post_unpublish.link</td><td>$cb, $app, $obj, $original</td><td>一覧画面からリンクのステータスを非公開にした際にコールされます。</td>
</tr>
<tr>
<td>post_publish.link</td><td>$cb, $app, $obj, $original</td><td>一覧画面からリンクのステータスを公開にした際にコールされます。</td>
</tr>
</table>]]>
        
    </content>
</entry>

<entry>
    <title>携帯サイトで絵文字を利用する</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/keitaiemoji.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.239</id>

    <published>2010-06-29T05:42:59Z</published>
    <updated>2010-07-20T11:40:54Z</updated>

    <summary>携帯絵文字挿入エディタプラグインが追加 Power CMS for MT 2.0...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="サイト制作全般" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">携帯絵文字挿入エディタプラグインが追加</h3>

<p>Power CMS for MT 2.03からリッチテキストエディタで絵文字アイコンを挿入できるようになりました。</p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="絵文字挿入アイコン" src="http://powercms.alfasado.net/blog/2010/06/29/keitaiemoji1.jpg" width="259" height="58" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></span>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/06/29/keitaiemoji3.jpg"><img alt="keitaiemoji3.jpg" src="http://powercms.alfasado.net/blog/assets_c/2010/06/keitaiemoji3-thumb-360x204-888.jpg" width="360" height="204" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>

<p>絵文字挿入ボタンをリットテキストエディタに適用するには、システムプラグイン設定→TinyMCEの設定で、advanced_buttons1(〜5)のボタンを表示させたい箇所に「emoji」と入力して設定を保存してください。</p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/06/29/keitaiemoji2.jpg"><img alt="エディタのプラグイン設定" src="http://powercms.alfasado.net/blog/assets_c/2010/06/keitaiemoji2-thumb-360x119-886.jpg" width="360" height="119" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">絵文字を出力するテンプレート</h3>

<p>ダイナミックパブリッシングもしくはDynamicMTMLでは下記のようなテンプレートを記述することでキャリアに応じた絵文字を出力することができます(134はDoCoMoの絵文字ID:四角付き数字の[0])。この時、携帯3キャリア以外からのアクセスについては絵文字アイコン画像が表示されます。</p>

<pre><code class="mtml">&lt;mt:setvarblock name=&quot;emoticon_dir&quot;&gt;&lt;$mt:StaticWebPath$&gt;plugins/TinyMCE/lib/tinymce/plugins/emoji/img/&lt;/mt:setvarblock&gt;

&lt;a href=&quot;&lt;$MTBlogRelativeURL$&gt;mobile/index.html&quot; accesskey=&quot;0&quot;&gt;
&lt;$mt:GetEmoji docomo_id=&quot;134&quot; size=&quot;12&quot; emoticon=&quot;1&quot; alt=&quot;&quot; base=&quot;$emoticon_dir&quot;$&gt;
ホーム
&lt;/a&gt;</code></pre>

<p>また、下記のタグを使うとShift_JIS対応の絵文字を出力します。</p>

<pre><code class="mtml">&lt;mt:setvarblock name=&quot;emoticon_dir&quot;&gt;&lt;$mt:StaticWebPath$&gt;plugins/TinyMCE/lib/tinymce/plugins/emoji/img/&lt;/mt:setvarblock&gt;

&lt;a href=&quot;&lt;$MTBlogRelativeURL$&gt;mobile/index.html&quot; accesskey=&quot;0&quot;&gt;
&lt;$mt:GetEmojiLegacy docomo_id=&quot;134&quot; size=&quot;12&quot; emoticon=&quot;1&quot; alt=&quot;&quot; base=&quot;$emoticon_dir&quot;$&gt;
ホーム
&lt;/a&gt;</code></pre>

<p>リッチテキストエディタから貼付けた絵文字アイコンは画像となるため、上記のようなタグに変換する必要があります。変換はモディファイアemoticon2mtmlを利用することで簡単に行うことができます(テンプレート側で自動変換できます)。</p>

<pre><code class="mtml">&lt;mt:entrybody emoticon2mtml=&quot;1&quot;&gt;</code></pre>

<p>この時emoticon2mtml=&quot;legacy&quot;を指定することでShift_JIS形式での絵文字を出力することができるようになります。</p>

<ul>
	<li>参考:<a href="http://powercms.alfasado.net/blog/2010/04/htmlmtdynamicmtml2.html">Power CMS for MT ver.2 - DynamicMTMLでPC/携帯/iPhoneに対応させる</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>バナー/広告配信・管理を行う(Campaign)</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/campaign.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.238</id>

    <published>2010-06-29T02:03:06Z</published>
    <updated>2010-07-20T12:40:06Z</updated>

    <summary> Campaign *とは、タイトル、URL、画像、ムービー、テキスト、メモ等の...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="サイト制作全般" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[
<p>Campaign *とは、タイトル、URL、画像、ムービー、テキスト、メモ等のフィールドを持つMovable Typeのオブジェクトです。カスタムフィールドに対応しているため、自由に入力項目を拡張することができます。画像とムービーは MT::Asset オブジェクトとして管理されます。キャンペーングループをドラッグ&amp;ドロップインターフェイスで登録することが出来ます。</p>

<p>Movable Typeの定期実行タスクによってキャンペーンの掲載開始、終了を制御することやダイナミック・パブリッシングとの組み合わせによってランダムな出力や効果測定が簡単に行えます。</p>
<p>最大表示数やクリック数の設定、ランダムな表示に対応しており、本格的な広告の管理・運用を行うことができます。</p>

<p>*Power CMS for MT Professional/Enterpriseに付属するプラグインです</p>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">インストール</h3>

<ul>
	<li>PowerCMSProfessionalプラグインをインストール(MTのpluginsディレクトリにコピー)します。</li>
        <li>powercms_filesディレクトリ直下にcampaignディレクトリを作成し、CMSから書き込み可能なパーミッションに設定します。</li>
	<li>スタティックパブリッシングで効果測定を行う場合は、MTディレクトリに mt-campaign.cgiをコピーし実行可能なパーミッションを付与します。</li>
	<li>個別のキャンペーンページを表示する場合は、オプションプラグインのViewerをインストールします。Viewerのインストールと利用方法については<a href="http://powercms.alfasado.net/blog/2010/06/custom_object_2.html">カスタムオブジェクトの記事</a>を参照してください。</li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">スクリーンショット</h3>

<p><a href="http://powercms.alfasado.net/blog/2010/06/29/Campaign1.jpg"><img alt="キャンペーンの編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/Campaign1-thumb-264x168-877.jpg" width="264" height="168" /></a>&nbsp;<a href="http://powercms.alfasado.net/blog/2010/06/29/Campaign2.jpg"><img alt="キャンペーンの一覧画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/Campaign2-thumb-264x168-879.jpg" width="264" height="168" /></a></p>

<p><a href="http://powercms.alfasado.net/blog/2010/06/29/Campaign3.jpg"><img alt="キャンペーングループの編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/Campaign3-thumb-264x168-881.jpg" width="264" height="168" /></a>&nbsp;<a href="http://powercms.alfasado.net/blog/2010/06/29/Campaign4.jpg"><img alt="プラグインの設定画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/Campaign4-thumb-264x168-883.jpg" width="264" height="168" /></a></p>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">プラグイン設定(ブログ/ウェブサイト単位で行います)</h3>
<table>
<tr><th>項目</th><th>解説</th></tr>
<tr><td>バナーの最小サイズ</td><td>キャンペーン編集画面で幅/高さを指定するプルダウンの最小値(数値)を指定します。</td></tr>
<tr><td>バナーの最大サイズ</td><td>キャンペーン編集画面で幅/高さを指定するプルダウンの最大値(数値)を指定します。<br />この値より大きな画像をアップロードした場合、このサイズにリサイズされた画像が利用されます。</td></tr>
<tr>
<td>バナーのデフォルト幅</td><td>キャンペーン編集画面で幅を指定するプルダウンのデフォルト値を指定します。</td></tr>
<tr><td>バナーのデフォルト高</td><td>キャンペーン編集画面で高さを指定するプルダウンのデフォルト値を指定します。</td></tr>
<tr><td>バナーの保存場所</td><td>アップロードした画像やムービーの保存場所を指定します(デフォルト値は &lt;サイトパス&gt;/banner/)。</td></tr>
<tr><td>初期キャンペーン期間(日)</td><td>キャンペーン作成時の終了日の初期値(作成日から何日後か)を指定します(デフォルトは30日)。</td></tr>
<tr><td>クッキーの有効期限(日)</td><td>効果測定のためのクッキーの保存期間を日数で指定します(デフォルトは30日)。</td></tr>
<tr><td>集計対象外のIP</td><td>効果測定から除外するアクセス元IPアドレスを改行区切りで指定します。</td></tr>
<tr><td>コンバージョンカウント後のリダイレクトURL</td><td>MTCampaignConversionCounter タグが呼び出された後にリダイレクトする先のURLを指定します(デフォルトは/mt-static/images/spacer.gif)。</td></tr>
<tr><td>エディタの設定</td><td>本文欄でリッチテキストエディタを利用する際の設定を行います。</td></tr></table>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">テンプレート・タグ</h3>

<p>タグはすべてスタティック/ダイナミック(DynamicMTML)対応ですが効果測定系のタグの振る舞いについては一部パブリッシング方法によって異なる部分があります。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ブロックタグ</h4>

<table width="100%">
<tr><th style="width:20%">タグ</th><th style="width:45%">説明</th><th style="width:35%">備考</th></tr>
<tr><td>MTCampaigns</td><td>キャンペーンオブジェクトをループ出力します。</td><td>
コンテクスト(MTVar)にセットされる値<br />
__first__  :ループの最初<br />
__counter__:ループの何回目か<br />
__odd__    :奇数回目の出力<br />
__even__   :偶数回目の出力<br />
__last__   :ループの最後<br />
<br />
指定出来るモディファイア<br />
active:アクティブなキャンペーンのみを表示します。<br />
*出力時点のタイムスタンプが掲載開始日,終了日の範囲内であるキャンペーン<br />
lastn (limit):何件表示するかを指定します。<br />
offset:何件目から表示するかを指定します(デフォルト値:0)。<br />
sort_order:昇順、降順を指定します(descend,ascend / デフォルト値:ascend)。<br />
sort_by:ソートするカラム名を指定します(id, title, publishing_on, created_on, displays等 / デフォルト値:publishing_on)<br />
shuffle:取得したオブジェクトをランダムに並び替えて出力します(スタティックパブリッシングの場合は再構築時点で並び替え)。<br />
group:キャンペーングループ名を指定します。<br />
グループ名を指定した場合は表示順は常にグループのオーダー順になります(昇順,降順の指定は可能です)。<br />
blog_id:キャンペーンが属するブログのIDを指定する場合に記述します。
</td></tr>
<tr><td>MTCampaignsHeader / MTCampaignsFooter</td><td colspan="2">MTCampaignsブロックタグの最初と最後に出力されます。</td></tr>
<tr><td>MTCampaign</td><td colspan="2">id/title/basename(identifier)モディファイアを指定してキャンペーンオブジェクトを読み込みます。activeモディファイアを指定した場合、そのキャンペーンがアクティブな場合のみ内容を出力します。</td></tr>
<tr><td>MTCampaignRandom</td><td>blog_id/active/groupモディファイアが指定可能です。groupモディファイアを使うことによって、特定のグループのキャンペーンから1件をランダムに出力する、といった使い方ができます。</td><td>ダイナミックパブリッシングの場合は(キャッシュが無効な場合)文字通りランダムに出力されますが、スタティックパブリッシングの場合は再構築の度にランダムに出力されます。</td></tr>
<tr><td>MTIfCampaignHasImage</td><td colspan="2">キャンペーンに画像が指定されている場合に出力されます。</td></tr>
<tr><td>MTIfCampaignHasMovie</td><td colspan="2">キャンペーンにムービーが指定されている場合に出力されます。</td></tr>
<tr><td>MTCampaignIfTagged</td><td colspan="2">キャンペーンにタグが付けられている場合に出力されます。</td></tr>
<tr><td>MTCampaignAuthor</td><td colspan="2">キャンペーンの作成者のAuthorコンテクストをセットします。</td></tr>
<tr><td>MTCampaignAsset</td><td colspan="2">キャンペーンのアイテムをコンテクストにセットします(優先度は画像,ムービーの順)。typeまたはclassモディファイアにimageまたはmovieを指定することで、画像/ムービーを明示的に指定可能です。</td></tr>
<tr><td>MTIfCampaignActive</td><td colspan="2">アクティブなキャンペーン場合(出力時点のタイムスタンプが掲載開始日,終了日の範囲内であるキャンペーンである場合)に出力されます。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ファンクションタグ</h4>

<table width="100%">
<tr><th>タグ</th><th>説明</th></tr>
<tr><td>MTCampaignID</td><td>キャンペーンIDを出力します。</td></tr>
<tr><td>MTCampaignTitle</td><td>キャンペーンのタイトルを出力します。</td></tr>
<tr><td>MTCampaignText</td><td>キャンペーンのテキスト(本文)を出力します。</td></tr>
<tr><td>MTCampaignText</td><td>キャンペーンのメモを出力します。</td></tr>
<tr><td>MTCampaignBasename</td><td>キャンペーンのベースネーム(basename)を出力します。</td></tr>
<tr><td>MTCampaignUrl</td><td>キャンペーンのURLを出力します。</td></tr>
<tr><td>MTCampaignBannerUrl</td><td>キャンペーンの画像のURLを出力します。</td></tr>
<tr><td>MTCampaignMovieUrl</td><td>キャンペーンのムービーのURLを出力します。</td></tr>
<tr><td>MTCampaignBannerWidth</td><td>キャンペーンバナーの表示サイズ(幅:px)を出力します。</td></tr>
<tr><td>MTCampaignBannerHeight</td><td>キャンペーンバナーの表示サイズ(高さ:px)を出力します。</td></tr>
<tr><td>MTCampaignCreatedOn</td><td>キャンペーンバナーの作成日を出力します。日付に関するモディファイアが利用できます。</td></tr>
<tr><td>MTCampaignPublishingOn</td><td>キャンペーンバナーの掲載開始日を出力します。日付に関するモディファイアが利用できます。</td></tr>
<tr><td>MTCampaignPeriodOn</td><td>キャンペーンバナーの掲載終了日を出力します。日付に関するモディファイアが利用できます。</td></tr>
<tr><td>MTCampaignAuthorDisplayName</td><td>キャンペーンの作成者の表示名を出力します。</td></tr>
<tr><td>MTCampaignCounter</td><td>(*ダイナミックパブリッシングの場合キャンペーンの表示数を+1した上で)キャンペーンの表示回数を出力します。<br />
*この時、クッキーをチェックしてユニークユーザー数をあわせて確認します。カウント対象外のIPアドレスをプラグイン設定で指定できます。
スタティック・パブリッシングの場合、単に表示回数を出力します。
このタグの代わりに効果測定用CGIを利用することも出来ます。MTCampaignScriptの項を参照してください。</td></tr>
<tr><td>MTCampaignRedirect</td><td>(*ダイナミックパブリッシングの場合キャンペーンのクリック数を+1した上で)キャンペーンのURLにリダイレクトします。
*この時、クッキーをチェックしてユニークユーザーのクリック数をあわせて確認します。<br />
カウント対象外のIPアドレスをプラグイン設定で指定できます。<br />
ダイナミックテンプレートの先頭に記載する必要があります。<br />
このタグを記載したテンプレートページへのリクエストにはクエリー文字列 campaign_id=[対象キャンペーンのID] を指定してください。<br />
<strong>スタティック・パブリッシングでは利用できません。</strong>このタグの代わりに効果測定用CGIを利用することも出来ます。MTCampaignScriptの項を参照してください。</td></tr>
<tr><td>MTCampaignMaxClicks</td><td>キャンペーンの最大クリック数を出力します。<br />
ダイナミックパブリッシングの場合 MTCampaignRedirect タグが呼び出された時点で MTCampaignMaxClicks が指定されていて且つ MTCampaignClicks の値が指定値を超えていた場合、キャンペーンを終了します。<br />
スタティック・パブリッシングの場合、単に数値を出力します。
</td></tr>
<tr><td>MTCampaignMaxUniqClicks</td><td>キャンペーンの最大クリック回数(ユニークユーザーベースでの最大クリック回数)を出力します。<br />
ダイナミックパブリッシングの場合 MTCampaignRedirect タグが呼び出された時点で MTCampaignMaxUniqClicks が指定されていて且つ MTCampaignUniqClicks の値が指定値を超えていた場合、キャンペーンを終了します。<br />
スタティック・パブリッシングの場合、単に数値を出力します。</td></tr>
<tr><td>MTCampaignMaxUniqClicks</td><td>キャンペーンの表示数を出力します。表示数は MTCampaignCounter タグが処理される時点でカウント・保存されます。</td></tr>
<tr><td>MTCampaignClicks</td><td>キャンペーンのクリック数を出力します。クリック数は MTCampaignRedirect タグが処理される時点でカウント・保存されます。
</td></tr>
<tr><td>MTCampaignUniqClicks</td><td>キャンペーンのクリック数(ユニークユーザーベースでのクリック数)を出力します。クリック数は MTCampaignRedirect タグが処理される時点でカウント・保存されます。</td></tr>
<tr><td>MTCampaignUniqDisplays</td><td>キャンペーンの表示回数(ユニークユーザーベースでの表示回数)を出力します。表示数は MTCampaignCounter タグが処理される時点でカウント・保存されます。</td></tr>
<tr><td>MTCampaignUniqClicks</td><td>キャンペーンのクリック数(ユニークユーザーベースでのクリック数)を出力します。クリック数は MTCampaignRedirect タグが処理される時点でカウント・保存されます。</td></tr>
<tr><td>MTCampaignMaxDisplays</td><td>キャンペーンの最大表示数(管理画面で設定した数値)を出力します。</td></tr>
<tr><td>MTCampaignMaxUniqDisplays</td><td>キャンペーンの最大表示回数を出力します(管理画面で設定したユニークユーザーベースでの最大表示回数)。</td></tr>
<tr><td>MTCampaignConversionCounter</td><td>(*ダイナミックパブリッシングの場合キャンペーンのコンバージョン数を+1した上で)プラグイン設定で指定したURLにリダイレクトします。<br />
*この時、クッキーをチェックしてキャンペーンを経由したユーザーのコンバージョン数をあわせて確認します。<br />
カウント対象外のIPアドレスをプラグイン設定で指定できます。<br />
<strong>ダイナミックテンプレートの先頭に記載する必要があります。</strong><br />
このタグを記載したテンプレートページへのリクエストにはクエリー文字列 campaign_id=[対象キャンペーンのID] を指定してください。<br />
具体的には &lt;img src=&quot;/campaign_conversion.html?campaign_id=1&quot; width=&quot;1&quot; height=&quot;1&quot; alt=&quot;&quot; /&gt; のようにイメージタグを指定すると良いでしょう。<br />
スタティック・パブリッシングの場合、単に数値を出力します。<br />
このタグの代わりに効果測定用CGIを利用することも出来ます。MTCampaignScriptの項を参照してください。</td></tr>
<tr><td>MTCampaignConversionView</td><td>コンバージョンページの表示数を出力します。このタグによる出力値はキャンペーンの広告を経由していないユーザーの表示数も含む数値になります。</td></tr>
<tr><td>MTCampaignConversion</td><td>コンバージョンページへの到達数を出力します。このタグによる出力値はクッキーによってチェックされたキャンペーンの広告を経由たユーザーの表示数のみをカウントします。</td></tr>
<tr><td>MTCampaignScript</td><td>環境変数 CampaignScript で設定した値を出力します。デフォルト値は mt-campaign.cgi です。</td></tr>
</table>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">mt-campaign.cgiによる効果測定</h3>

<p>ダイナミックパブリッシングでの効果測定用タグ MTCampaignCounter, MTCampaignRedirect, MTCampaignConversionCounter の代わりにCGIアプリケーションmt-campaign.cgiを使って効果測定を行うことができます。<br />
各タグの代わりにCGIアプリケーションを利用する時は下記のように __modeパラメタとcampaign_idパラメタを付与します。</p>

<pre><code style="overflow:scroll">http://site.example.com/to/mt/mt-campaign.cgi?__mode=counter&amp;campaign_id=1
http://site.example.com/to/mt/mt-campaign.cgi?__mode=redirect&amp;campaign_id=1
http://site.example.com/to/mt/mt-campaign.cgi?__mode=conversion&amp;campaign_id=1
</code></pre>

<p>テンプレートタグでは下記のように指定することが可能です。
</p>
<pre><code style="overflow:scroll">&lt;$MTCGIPath$&gt;&lt;$MTCampaignScript$&gt;__mode=counter&amp;campaign_id=&lt;MTCampaignID&gt;
</code></pre>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">プラグインによる拡張</h3>

<p>Campaignプラグインを外部プラグインで拡張することが可能です。Campaignオブジェクト自体はMT::Objectのサブクラスですので、MTのAPIを利用してオブジェクトをロードしたりデータベースのカラムを拡張したりtemplate_param, template_source等のコールバックに対応したプラグインを書くことができます。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">コールバック</h4>

<p>コールバックをトリガとして処理を行うプラグインを書くことが可能です。</p>


<table>
<tr><th style="width:20%">コールバック</th><th>パラメタ</th><th>説明</th></tr>
<tr>
<td>cms_pre_save.campaign</td><td>$cb, $app, $obj, $original</td><td>キャンペーンオブジェクトが保存される直前にコールされます(キャンペーンの作成・編集画面から保存された場合のみ)。返り値が0の場合保存は行われません。</td>
</tr>
<tr>
<td>cms_post_save.campaign</td><td>$cb, $app, $obj, $original</td><td>キャンペーンオブジェクトが保存された直後にコールされます(キャンペーンの作成・編集画面から保存された場合のみ)。</td>
</tr>
<tr>
<td>cms_post_delete.campaign</td><td>$cb, $app, $obj, $original</td><td>キャンペーンオブジェクトが削除された直後にコールされます。</td>
</tr>
<tr>
<td>post_unpublish.campaign</td><td>$cb, $app, $obj, $original</td><td>一覧画面から、もしくはタスク実行によってキャンペーンオブジェクトのステータスが「下書き」に変更された直後にコールされます。</td>
</tr>
<tr>
<td>post_publish.campaign</td><td>$cb, $app, $obj, $original</td><td>一覧画面から、もしくはタスク実行によってキャンペーンオブジェクトのステータスが「公開」に変更された直後にコールされます。</td>
</tr>
<tr>
<td>post_reserved.campaign</td><td>$cb, $app, $obj, $original</td><td>一覧画面から、もしくはタスク実行によってキャンペーンオブジェクトのステータスが「日時指定」に変更された直後にコールされます。</td>
</tr>
<tr>
<td>post_close.campaign</td><td>$cb, $app, $obj, $original</td><td>一覧画面から、もしくはタスク実行によってキャンペーンオブジェクトのステータスが「終了」に変更された直後にコールされます。</td>
</tr>
</table>]]>
        
    </content>
</entry>

<entry>
    <title>管理画面でブログ/ブログ記事の呼称を変更する</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/post_7.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.237</id>

    <published>2010-06-29T01:25:34Z</published>
    <updated>2010-07-20T11:26:23Z</updated>

    <summary>レストランの「メニュー」やECサイトでの「取扱い商品」、不動産サイトにおける「物...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="サイト制作全般" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>レストランの「メニュー」やECサイトでの「取扱い商品」、不動産サイトにおける「物件情報」を管理する「ブログ」を作成し、各アイテムを「ブログ記事」として作成・運用するような設計をした時に運用マニュアル作成時、また導入研修時の説明で「何となく説明しづらい」と思ったことはありませんか?</p>

<ul>
	<li>「メニュー」を「ブログ記事」として管理する</li>
	<li>「取扱い商品」を「ブログ記事」として管理する</li>
	<li>「物件情報」を「ブログ記事」として管理する</li>
</ul>

<p>MTを日常的に扱っている制作側にすれば違和感はあまりないのかもしれませんが、はじめてCMSを導入して管理画面をさわるエンドユーザー様にとっては最初はとっつきにくいと感じる場合もあるのではないでしょうか。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">管理画面でブログ/ブログ記事の呼称をカスタマイズする</h3>

<p>RenameBlogLabelプラグインの設定で「ブログ」「ブログ記事」の呼称を変更することができます*。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/29/RenameBlogLabel_1.jpg"><img alt="プラグイン設定画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/RenameBlogLabel_1-thumb-300x241-873.jpg" width="300" height="241" class="mt-image-none" style="" /></a></p>

<p>設定はシステムレベル、ウェブサイト、ブログそれぞれに設定できます。ブログの設定がない場合にはウェブサイト、システムレベルの順で設定値が適用されます。</p>

<p>細かい部分ですが、管理画面のユーザービリティ向上に役立てていただければと思います。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/29/RenameBlogLabel_2.jpg"><img alt="RenameBlogLabel_2.jpg" src="http://powercms.alfasado.net/blog/assets_c/2010/06/RenameBlogLabel_2-thumb-540x267-875.jpg" width="540" height="267" class="mt-image-none" style="" /></a><br />
適用後の管理画面
</p>

<p>* 対応しているのは日本語/英語のみです。プラグインの言語ファイルで既定されている一部のラベルは変更されません。</p>]]>
        
    </content>
</entry>

<entry>
    <title>新しくなったグループ&amp;ソート機能</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/post_6.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.236</id>

    <published>2010-06-27T08:15:57Z</published>
    <updated>2010-07-20T12:32:01Z</updated>

    <summary><![CDATA[Power CMS for MT 2.03からグループ&amp;ソート機能が新し...]]></summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>Power CMS for MT 2.03からグループ&amp;ソート機能が新しくなりました。今回は新しいグループ&amp;ソート機能についてご紹介します。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">グループ&amp;ソート機能とは?</h3>

<p>ブログ記事/ウェブページ(の混在)、カテゴリ/フォルダ(の混在)、ウェブページ/ブログ(の混在)といったオブジェクトをグループ化して表示順をドラッグ&amp;ドロップで自在に設定できる機能です。グループはいくつでも作成できるため、トップページやナビゲーションの各パーツをグループ化したオブジェクトのテンプレートにしておくことでテンプレートを修正することなく項目を追加したり削除することが可能です。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/group.jpg"><img alt="アイテムグループ" src="http://powercms.alfasado.net/blog/assets_c/2010/06/group-thumb-540x325-867.jpg" width="540" height="325" class="mt-image-none" /></a>
<br />
アイテムのグループ編集画面
</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:16px;">グループ&amp;ソート機能に対応しているオブジェクト</h3>

<p>今回のアップデートで新たに「アイテム」「テンプレートモジュールとウィジェット」「キャンペーン(広告管理)」「リンク」「カスタムオブジェクト」がグループ&amp;ソート機能に対応しました。</p>

<p>グループ&amp;ソート機能に対応しているオブジェクトは以下の通りとなります。</p>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/2009/04/objectgroup.html">オブジェクト(ウェブサイト/ブログ/カテゴリ/フォルダ/ブログ記事/ウェブページの混在)</a></li>
	<li>ブログ(ウェブサイト/ブログ *混在可能)</li>
	<li>カテゴリー(カテゴリ/フォルダ *混在可能)</li>
	<li>エントリー(ブログ記事/ウェブページ *混在可能)</li>
	<li>アイテム</li>
	<li>テンプレートモジュールとウィジェット</li>
	<li>キャンペーン(広告管理)</li>
	<li>リンク</li>
	<li><a href="http://powercms.alfasado.net/blog/2010/06/custom_object_1.html">カスタムオブジェクト</a></li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">グループ&amp;ソート機能の改良点と新機能</h3>

<p>これまでのグループ機能ではシステムレベルやウェブサイトレベルでカテゴリーをグループ化する際に同一のカテゴリー名が複数ある場合などに識別しづらいという問題がありました。今回のアップデートでブログ/ウェブサイト名やオブジェクトのクラス(ブログ記事かウェブページか、等)などの識別するための情報をオブジェクト名にあわせて併記するように改良し、またオブジェクトの編集画面へのリンクを追加しました(クリックすると別ウィンドウを開きます)。</p>

<p>また、左側に表示されるオブジェクトの数が多くなることで管理画面が重くなるため、左側に表示する項目を「タグ」で絞り込めるようにしました。アイテム、キャンペーン(広告管理)、リンク、カスタムオブジェクトがこれに対応しています。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ワンクリックでテンプレートを作成</h4>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/group_2.jpg"><img alt="グループテンプレートモジュールをワンクリックで作成" src="http://powercms.alfasado.net/blog/assets_c/2010/06/group_2-thumb-540x194-869.jpg" width="540" height="194" class="mt-image-none" /></a></p>

<p style="margin-top:16px;">グループ作成して保存すると管理画面下部の「保存」ボタンの横に「モジュールの作成」というボタンが表示されます。このボタンをクリックすることで(アイテムグループの場合)「アイテムグループ : グループ名)」というタイトルで下記のようなテンプレートモジュールが自動的に作られます。</p>

<pre><code>&lt;MTItemGroupAssets group=&quot;(グループ名)&quot;&gt;
    &lt;MTItemGroupAssetsHeader&gt;&lt;ul&gt;&lt;/MTItemGroupAssetsHeader&gt;
    &lt;li class=&quot;&lt;MTAssetType&gt;&quot;&gt;
&lt;MTIf tag=&quot;MTAssetType&quot; eq=&quot;image&quot;&gt;
    &lt;a href=&quot;&lt;MTAssetURL&gt;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;&lt;MTAssetThumbnailURL height=&quot;70&quot;&gt;&quot; alt=&quot;&lt;MTAssetLabel&gt;&quot; /&gt;&lt;/a&gt;
&lt;MTElse&gt;
    &lt;a href=&quot;&lt;MTAssetURL&gt;&quot; target=&quot;_blank&quot;&gt;&lt;MTAssetLabel&gt;&lt;/a&gt;
&lt;/MTElse&gt;
&lt;/MTIf&gt;
    &lt;/li&gt;
    &lt;MTItemGroupAssetsFooter&gt;&lt;/ul&gt;&lt;/MTItemGroupAssetsFooter&gt;
&lt;/MTItemGroupAssets&gt;</code></pre>

<p>生成されるテンプレートモジュールの内容はプラグイン設定(ウェブサイト/ブログ毎)にカスタマイズすることも可能です。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">テンプレートモジュールとウィジェットを混在してグループ化</h4>

<p>ワンクリックでテンプレートモジュールを作成できるだけでなく、テンプレートモジュール(とウィジェット)をグループ化する機能が追加されたことでモジュールをウィジェットのように扱うことができるようになります。サイトの表示項目をうまくブロック化してテンプレートグループとして管理することで、テンプレートに手を入れることなく表示項目やレイアウトを変更可能な構成にすることができると思います。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/group3.jpg"><img alt="テンプレートグループの編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/group3-thumb-540x236-871.jpg" width="540" height="236" class="mt-image-none" /></a></p>]]>
        
    </content>
</entry>

<entry>
    <title>管理画面を自由に設計-カスタムオブジェクト(2)</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/custom_object_2.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.235</id>

    <published>2010-06-27T05:20:55Z</published>
    <updated>2010-07-20T12:27:46Z</updated>

    <summary>管理画面を自由に設計でき、Movable Type (Power CMS for...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>管理画面を自由に設計でき、Movable Type (Power CMS for MT)の管理画面でオブジェクトのデータベース管理を行えるようにするプラグイン「カスタムオブジェクト」の紹介の続きです。</p>

<p>カスタムオブジェクトのテンプレート、個別ページの作成及びプラグインでの拡張についてご紹介します。<a href="http://powercms.alfasado.net/blog/2010/06/custom_object_1.html">カスタムオブジェクトについてはひとつ前のエントリをご覧ください。</a></p>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">カスタムオブジェクト関連のテンプレート・タグ</h3>

<p>タグはすべてスタティック/ダイナミック(<a href="http://powercms.alfasado.net/blog/2010/03/htmlmtdynamicmtml.html">DynamicMTML</a>)の両方に対応しています。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ブロックタグ</h4>

<table>
<tr><th style="width:20%">タグ</th><th>説明</th><th style="width:35%">備考</th></tr>
<tr><td>MTCustomObjects</td><td>カスタムオブジェクトをループで出力します</td><td>
コンテクスト (MTVar)にセットされる値<br />
 __first__:ループの最初<br />
 __counter__:ループの何回目か<br />
 __odd__:奇数回目の出力<br />
 __even__:偶数回目の出力<br />
 __last__:ループの最後<br />
<br />
指定出来るモディファイア<br />
 lastn (limit):何件表示するかを指定します。<br />
 offset:何件目から表示するかを指定します(デフォルト値:0)。<br />
 sort_order:昇順、降順を指定します(descend,ascend / デフォルト値:ascend)。<br />
 sort_by:ソートするカラム名を指定します(created_on, authored_on等 / デフォルト値:id)<br />
 blog_id:カスタムオブジェクトが属するブログのIDを指定する場合に記述します。<br />
tag:タグが一致するカスタムオブジェクトを取得します。<br />
group:カスタムオブジェクトグループ名を指定して、グループに属するカスタムオブジェクトを指定したソート順で出力します。groupモディファイアが指定されている場合、sort_byモディファイアの値は無視されます。
</td></tr>
<tr><td>MTCustomObjectsHeader / MTCustomObjectsFooter</td><td colspan="2">MTCustomObjectsブロックタグの最初と最後に出力されます。</td></tr>
<tr><td>MTCustomObject</td><td colspan="2">モディファイアidを指定してオブジェクトを1件ロードしてコンテクストをセットします。</td></tr>
<tr><td>MTCustomObjectTags</td><td>カスタムオブジェクトに付けられているタグをループ出力します。MTTagName、MTTagID等のタグ関連のMTタグが利用できます。
</td><td>MT標準のMTTagsタグでtypeに'customobject'を指定することができます</td></tr>
<tr><td>MTCustomObjectAuthor</td><td>
カスタムオブジェクトを作成したユーザーのコンテクストをセットします。</td><td>ブロックの中ではMTAuthor関連のタグが利用できます。</td></tr>
<tr><td>MTCustomObjectIfTagged</td><td colspan="2">MTCustomObjectsまたはMTCustomObjectタグの中でコンテクストにセットされたカスタムオブジェクトがタグ付けされている場合に出力されます。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ファンクションタグ</h4>

<p>ファンクションタグはMTCustomObjectLabelタグを除きMTCustomObjectsまたはMTCustomObjectタグの中でコンテクストにセットされたカスタムオブジェクトに関する情報を出力します。カスタムフィールドで指定した値についてはブログ記事等のカスタムフィールドと同様に出力可能です。日付け関係のタグでは日付けに関するモディファイアを利用可能です。</p>

<table>
<tr><th style="width:25%">タグ</th><th>説明</th></tr>
<tr><td>MTCustomObjectBlogID</td><td>カスタムオブジェクトのブログIDを出力します。</td></tr>
<tr><td>MTCustomObjectID</td><td>カスタムオブジェクトのIDを出力します。</td></tr>
<tr><td>MTCustomObjectName</td><td>カスタムオブジェクトの名前を出力します。</td></tr>
<tr><td>MTCustomObjectAuthorDisplayName</td><td>カスタムオブジェクトの作成者名を出力します。</td></tr>
<tr><td>MTCustomObjectAuthoredOn</td><td>カスタムオブジェクトの作成日を出力します。</td></tr>
<tr><td>MTCustomObjectModifiedOn</td><td>カスタムオブジェクトオブジェクトの更新日を出力します。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">カスタムオブジェクトをページとして表示する</h4>

<p>カスタムオブジェクトの一覧をインデックスアーカイブとして登録して出力することは可能ですが、個別のオブジェクトを表示させたいケースもあるかと思います。カスタムオブジェクトはアーカイブタイプに対応していないため個別ページを出力することはできませんが、Power CMS for MTのオプションプラグインViewerを利用することで動的に個別ページを出力させることができます。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">Viewerプラグインの設置とテンプレートの作成</h4>

<ul>
	<li>OptionsディレクトリからダウンロードしたViewerディレクトリの直下のcgi-scriptsディレクトリにあるmt-viewer.cgiをMTのインストールディレクトリに設置して実行可能なパーミッションを付与する</li>
	<li>ViewerディレクトリをMTのpluginsディレクトリにコピー</li>
	<li>Viewerディレクトリ直下のtmplディレクトリ以下に表示用のテンプレートを設置(例:customobject.tmpl)</li>
</ul>

<p>mt-viewer.cgi (*)はtemplateパラメタに指定したテンプレートを解釈してページを表示します。上記の例では http://example.com/cgi-bin/mt/mt-viewer.cgi?template=customobject&amp;blog_id=1 のようにして呼び出すことができます。</p>

<p>* CGIスクリプト名はテンプレートタグでMTViewerScriptで呼び出すことができます。この値は環境変数ViewerScriptをmt-config.cgiに記述することで変更することができます</p>

<p>テンプレートの中ではCGIスクリプトに渡された値がmt:var (MTGetVar)タグで取り出すことができます。上記リクエストの場合&lt;mt:var name=&quot;template&quot; escape=&quot;html&quot;&gt;で「customobject」を受け取ることができます。</p>

<p>customobject.tmplに下記のように記述することで各ブログのテンプレートモジュールを使うことができます。</p>

<pre><code>&lt;$mt:include module=&quot;$template&quot; blog_id=&quot;$blog_id&quot;$&gt;
</code></pre>

<p>パラメタにid指定がある場合は個別のカスタムオブジェクトのページを、id指定がない場合はカスタムオブジェクトの一覧を表示する簡単なテンプレートの例を示します。</p>

<pre><code>&lt;MTUnless name=&quot;id&quot;&gt;
&lt;MTCustomObjects lastn=&quot;30&quot;&gt;
    &lt;MTCustomObjectsHeader&gt;&lt;ul&gt;&lt;/MTCustomObjectsHeader&gt;
        &lt;li&gt;&lt;a href=&quot;&lt;MTViewerScript&gt;?blog_id=&lt;$MTBlogID$&gt;&amp;amp;id=&lt;MTCustomObjectID&gt;&amp;amp;template=&lt;mt:var name=&quot;template&quot; escape=&quot;html&quot;&gt;&quot;&gt;&lt;$MTCustomObjectName$&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;MTCustomObjectsFooter&gt;&lt;ul&gt;&lt;/MTCustomObjectsFooter&gt;
&lt;/MTCustomObjects&gt;
&lt;MTElse&gt;
    &lt;h1&gt;&lt;$MTCustomObjectName escape=&quot;html&quot;$&gt;(&lt;MTCustomobjectMore&gt;)&lt;/h1&gt;
    &lt;MTCustomobjectImageMain&gt;
        &lt;p&gt;&lt;img src=&quot;&lt;$MTAssetURL$&gt;&quot; /&gt;&lt;/p&gt;
    &lt;/MTCustomobjectImageMain&gt;
    &lt;MTCustomobjectBody filters=&quot;__default__&quot;&gt;
    &lt;ul&gt;
    &lt;li&gt;&lt;__trans phrase=&quot;Created On&quot;&gt; : &lt;$MTCustomObjectAuthoredOn$&gt;&lt;/li&gt;
    &lt;li&gt;&lt;__trans phrase=&quot;Created By&quot;&gt; : &lt;$MTCustomObjectAuthorDisplayName$&gt;&lt;/li&gt;
    &lt;/li&gt;
    &lt;/ul&gt;
&lt;/MTElse&gt;
&lt;/MTUnless&gt;
</code></pre>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">プラグインによる拡張</h3>

<p>カスタムオブジェクトプラグインを外部プラグインで拡張することが可能です。カスタムオブジェクト自体はMT::Objectのサブクラスですので、MTのAPIを利用してオブジェクトをロードしたりデータベースのカラムを拡張したりtemplate_param, template_source等のコールバックに対応したプラグインを書くことができます。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">コールバック</h4>

<p>コールバックをトリガとして処理を行うプラグインを書くことが可能です。</p>

<table>
<tr><th style="width:20%">コールバック</th><th>パラメタ</th><th>説明</th></tr>
<tr>
<td>cms_pre_save.customobject</td><td>$cb, $app, $obj, $original</td><td>管理画面からカスタムオブジェクトを作成・更新した際に保存の直前にコールされます。</td>
</tr>
<tr>
<td>cms_post_save.customobject</td><td>$cb, $app, $obj, $original</td><td>管理画面からカスタムオブジェクトを作成・更新した際に保存の直後にコールされます。</td>
</tr>
<tr>
<td>cms_post_delete.customobject</td><td>$cb, $app, $obj, $original</td><td>管理画面からカスタムオブジェクトを削除した直後にコールされます。</td>
</tr>
<tr>
<td>post_publish.customobject</td><td>$cb, $app, $obj, $original</td><td>一覧画面からカスタムオブジェクトのステータスを「公開」に変更した時にコールされます。</td>
</tr>
<tr>
<td>post_unpublish.customobject</td><td>$cb, $app, $obj, $original</td><td>一覧画面からカスタムオブジェクトのステータスを「下書き」に変更した時にコールされます。</td>
</tr>
</table>]]>
        
    </content>
</entry>

<entry>
    <title>管理画面を自由に設計-カスタムオブジェクト(1)</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/06/custom_object_1.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.234</id>

    <published>2010-06-27T02:24:01Z</published>
    <updated>2010-07-20T12:12:58Z</updated>

    <summary>今月末リリース予定のPower CMS for MT 2.03にはいくつかの新機...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>今月末リリース予定のPower CMS for MT 2.03にはいくつかの新機能が追加されます。ここでは新機能のひとつ「管理画面を自由に設計できるカスタムオブジェクト」機能を2回に分けてご紹介します。</p>

<p><a href="http://powercms.alfasado.net/news/power_cms_for_mt_ver203.html">*新機能の一覧についてはこちらのリリースをご覧ください。</a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">カスタムオブジェクトとは?</h3>

<p>Movable Type (Power CMS for MT)の管理画面でオブジェクトのデータベース管理を行えるようにするものです。例えば「商品」「文房具」「楽器」「書籍」「楽曲」など、ウェブサイト/ブログ毎に1種類のカスタムオブジェクトを持つことができます。</p>
<p>カスタムオブジェクトはインストール直後は名前、公開日といった最低限の項目しか持っていません。カスタムオブジェクトはカスタムフィールドに対応しているため、管理画面、入力項目は自由に設計することができます。カスタムフィールドで指定したテキスト(複数行)欄ではリッチテキストエディタを使うことができます。また、タグ付け、グループ化とソート順指定、管理画面から名前での検索、CSVのダウンロード、アップロードに対応しています。もちろんテンプレート・タグを使って値を自在に取り出すことが出来ます。</p>
<p>さらに、このカスタムオブジェクトを拡張するプラグインを書くこともできます。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_2.jpg"><img alt="カスタムオブジェクト編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_2-thumb-540x241-857.jpg" width="540" height="241" class="mt-image-none" /></a>
<br />
インストール直後のカスタムオブジェクト編集画面
</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:14px">インストール</h3>

<p>カスタムオブジェクトプラグインはオプションプラグインのため、初期状態ではインストールされていません。OptionsディレクトリからCustomObjectディレクトリをMTのpluginsディレクトリ以下にコピーして管理画面にアクセスします。データベースのアップグレード画面に遷移しますのでユーザー名/パスワード入力してデータベースのアップグレードを行ってください(あらかじめデータベースのバックアップをとっておいてください)。</p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_1.jpg"><img alt="プラグイン設定画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_1-thumb-264x228-853.jpg" width="264" height="228" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a></span>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:14px">名称を設定する</h3>

<p>カスタムオブジェクトで管理するオブジェクトの名称はプラグイン設定画面で行うことができます。ブログ毎に指定することもできますし、システムやウェブサイト単位で行うことも可能です。この例では「文房具」という名称を設定します。<br style="clear:both" /></p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_0.jpg"><img alt="ロールの設定画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_0-thumb-264x144-855.jpg" width="264" height="144" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a></span>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">カスタムオブジェクトの権限</h3>
<p>カスタムオブジェクトを扱えるユーザーは「カスタムオブジェクトの管理」権限を持ったユーザーです。プラグインをインストールすると「カスタムオブジェクト管理者」というロールが追加されます(プラグインを設置した状態で新規インストールした場合にはロールは追加されませんので、別途ロールを追加するか既存のロールに「カスタムオブジェクトの管理」権限を追加してください)。<br style="clear:both" /></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">管理画面をカスタムフィールドで自由に設計</h3>

<p>インストール直後のカスタムオブジェクトの作成・編集画面は画像のようになっています。入力項目は「名前」「タグ」「作成日」「公開状態」の4つですので、それ以外の入力項目は「カスタムフィールド」で設定していきます。この例では「文房具」オブジェクトのカスタムフィールドを下記のように設定しました。</p>

<table>
<tr><th>名前</th><th>ベースネーム</th><th>テンプレートタグ</th><th>種類</th></tr>
<tr><td>名称(追記)</td><td>cf_more</td><td>CustomobjectMore</td><td>テキスト</td></tr>
<tr><td>メーカー名</td><td>cf_manufacturer</td><td>CustomobjectManufacturer</td><td>テキスト</td></tr>
<tr><td>商品番号</td><td>cf_itemnumber</td><td>CustomobjectItemNumber</td><td>テキスト</td></tr>
<tr><td>紹介文</td><td>cf_body</td><td>CustomobjectBody</td><td>テキスト(複数行)</td></tr>
<tr><td>画像(1)</td><td>cf_image1</td><td>CustomobjectImageMain</td><td>画像</td></tr>
<tr><td>画像(2)</td><td>cf_image2</td><td>CustomobjectImageSub</td><td>画像</td></tr>
<tr><td>サイズ</td><td>cf_size</td><td>CustomobjectSize</td><td>テキスト</td></tr>
<tr><td>価格(税込)</td><td>cf_price</td><td>CustomobjectPrice</td><td>テキスト</td></tr>
<tr><td>備考</td><td>cf_remarks</td><td>CustomobjectRemarks</td><td>テキスト</td></tr>
<tr><td>メーカーURL</td><td>cf_url</td><td>CustomobjectUrl</td><td>テキスト</td></tr>
</table>

<p>設定後、カスタムオブジェクト作成・編集画面に追加したカスタムフィールドが表示されます。プラグインの設定で「エディタを利用する」にチェックを入れておくと「テキスト(複数行)」フィールドでリッチテキストエディタが使えるようになります。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_4.jpg"><img alt="カスタムオブジェクト編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_4-thumb-540x294-851.jpg" width="540" height="294" class="mt-image-none" style="" /></a>
<br />カスタムフィールドで項目設定後のカスタムオブジェクトの編集画面</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:14px">CSVからデータを一括投入する</h3>

<p>一覧画面の上部のリンクをクリックするとCSVでのデータのダウンロードとアップロード(一括登録)を行うことができます。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_6.jpg"><img alt="カスタムオブジェクトの一覧画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_6-thumb-540x182-859.jpg" width="540" height="182" class="mt-image-none" style="" /></a></p>

<p>CSVの書式は、CSVをダウンロードして確認することができます。1行目にカラム名(name,status等)、タグについてはtags(値はカンマ区切り)、カスタムフィールドについてはfield.＋ベースネーム(例:field.cf_body)を記載し、2行目以降に投入したい値を入力します。日付についてはyyyyMMddHHmmss形式で入力してください。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_7.jpg"><img alt="CSVファイルのサンプル" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_7-thumb-540x81-861.jpg" width="540" height="81" class="mt-image-none" /></a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:14px">カスタムオブジェクトをグループ化してソート順指定する</h3>

<p>Power CMS for MTの他のグループ機能と同様のインターフェイスでカスタムオブジェクトをグループ化、ソート順を指定することができます。</p>
<p>グループの作成は「カスタムオブジェクト」メニュー(この例では「文房具」メニュー)の「グループの作成」をクリックして行います。</p>

<p>左にオブジェクトの一覧(「タグ」での絞り込みが可能です)が表示されますので、グループに入れるオブジェクトをマウスでドラッグして右側のエリアにドラッグ&amp;ドロップします。順番の入れ替えもドラッグ&amp;ドロップで行えます。グループから削除したいオブジェクトは逆に右側のエリアから左へドラッグ&amp;ドロップしてください。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_8.jpg"><img alt="カスタムオブジェクトグループの編集画面" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_8-thumb-540x323-863.jpg" width="540" height="323" class="mt-image-none" /></a></p>

<p>項目を指定したら画面下部の「グループの設定」で名前と追加条件を指定して保存してください(ブログ/ウェブサイト内でグループ名はユニークである必要があります)。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%;margin-top:14px">グループ化したカスタムオブジェクトの一覧を表示するテンプレートモジュールを作成する</h3>

<p>グループを保存後、グループ化したカスタムオブジェクトの一覧を表示するテンプレートモジュールをワン・クリックで作成することができます(今回のバージュンアップではPower CMS for MTのすべてのグループでモジュール作成機能が追加されました)。</p>

<p>モジュールを作成するには、グループの保存後画面下部の「保存」ボタンの右側に表示される「モジュールの作成」ボタンをクリックするだけです。これで自動的にこのグループのオブジェクトの一覧を取り出すテンプレートモジュールが作成されますので、修正の必要があれば適宜編集して「保存」ボタンをクリックしてテンプレートモジュールを保存してください。「モジュールの作成」をクリックした時に生成されるテンプレートのひな形はプラグインの設定で指定することができます。</p>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/06/27/CustomObj_9.jpg"><img alt="モジュールの作成ボタン" src="http://powercms.alfasado.net/blog/assets_c/2010/06/CustomObj_9-thumb-540x166-865.jpg" width="540" height="166" class="mt-image-none" /></a></p>

<p>次回はカスタムオブジェクトを出力するテンプレートやカスタムオブジェクトをページとして表示するCGIについてご紹介する予定です。</p>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/2010/06/custom_object_2.html">管理画面を自由に設計-カスタムオブジェクト(2)</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>リンクをオブジェクトで管理するLinkプラグイン</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/05/link.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.232</id>

    <published>2010-05-27T13:57:13Z</published>
    <updated>2010-07-20T11:46:40Z</updated>

    <summary>Movable Typeでは独自のオブジェクトのテーブルを作成して管理画面で作成...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>Movable Typeでは独自のオブジェクトのテーブルを作成して管理画面で作成・管理したり、作成したオブジェクトに対応するテンプレート・タグを作成することができます。</p>

<p>今回、(主に)外部リンクやRSS等の情報を管理するオブジェクトを作り、管理画面で管理したりエディタへの貼付けに対応した「Link」プラグインを作成しました。GNU General Public Licenseで公開します。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">Linkプラグインについて</h3>

<ul>
	<li>外部リンクの「名前」「URL」「RSS」等の情報をオブジェクトとして管理できます。</li>
	<li>リンク「タグ」をつけることができます。</li>
	<li>管理画面での検索に対応しています。</li>
	<li>エディタにリンクを貼付けることができます。</li>
	<li>リンクをMTタグで出力することができます。</li>
	<li>スタティック/ダイナミック・パブリッシングの両方に対応しています。</li>
	<li>OPML形式のファイルからリンクをインポートすることができます。</li>
	<li>一覧画面、または定期実行タスクによってリンクチェックを行えます。</li>
	<li>カスタム・パーミッション/ロールを作成します。</li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">Perlモジュールについて</h3>

<ul>
	<li>XML::Simple (XML::Parser) - OPMLからのインポートの際に必要</li>
	<li>LWP::UserAgent - リンクチェックに必要</li>
	<li>HTTP::Date - リンクチェックに必要</li>
	<li>Digest::MD5 - リンクチェックに必要</li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">スクリーンショット</h3>

<p><a href="http://powercms.alfasado.net/blog/2010/05/27/Safari001.png"><img alt="リンクの一覧画面" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari001-thumb-264x143-830.png" width="264" height="143" class="mt-image-none" /></a>
&nbsp;
<a href="http://powercms.alfasado.net/blog/2010/05/27/Safari002.png"><img alt="リンクの作成・編集" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari002-thumb-264x143-832.png" width="264" height="143" class="mt-image-none" /></a>
</p>

<p><a href="http://powercms.alfasado.net/blog/2010/05/27/Safari003.png"><img alt="タグの管理" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari003-thumb-264x143-834.png" width="264" height="143" class="mt-image-none" /></a>
&nbsp;
<a href="http://powercms.alfasado.net/blog/2010/05/27/Safari004.png"><img alt="ロール - リンク管理者" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari004-thumb-264x143-836.png" width="264" height="143" class="mt-image-none" /></a>
</p>

<p>
<a href="http://powercms.alfasado.net/blog/2010/05/27/Safari005.png"><img alt="リンクの検索" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari005-thumb-264x143-838.png" width="264" height="143" class="mt-image-none" /></a>
&nbsp;
<a href="http://powercms.alfasado.net/blog/2010/05/27/Safari007.png"><img alt="エディタへの貼付け" src="http://powercms.alfasado.net/blog/assets_c/2010/05/Safari007-thumb-264x143-840.png" width="264" height="143" class="mt-image-none" /></a>
</p>

<h3 style="font-weight:bold;margin-bottom:0.3em;font-size:105%">テンプレート・タグ</h3>
<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ブロック・タグ</h4>

<table>
<tr><th style="width:20%">タグ</th><th>説明</th><th style="width:35%">備考</th></tr>
<tr><td>MTLinks</td><td>リンクをループで出力します</td><td>
コンテクスト(MTVar)にセットされる値<br />
 __first__:ループの最初<br />
 __counter__:ループの何回目か<br />
 __odd__:奇数回目の出力<br />
 __even__:偶数回目の出力<br />
 __last__:ループの最後<br />
<br />
指定出来るモディファイア<br />
 lastn (limit):何件表示するかを指定します。<br />
 offset:何件目から表示するかを指定します(デフォルト値:0)。<br />
 sort_order:昇順、降順を指定します(descend,ascend / デフォルト値:ascend)。<br />
 sort_by:ソートするカラム名を指定します(created_on, urlupdated_on, rssupdated_on, url等 / デフォルト値:id)<br />
 blog_id:リンクが属するブログのIDを指定する場合に記述します。<br />
 rating:ランク(rating)が指定した数字と一致するリンクをロードします。<br />
 more:ランク(rating)が指定した数字以上のリンクをロードします。<br />
 less:ランク(rating)が指定した数字以下のリンクをロードします。<br />
 tag:タグが一致するリンクをロードします。
</td></tr>
<tr><td>MTLinksHeader / MTLinksFooter</td><td colspan="2">MTLinksブロックタグの最初と最後に出力されます。</td></tr>
<tr><td>MTLinkTags</td><td>リンクのタグをループ出力します。MTTagName、MTTagID等のタグ関連のMTタグが利用できます。
</td><td>MT標準のMTTagsタグでtypeに'link'を指定することができます</td></tr>
<tr><td>MTLinkAuthor</td><td>
リンクを作成したユーザーのコンテクストをセットします。</td><td>ブロックの中ではMTAuthor関連のタグが利用できます。</td></tr>
<tr><td>MTLinkIfTagged</td><td colspan="2">リンクがタグ付けされている時に出力されます。</td></tr>
<tr><td>MTIfActiveLink (MTIfBrokenLink)</td><td colspan="2">リンクのURLがリンク切れしていない(している)場合に出力されます。</td></tr>
<tr><td>MTIfActiveRss (MTIfBrokenRss)</td><td colspan="2">リンクのRSSがリンク切れしていない(している)場合に出力されます。</td></tr>
<tr><td>MTIfActiveImage (MTIfBrokenImage)</td><td colspan="2">リンクの画像のURLがリンク切れしていない(している)場合に出力されます。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:103%">ファンクション・タグ</h4>

<table>
<tr><th style="width:25%">タグ</th><th>説明</th></tr>
<tr><td>MTLinkBlogID</td><td>リンクのブログIDを出力します。</td></tr>
<tr><td>MTLinkName</td><td>リンクの名前を出力します。</td></tr>
<tr><td>MTLinkHTML</td><td>リンクをHTMLのタグの形式で出力します。</td></tr>
<tr><td>MTLinkAuthorDisplayName</td><td>リンクの作成者名を出力します。</td></tr>
<tr><td>MTLinkUrl</td><td>リンクのURLを出力します。</td></tr>
<tr><td>MTLinkDescription</td><td>リンクの概要を出力します。</td></tr>
<tr><td>MTLinkTitle</td><td>リンクのタイトル(title属性値)を出力します。</td></tr>
<tr><td>MTLinkRel</td><td>リンクのrel属性値を出力します。</td></tr>
<tr><td>MTLinkImageAddress</td><td>リンクの画像URLを出力します。</td></tr>
<tr><td>MTLinkRSSAddress</td><td>リンクのRSSのURLを出力します。</td></tr>
<tr><td>MTLinkNotes</td><td>リンクのメモを出力します。</td></tr>
<tr><td>MTLinkRating</td><td>リンクのランク(rating)を出力します。</td></tr>
<tr><td>MTLinkAuthoredOn</td><td>リンクの作成日を出力します。</td></tr>
<tr><td>MTLinkModifiedOn</td><td>リンクオブジェクトの更新日を出力します。</td></tr>
<tr><td>MTLinkURLUpdatedOn</td><td>リンク先のページの最終更新日を出力します(正確に取得できない可能性があります)。</td></tr>
<tr><td>MTLinkRSSUpdatedOn</td><td>リンク先のRSSの最終更新日を出力します。</td></tr>
</table>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">コールバック</h3>

<p>コールバックをトリガとして処理を行うプラグインを書くことで例えばリンク切れ検出をメールで通知する、等の拡張が可能です。</p>

<table>
<tr><th style="width:20%">コールバック</th><th>パラメタ</th><th>説明</th></tr>
<tr>
<td>cms_pre_save.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを作成・更新した際に保存の直前にコールされます。</td>
</tr>
<tr>
<td>cms_post_save.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを作成・更新した際に保存の直後にコールされます。</td>
</tr>
<tr>
<td>cms_post_delete.link</td><td>$cb, $app, $obj, $original</td><td>管理画面からリンクオブジェクトを削除した直後にコールされます。</td>
</tr>
<tr>
<td>post_broken_url.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトのリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_broken_rss.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトのRSSのリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_broken_image.link</td><td>$cb, $app, $obj, $original</td><td>定期実行タスクの実行時にLinkオブジェクトの画像のリンク切れを検知した時にコールされます。</td>
</tr>
<tr>
<td>post_task_blog_linkcheck</td><td>$cb, $app, $blog, $error</td><td>定期実行タスクで各ブログのリンクチェックが完了したタイミングでコールされます。エラーが1つ以上見つかったときには$errorに1が入ります。</td>
</tr>
<tr>
<td>post_unpublish.link</td><td>$cb, $app, $obj, $original</td><td>一覧画面からリンクのステータスを非公開にした際にコールされます。</td>
</tr>
<tr>
<td>post_publish.link</td><td>$cb, $app, $obj, $original</td><td>一覧画面からリンクのステータスを公開にした際にコールされます。</td>
</tr>
</table>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">Power CMS for MTへの機能追加について</h3>

<p>商用版のPower CMS for MT Ver.2の次期マイナーアップデートの提供の際に、リンク・グループ(ドラッグ&amp;ドロップでリンクイブジェクトをグルーピング&amp;ソーティング可能な機能)、CSVへのエクスポート/インポートに対応したLinkプラグインがバンドルされます。また、バナーやムービーの管理が可能でコンバージョンや表示数の測定が可能な「Campaign」プラグインや「アイテム」をグルーピング&amp;ソーティング可能にする「AssetGroup」プラグイン、エディタからの絵文字貼付けに対応した新しい携帯サイト作成支援機能等、いくつかの新しい機能が追加される予定です。ご期待ください。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">ライセンス</h3>
<ul>
	<li>GNU General Public License - <a href="http://www.opensource.jp/gpl/gpl.ja.html">GNU 一般公衆利用許諾契約書</a></li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">ダウンロード</h3>
<ul>
	<li><a href="http://powercms.alfasado.net/blog/2010/05/27/Link.zip">Link.zip (48.3KB)</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Power CMS for MT ver.2のドラッグ&amp;ドロップインターフェイス</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/05/power_cms_for_mt_ver20.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.231</id>

    <published>2010-05-26T05:38:13Z</published>
    <updated>2010-07-20T11:31:59Z</updated>

    <summary>提供開始から1ヶ月が経過したPower CMS for MT Ver.2。大幅に...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>提供開始から1ヶ月が経過したPower CMS for MT Ver.2。大幅に改良されたユーザーインターフェイスが好評をいただいています。</p>

<p>中でもお勧めなのが画像等のファイルのドラッグ&amp;ドロップアップロード。Internet Explorer 7/8、Firefox 3.5以上ではGoogleが提供しているGearsをインストールして利用いただけます。Firefox 3.6以上では追加インストールの必要はありません。</p>

<h2 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">ドラッグ&amp;ドロップアップロードの利用手順</h2>
<ul>
	<li><a href="http://gears.google.com/">Gearsのウェブサイトへ移動して、Gearsをダウンロードしてインストールします。</a></li>
	<li>Power CMS for MTにログインしてユーザー情報の編集画面へ移動「ドロップボックスを有効にする」にチェックを入れて設定を保存します。</li>
</ul>

<p>左メニューのタブ「アイテムリスト」をクリックして下部のドロップボックスにデスクトップに保存されている画像やファイル等をドロップしてアップロードできるようになります(一度にアップロード出来るファイルの点数は10点までです)。</p>

<div style="text-align:center;margin-bottom:16px">
<object width="448" height="269"><param name="movie" value="http://www.youtube.com/v/aSIMLmttbI8&amp;hl=ja_JP&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/aSIMLmttbI8&amp;hl=ja_JP&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="448" height="269"></embed></object>
</div>

<ul>
	<li><a  href="http://www.youtube.com/watch?v=aSIMLmttbI8">YouTubeのページへ移動する</a></li>
</ul>

<h2 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">Power CMS for MTの様々なドラッグ&amp;ドロップインターフェイス</h2>

<p>Power CMS for MT Ver.2ではこの他にも様々な箇所でドラッグ&amp;ドロップアップロードインターフェイスを実装しています。</p>

<ul>
	<li>ページリストからエディタへのドロップ(リンクの挿入)</li>
	<li>エントリ/カテゴリ/ブログをグループ化して表示順を設定するグループ機能</li>
	<li>混在するオブジェクトをグループ化して表示順を制御するオブジェクト・グループ</li>
	<li>エントリの拡張フィールドの表示順の変更</li>
</ul>

<p>先日開催されたセミナーでもこれらドラッグ&amp;ドロップを含む新しい機能を中心にご紹介させていただきましたが、当日のスライドを公開いたします。</p>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/2010/05/26/PowerCMS2_01.pdf">Power CMS for MT Ver.2 製品紹介(PDF; 6.3MB)</a></li>
</ul>

<p>導入事例について、セミナーレポートのページもあわせてご覧ください。<a href="http://www.concentinc.jp/">株式会社コンセント</a>様による<a href="http://www.roppongihills.com/">六本木ヒルズ様</a>ウェブサイトの事例や<a href="http://www.saraya.com/">サラヤ株式会社</a>様の事例をご紹介いただきました。</p>

<ul>
	<li><a href="http://www.sixapart.jp/pressroom/2010/05/power_cms_for_mt_2_2010517.html">【セミナーレポート】次世代ウェブサイトマネジメントプラットフォーム「Power CMS for MT 2」体感 セミナー（2010/5/17）</a></li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Power CMS for MT ver.2 - DynamicMTMLでPC/携帯/iPhoneに対応させる</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/04/htmlmtdynamicmtml2.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.206</id>

    <published>2010-04-02T10:05:38Z</published>
    <updated>2010-04-03T02:35:45Z</updated>

    <summary>Power CMS for MT ver.2(MT5対応版)はまもなくリリースの...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="イベント・セミナー情報" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="技術情報" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>Power CMS for MT ver.2(MT5対応版)はまもなくリリースの予定です。</p>

<p><strong>4月19日(月)、シックス・アパート株式会社/アルファサード有限会社共催の「次世代ウェブサイトマネジメントプラットフォーム「Power CMS for MT ver.2」体感 セミナー」でその全貌をご紹介します。</strong></p>

<ul>
	<li><a href="https://www.sixapart.jp/seminar/sa/2010/03/16-1828.html">次世代ウェブサイトマネジメントプラットフォーム「Power CMS for MT ver.2」体感 セミナー(シックス・アパート株式会社のウェブサイトへ)</a></li>
</ul>

<h3 style="font-weight:bold;margin-bottom:0.2em;margin-top:1.2em;font-size:120%">同一のURLでPC/携帯/iPhone対応のページを出力する</h3>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/2010/03/htmlmtdynamicmtml.html">Power CMS for MT ver.2 - 静的なHTMLにMTタグの記述を可能にするDynamicMTMLプラグイン</a></li>
</ul>

<p>先日公開したDynamicMTMLプラグインですが、本日アップデートしました。アップデート内容は下記の通りです。</p>

<ul>
	<li>DoCoMo端末からのアクセス時にContent-Type: application/xhtml+xml を返すように</li>
	<li>MT管理画面からのプレビュー時にSmartyのキャッシュが生成されないように(これらの修正についてはmtview.phpのテンプレートを削除して再インストールして適用ください)</li>
	<li>MTSearchEntriesの修正(entryのロード時にblogをセットしていなかった点の修正)、target指定なしの時 entry_title||entry_text_more||entry_keywords||entry_excerpt||entry_text を対象に検索をかけるように</li>
	<li>ブロックタグ MTifiPhone, MTifKeitai の追加</li>
	<li>ファンクションタグ MTRawMTMLTag の追加</li>
</ul>

<p>さて、標題の通り今回のアップデートには携帯サイト作成時に便利な機能が含まれます。今日は同一URLでPC/携帯/iPhoneにそれぞれに対応させた出力をさせるテンプレート作りのヒントを簡単にご紹介します。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">MTRawMTMLタグと新しいブロックタグでCSSを切り替える</h4>

<p>先日の例ではエントリーの本文にMTMLを記述したりファイルの中に直接MTMLを記述する方法をご紹介しましたが、ここでの例はMTのテンプレートに記述する形となります。MTタグをテンプレートに記述すると(当然)再構築時にテンプレートは処理されて処理結果がファイルに書き出されますが、これでは動的にMTタグを処理することができません。そこで、部分的に動的に処理させたい箇所をブロックタグMTRawMTMLで囲みます。</p>

<pre><code class="mtml">&lt;MTRawMTML&gt;
&lt;MTifKeitai&gt;
        &lt;link href=&quot;/common/css/keitai.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
    &lt;MTElse&gt;
    &lt;MTifiPhone&gt;
        &lt;link href=&quot;/common/css/iphone.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
    &lt;MTElse&gt;
        &lt;link href=&quot;/common/css/pc.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
    &lt;/MTElse&gt;
    &lt;/MTifiPhone&gt;
    &lt;/MTElse&gt;
&lt;/MTifKeitai&gt;
&lt;/MTRawMTML&gt;</code></pre>

<p>MTRawMTMLタグ内に記述されたMTMLは再構築時には処理されずにそのままこの中身がファイルに出力されます。出力されたMTタグはアクセス時に mtview.php によって動的に処理されブラウザに返されます(ユーザーエージェント情報によって処理を変えるため、ダイナミックパブリッシング設定の「ビルド結果をキャッシュする」をオフにしておいてください)。</p>

<p>テンプレートをまるごとMTRawMTMLタグで囲むことも出来ますが「部分的に動的」のメリットを活かすためには最低限の分岐部分のみをMTMLで出力することをお勧めします。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">MTRawMTMLTagタグ</h4>

<p>MTRawMTMLタグで囲んだ部分はMTMLがそのまま出力されますが、ブロックタグを利用する際に、開始タグと終了タグ、分岐(MTElse等)だけを動的に出力したい場合、例えば下記のような例はエラーとなります。</p>

<pre><code class="mtml">&lt;MTRawMTML&gt;&lt;MTifKeitai&gt;&lt;/MTRawMTML&gt;
    --携帯用の出力内容
&lt;MTRawMTML&gt;&lt;/MTifKeitai&gt;&lt;/MTRawMTML&gt;</code></pre>

<p>これは、MTRawMTML、MTifKeitaiが共にブロックタグとなるため「MTifKeitaiに対応した /MTifKeitai がない」とみなされてしまうからです。</p>

<p>そこで、このようなケースで利用できるファンクションタグ MTRawMTMLTag を用意しました。</p>

<pre><code class="mtml">&lt;MTRawMTMLTag tag=&quot;MTifKeitai&quot;&gt;
    --携帯用の出力内容
&lt;MTRawMTMLTag tag=&quot;/MTifKeitai&quot;&gt;</code></pre>

<p>この記述はエラーになりません。出力結果は下記のようになります。</p>

<pre><code class="mtml">&lt;MTifKeitai&gt;
    --携帯用の出力内容
&lt;/MTifKeitai&gt;</code></pre>

<p>モディファイアを指定したい場合、MTRawMTMLTagタグのparamsモディファイアに指定します。</p>

<pre><code class="mtml">&lt;MTRawMTML&gt;&lt;MTQuery key=&quot;query&quot; setvar=&quot;query&quot;&gt;&lt;/MTRawMTML&gt;
&lt;MTRawMTMLTag tag=&quot;MTIf&quot; params='name=&quot;query&quot; eq=&quot;foo&quot;'&gt;
    -- ?query=foo 付きリクエストの場合に出力
&lt;MTRawMTMLTag tag=&quot;/MTIf&quot;&gt;</code></pre>

<p>このテンプレートは出力されると以下のようになります。</p>

<pre><code class="mtml">&lt;MTQuery key=&quot;query&quot; setvar=&quot;query&quot;&gt;
&lt;MTIf name=&quot;query&quot; eq=&quot;foo&quot;&gt;
    -- bar.html?query=foo 付きリクエストの場合に出力
&lt;/MTIf&gt;</code></pre>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">携帯ページで「本文」と「続き」を擬似的に別ページに分割する</h3>

<p>これらのタグを利用して、携帯からのアクセス時に「本文」「続き」を別のページに(擬似的に)分けて表示するテンプレートを書いてみます。</p>

<pre><code class="mtml">&lt;MTRawMTML&gt;
&lt;MTIfKeitai&gt;
&lt;mt:query key=&quot;more&quot; setvar=&quot;more&quot;&gt;
&lt;mt:if name=&quot;more&quot; eq=&quot;1&quot;&gt;
    &lt;MTEntryMore filters=&quot;__default__&quot;&gt;
    &lt;p&gt;&lt;a href=&quot;&lt;MTEntryPermalink&gt;&quot;&gt;[戻る]&lt;/a&gt;&lt;/p&gt;
&lt;mt:else&gt;
    &lt;MTEntryBody filters=&quot;__default__&quot;&gt;
    &lt;p&gt;&lt;a href=&quot;&lt;MTEntryPermalink&gt;?more=1&quot;&gt;[続き]&lt;/a&gt;&lt;/p&gt;
&lt;/mt:else&gt;
&lt;/mt:if&gt;
&lt;MTElse&gt;
&lt;MTifiPhone&gt;
    --iPhone用のテンプレート
&lt;MTElse&gt;
    --PC用のテンプレート
&lt;/MTElse&gt;
&lt;/MTifiPhone&gt;
&lt;/MTElse&gt;
&lt;/MTIfKeitai&gt;&lt;/MTRawMTML&gt;</code></pre>

<p>URLに ?more=1 がついているかどうかによって表示を切り替えています。簡単な例ですが同一URLでPC/iPhone/携帯対応のページを出力するページがDynamicMTMLによって作成できることがお分かりいただけたかと思います。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%"><a name="download">プラグインのダウンロード</a></h3>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/DynamicMTML/Commercial_0.8.zip"> DynamicMTML (商用ライセンス評価版 *1)</a></li>
	<li><a href="http://powercms.alfasado.net/blog/DynamicMTML/GPL_0.8.zip">DynamicMTML (GPLライセンス *2)</a></li>
</ul>

<p style="font-size:90%">*1 Movable Type個人無償版をご利用の方は無償でご利用いただけます。<br />
*2 <a href="http://www.opensource.jp/gpl/gpl.ja.html">GNU 一般公衆利用許諾契約書</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Power CMS for MT ver.2 - 静的なHTMLにMTタグの記述を可能にするDynamicMTMLプラグイン</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/03/htmlmtdynamicmtml.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.205</id>

    <published>2010-03-31T03:00:00Z</published>
    <updated>2010-04-02T08:19:59Z</updated>

    <summary>Power CMS for MT ver.2(MT5対応版)はまもなくリリースの...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="Power CMS 2" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="イベント・セミナー情報" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="技術情報" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>Power CMS for MT ver.2(MT5対応版)はまもなくリリースの予定です。</p>

<p><strong>4月19日(月)、シックス・アパート株式会社/アルファサード有限会社共催の「次世代ウェブサイトマネジメントプラットフォーム「Power CMS for MT ver.2」体感 セミナー」でその全貌をご紹介します。</strong></p>

<ul>
	<li><a href="https://www.sixapart.jp/seminar/sa/2010/03/16-1828.html">次世代ウェブサイトマネジメントプラットフォーム「Power CMS for MT ver.2」体感 セミナー(シックス・アパート株式会社のウェブサイトへ)</a></li>
</ul>

<p>リリースに先立ち、Power CMS for MT ver.2の新しいフィーチャーであるDynamicMTMLプラグインをご紹介します。尚、DynamicMTMLプラグインについては製品とは別途評価版(個人無償ライセンスでのご利用は無償)及びGPLライセンスをご用意いたしました。本日Power CMS for MT ver.2に先立って単体での<a href="#download">配布を開始いたします。</a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">DynamicMTMLの概要</h3>

<ul>
	<li>Movable Typeのダイナミックパブリッシングのエンジンを利用して静的なHTMLファイルの中に記述されたMTML(MTタグ=Movable Type Markup Language)を動的に処理します。</li>
	<li>クエリ付きリクエストを独自にキャッシュする仕組みを備えています。</li>
	<li>静的生成とダイナミックパブリッシングとの共存が可能です。</li>
	<li>Movable Typeで管理していないファイルでも動作させることが可能です。</li>
</ul>

<p>以下、DynamicMTMLプラグインの利用方法を順を追ってご紹介します。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">インストールと準備</h3>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">動作環境</h4>

<ul>
	<li>Movable Type5上で動作します(MT4では動作しません)。</li>
	<li>インストールするMovable Type設置済みのサーバーがダイナミックパブリッシングをサポートしていること。</li>
	<li>Apacheウェブサーバーで .htaccess の設置が可能なこと(IISについてはカスタム・エラーハンドラの設定が必要になります*)。</li>
</ul>

<p>*IIS Webサーバーについては現段階では動作確認しておりません。</p>

<ol>
	<li> ダイナミックパブリッシングが利用可能なことを確認する(ブログのサイト・パス以下に templates_c, cache ディレクトリが存在し、サーバーから書き込み可能である必要があります)。</li>
	<li>プラグインをダウンロードする。</li>
	<li>MTのpluginsディレクトリにDynamicMTMLをアップロードする。</li>
	<li>MTディレクトリ以下に powercms_files ディレクトリを作成し、ウェブサーバーから書き込み可能なパーミッションを設定する(*)。</li>
</ol>

<p>*powercms_filesディレクトリの場所は環境設定ファイル mt-config.cgi に環境変数 PowerCMSFilesDir を指定することにより別の場所を指定可能です。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">ダイナミックパブリッシングの設定</h4>

	<p>ブログの設定(全般設定)でダイナミックパブリッシングの各項目を設定します。</p>

<p><a href="http://powercms.alfasado.net/blog/2010/03/31/Safari010.jpg"><img alt="ブログのダイナミックパブリッシング設定画面" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari010-thumb-544x247-613.jpg" width="544" height="247" class="mt-image-none" style="" /></a></p>

<table>
<tr><th style="width:25%">項目名</th><th>説明</th><th style="width:25%">設定例</th></tr>
<tr><td>キャッシュする</td><td>Movable Typeの標準ダイナミックパブリッシングのキャッシュを利用するかどうか</td><td>ON</td></tr>
<tr><td>条件付き取得を有効にする</td><td>Movable Typeの標準ダイナミックパブリッシングでConditional GETを利用するかどうか</td><td>ON</td></tr>
<tr><td>ビルド結果をキャッシュする</td><td>DynamicMTMLによってビルドされた結果及びダイナミックパブリッシングでクエリ付きのリクエストが送られた場合、その結果をキャッシュします</td><td>ON(但し常に動的に結果を取得したい場合はOFF)</td></tr>
<tr><td>( ビルド結果のキャッシュ有効期限(秒))</td><td>キャッシュの有効期限(秒)</td><td>適宜(再構築の際にキャッシュはクリアされますのでキャッシュを利用する場合は長目に設定しておいて構いません)</td></tr>
<tr><td>クエリ付きリクエストを条件付き取得する</td><td>この設定は現段階では有効ではありません</td><td>-</td></tr>
<tr><td>ビルドする拡張子</td><td>DynamicMTMLによって処理するファイルの拡張子をカンマ区切りで指定します</td><td>html,mtml 等</td></tr>
<tr><td>処理対象外の拡張子</td><td>セキュリティ等の理由からDynamicMTMLの処理対象外にするファイルの拡張子をカンマ区切りで指定します</td><td>php,cgi,fcgi</td></tr>
<tr><td>ディレクトリインデックス</td><td>リクエストが/で終わっていた時に処理するファイルをカンマ区切りで指定します</td><td>index.html,index.mtml</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">テンプレートのインストール</h4>

<p style="float:right;width:195;text-align:right;"><img alt="テンプレート一覧画面のショートカット" src="http://powercms.alfasado.net/blog/2010/03/31/Safari013.jpg" width="186" height="220" class="mt-image-none" style="" /></p>

<ol>
	<li>DynamicMTMLを有効にするブログまたはウェブサイトのデザイン＞テンプレートの画面に移動します。</li>
	<li>右カラムの「ショートカット」から「DynamicMTMLのインストール」をクリックします。</li>
	<li>「DynamicMTML Bootstrapper(出力ファイル名:mtview.php)」「DynamicMTML .htaccess(出力ファイル名:.htaccess)」の2つのインデックス・テンプレートがインストールされます(*)。</li>
	<li>インストールされたテンプレートを公開(再構築)します。</li>
</ol>

<p>*これらのファイルは該当のブログ(ウェブサイト)がダイナミックパブリッシングを利用している時、Movable Typeが自動生成するファイルを上書きするものです。ご利用にあたっては該当のファイルのバックアップをとっていただき、内容をご確認の上ご利用くださいますようお願いいたします。尚、既に出力ファイル名が同一のテンプレートが当該ブログに存在する場合はインストールは行われません。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%">動作をテストする</h3>

<p>ここまでで準備は完了です。以下、いくつかの例を上げて実際の動作について説明します。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">ブログ記事の本文にMTタグを記述する</h4>

<p>試しにブログ記事の本文にMTタグを記述して動作を確認します。</p>

<pre><code class="mtml">&lt;mt:Entries lastn=&quot;3&quot;&gt;
&lt;mt:EntriesHeader&gt;
&lt;h3&gt;最近のブログ記事&lt;/h3&gt;
&lt;ul&gt;&lt;/mt:EntriesHeader&gt;
    &lt;li&gt;&lt;a href=&quot;&lt;mt:EntryPermalink&gt;&quot;&gt;&lt;mt:EntryTitle remove_html=&quot;1&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;mt:EntriesFooter&gt;&lt;/ul&gt;&lt;/mt:EntriesFooter&gt;
&lt;/mt:Entries&gt;</code></pre>

<p><a href="http://powercms.alfasado.net/blog/2010/03/31/Safari028.jpg"><img alt="ブログ記事にMTタグを記述する" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari028-thumb-544x186-615.jpg" width="544" height="186" class="mt-image-none" style="" /></a></p>

<p><a href="http://powercms.alfasado.net/blog/2010/03/30/Safari022.jpg"><img alt="出力(表示)結果" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari022-thumb-544x193-597.jpg" width="544" height="193" class="mt-image-none" style="" /></a></p>

<p>設定が正しく行われていれば上記の画像のようにブログ記事のリストが表示されます。</p>

<p>続いて、FTPクライアント等でサーバー上に生成されたhtmlファイルをダウンロードしてテキストエディタで編集します。ここではmt:Entriesのlastnモディファイアの値を3から20に変更します。</p>

<p><a href="http://powercms.alfasado.net/blog/2010/03/30/TextWrangler001.jpg"><img alt="テキストエディタで出力されたファイルのMTタグを編集する" src="http://powercms.alfasado.net/blog/assets_c/2010/03/TextWrangler001-thumb-544x187-599.jpg" width="544" height="187" class="mt-image-none" style="" /></a></p>

<p>Movable Typeで管理されていないファイルの動的処理結果を見るために、ファイルを適当な名前にリネームしてサーバーにアップロードし、ブラウザでアクセスします。</p>

<p><a href="http://powercms.alfasado.net/blog/2010/03/30/Safari023.jpg"><img alt="ブログ記事が20件表示されたスクリーンショット" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari023-thumb-544x365-601.jpg" width="544" height="365" class="mt-image-none" style="" /></a></p>

<p>Movable Typeで管理されていないファイルが動的に処理されて表示されることがおわかりいただけたかと思います。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">リクエストの状況によって動的に表示を切り替える</h4>

<p>続いて、アクセス元の情報によって表示を動的に切り替える例をご紹介します。DynamicMTMLに同梱されているファンクションタグMTUserAgentを使って表示を切り替えてみます。</p>

<pre><code class="mtml">&lt;$MTUserAgent career=&quot;1&quot; setvar=&quot;UA&quot;&gt;
&lt;mt:if name=&quot;UA&quot; eq=&quot;iPhone&quot;&gt;
iPhoneからようこそ
&lt;mt:else&gt;
iPhoneは買いましたか?
&lt;/mt:if&gt;</code></pre>

<p style="text-align:center"><a href="http://powercms.alfasado.net/blog/2010/03/30/iPhone01.jpg"><img alt="iPhoneで表示" src="http://powercms.alfasado.net/blog/assets_c/2010/03/iPhone01-thumb-300x205-604.jpg" width="300" height="205" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">DynamicMTMLのテンプレート・タグ</h4>

<p>このようにDynamicMTMLプラグインには動的にコンテンツを切り替えるのに利用できるいくつかのダイナミックパブリッシング用テンプレート・タグが用意されています。また、スタティックパブリッシングとDynamicMTMLを組み合わせて利用するために便利なスタティックパブリッシング用のテンプレートタグが用意されています。</p>

<table>
<tr><th style="width:25%">タグ名</th><th style="width:25%">種類</th><th>説明</th></tr>
<tr><td>MTUserAgent</td><td>ファンクションタグ(ダイナミック及びスタティック)</td><td>ブラウザから送られる'User-Agent'情報を出力します。careerモディファイアを付けることで、上記の例のようにiPhone, DoCoMo等の情報を取得することができます。</td></tr>
<tr><td>MTIfKeitai</td><td>ブロックタグ(ダイナミック及びスタティック)</td><td>携帯ブラウザ(3キャリアのいずれか)からのアクセスの場合に内容を出力します。</td></tr>
<tr><td>MTIfiPhone</td><td>ブロックタグ(ダイナミック及びスタティック)</td><td>iPhone/iPod touchからのアクセスの場合に内容を出力します。</td></tr>
<tr><td>MTQuery</td><td>ファンクションタグ</td><td>リクエストに付与されたクエリー文字列を取得します。取得したいクエリーはkeyモディファイアで指定します。&lt;MTQuery key=&quot;search&quot;&gt; とすることで <em>foo.html?search=bar</em> リクエストから 'bar' を取得できます。</td></tr>
<tr><td>MTIfLogin</td><td>ブロックタグ</td><td>アクセスしてきたユーザーがMovable Typeにログイン状態であるかどうかを判別します。このタグによってログイン状態のユーザーにだけ限定された情報を見せることができるようになります(このタグを使う場合、ブログのダイナミックパブリッシング設定で「ビルド結果をキャッシュする」をOffにする必要があります)。</td></tr>
<tr><td>MTLoginAuthorCtx</td><td>ブロックタグ</td><td>ユーザーがログインしている場合に、ブロックタグ内でそのユーザーのコンテクストをセットします。ユーザーによって設定されたコンテンツをユーザー毎に表示させることが可能になります(このタグを使う場合、ブログのダイナミックパブリッシング設定で「ビルド結果をキャッシュする」をOffにする必要があります)。</td></tr>
<tr><td>MTSearchEntries</td><td>ブロックタグ</td><td>カラム名と検索文字列を指定してエントリーを取得することができます。target(エントリーのカラム名-例:title)、operator(例:LIKE)、lastn、sort_by、sort_orderの各モディファイアを指定可能です。MTQueryタグで取得した結果を変数に入れることにより「タイトルに <em>foo</em> を含むエントリーの一覧」等を動的に出力させることが可能です。</td></tr>
<tr><td>MTRawMTML</td><td>ブロックタグ(スタティック専用)</td><td>このブロックタグで囲まれたブロックは再構築時に処理されず、テンプレートがそのまま出力されます。このタグによりテンプレートの一部を出力して部分的に動的にページを処理させることが簡単にできるようになります。</td></tr>
<tr><td>MTRawMTMLTag</td><td>ファンクションタグ(スタティック専用)</td><td>tagモディファイアとparamsモディファイアからMTタグを生成して出力します。&lt;MTRawMTMLTag tag=&quot;mt:blogname&quot; params='escape=&quot;html&quot;'&gt; は &lt;mt:blogname escape=&quot;html&quot;&gt; を出力します。MTRawMTMLを使わず部分的にMTタグを出力したい場合、ブロックタグの開始タグ、終了タグだけを静的に出力する場合などに利用できます。</td></tr>
<tr><td>MTCommentOut</td><td>ブロックタグ</td><td>ブロックタグの中身をHTMLのコメントタグでコメントアウトします。invisibleモディファイアを指定した場合、何も出力されません(MTIgnoreと同様)。</td></tr>
<tr><td>MTCommentStrip</td><td>ブロックタグ</td><td>MTCommentOutとは逆にブロックタグの文字列 <em>'&lt;!--'</em> 及び <em>'--&gt;'</em> をすべて削除して出力します。この2つのタグを利用することで、静的なHTMLをDreamweaver等で編集する際にMTタグの代わりにダミーのHTMLを配置し、サーバー上では動的にMTタグを処理させる(逆に動的処理の際はダミーのHTMLを削除する(隠す))ことが可能になります。</td></tr>
</table>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">クエリー文字列によって動的に表示を切り替える</h4>

<p>MTQueryタグとMTSearchEntriesタグを組み合わせて動的に異なるエントリーリストを出力する例を紹介します。</p>

<pre><code class="mtml">&lt;$MTQuery key=&quot;query&quot; setvar=&quot;query&quot;$&gt;
&lt;mt:if name=&quot;query&quot;&gt;
&lt;mtsearchentries target=&quot;title&quot; query=&quot;$query&quot; lastn=&quot;10&quot; operator=&quot;LIKE&quot;&gt;
&lt;mt:if name=&quot;__first__&quot;&gt;
&lt;h3&gt;タイトルに'&lt;mt:var name=&quot;query&quot; escape=&quot;html&quot;&gt;'を含むブログ記事&lt;/h3&gt;
&lt;ul&gt;&lt;/mt:if&gt;
    &lt;li&gt;&lt;a href=&quot;&lt;mt:EntryPermalink&gt;&quot;&gt;&lt;mt:EntryTitle remove_html=&quot;1&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;mt:if name=&quot;__last__&quot;&gt;&lt;/ul&gt;&lt;/mt:if&gt;
&lt;/mtsearchentries&gt;
&lt;/mt:if&gt;</code></pre>

<p>ページのURLに <em>query=foo</em> パラメタを付けてアクセスします。</p>

<p style="text:align:center"><img alt="URLにクエリー文字列を追加" src="http://powercms.alfasado.net/blog/2010/03/30/Safari025.jpg" width="394" height="35" class="mt-image-none" style="" /></p>

<p>タイトルに特定の文字列を含むエントリーの一覧を表示します。</p>

<p style="text:align:center"><a href="http://powercms.alfasado.net/blog/2010/03/30/Safari024.jpg"><img alt="クエリーによってエントリーリストを動的に表示させる" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari024-thumb-544x156-607.jpg" width="544" height="156" class="mt-image-none" style="" /></a></p>

<p>ブログのダイナミックパブリッシング設定「ビルド結果をキャッシュする」にチェックを入れた場合、<strong>クエリ付きのリクエストはクエリ毎に別のキャッシュとして保存されます。</strong>このため同一のクエリ付きのリクエストはキャッシュされるため、動的処理の負荷を最小限にできます。</p>

<h4 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">ログイン状態やユーザーによってページの表示を変化させる</h4>

<p>最後に、ブロックタグMTIfLogin, MTLoginAuthorCtxを活用してユーザーのログイン状態やユーザーによってページの表示を変化させる例を紹介します。</p>

<pre><code class="mtml">&lt;mt:IfLogin&gt;
    &lt;mt:LoginAuthorCtx&gt;
        &lt;$MTAuthorDisplayName$&gt;さん、ようこそ
        &lt;a href=&quot;&lt;$MTCGIPath$&gt;&lt;$MTCommentScript$&gt;?__mode=edit_profile&amp;return_url=&lt;$MTEntryPermalink  encode_url=&quot;1&quot;$&gt;&quot;&gt;[プロフィールの編集]&lt;/a&gt; &lt;a href=&quot;&lt;$MTCGIPath$&gt;&lt;$MTCommunityScript$&gt;?__mode=logout&amp;return_url=&lt;$MTEntryPermalink  encode_url=&quot;1&quot;$&gt;&quot;&gt;[ログアウト]&lt;/a&gt;
    &lt;/mt:LoginAuthorCtx&gt;
    &lt;mt:Else&gt;
    &lt;a href=&quot;&lt;$MTCGIPath$&gt;&lt;$MTCommentScript$&gt;?__mode=login&amp;blog_id=&lt;mt:BlogID&gt;&amp;return_url=&lt;$MTEntryPermalink  encode_url=&quot;1&quot;$&gt;&quot;&gt;サインインしてください&lt;/a&gt;
&lt;/mt:IfLogin&gt;</code></pre>

<p>ログインしている時は以下のように表示されます。</p>

<p><img alt="ログイン状態の表示" src="http://powercms.alfasado.net/blog/assets_c/2010/03/Safari026-thumb-438x27-609.jpg" width="438" height="27" class="mt-image-none" style="" /></p>

<p>ログインしてない時は以下のように表示されます。</p>

<p><img alt="ログアウト状態の表示" src="http://powercms.alfasado.net/blog/2010/03/30/Safari027.jpg" width="438" height="27" class="mt-image-none" style="" /></p>

<p>MTLoginAuthorCtx内のエントリーリストはユーザーアーカイブとして振る舞うようになっています。コミュニティサイト等でユーザーの最近の記事を表示したりするなどして活用できます。</p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:110%"><a name="download">プラグインのダウンロード</a></h3>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/DynamicMTML/Commercial_0.8.zip"> DynamicMTML (商用ライセンス評価版 *1)</a></li>
	<li><a href="http://powercms.alfasado.net/blog/DynamicMTML/GPL_0.8.zip">DynamicMTML (GPLライセンス *2)</a></li>
</ul>

<p style="font-size:90%">*1 Movable Type個人無償版をご利用の方は無償でご利用いただけます。<br />
*2 <a href="http://www.opensource.jp/gpl/gpl.ja.html">GNU 一般公衆利用許諾契約書</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>ハッシュを活用してブログ記事とウェブページ混在のリストを表示する</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/02/post_5.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.202</id>

    <published>2010-02-02T10:59:18Z</published>
    <updated>2010-02-02T10:59:40Z</updated>

    <summary>ブログ記事/ウェブページ混在のエントリーのリスティングを行うテンプレートの実装例...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>ブログ記事/ウェブページ混在のエントリーのリスティングを行うテンプレートの実装例をご紹介します(Power CMS for MTのインストールされていない環境でも動作します)。</p>

<p>これを実現するにはMTテンプレートの「ハッシュ」を活用します。keyに日付をセットし(重複する可能性があるので、entry_idを末尾につけています)、 <strong>mt:entries</strong> と <strong>mt:pages</strong> のループの中でフィードの中身をvalueとしてハッシュにセットし、keyでソートして <strong>mt:loop</strong> で取り出します。</p>

<p>下記の例ではatom.xmlテンプレートにブログ記事＋ウェブページを混在して表示させます。</p>

<pre><code class="mtml">&lt;$mt:HTTPContentType type=&quot;application/atom+xml&quot;$&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;&lt;$mt:PublishCharset$&gt;&quot;?&gt;
&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;&gt;
    &lt;title&gt;&lt;$mt:BlogName remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/title&gt;
    &lt;link rel=&quot;alternate&quot; type=&quot;text/html&quot; href=&quot;&lt;$mt:BlogURL encode_xml=&quot;1&quot;$&gt;&quot; /&gt;
    &lt;link rel=&quot;self&quot; type=&quot;application/atom+xml&quot; href=&quot;&lt;$mt:Link template=&quot;feed_recent&quot;$&gt;&quot; /&gt;
    &lt;id&gt;tag:&lt;$mt:BlogHost exclude_port=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;,&lt;$mt:TemplateCreatedOn format=&quot;%Y-%m-%d&quot;$&gt;:&lt;$mt:BlogRelativeURL encode_xml=&quot;1&quot;$&gt;/&lt;$mt:BlogID$&gt;&lt;/id&gt;
    &lt;updated&gt;&lt;mt:Entries lastn=&quot;1&quot;&gt;&lt;$mt:EntryModifiedDate utc=&quot;1&quot; format=&quot;%Y-%m-%dT%H:%M:%SZ&quot;$&gt;&lt;/mt:Entries&gt;&lt;/updated&gt;
    &lt;mt:If tag=&quot;BlogDescription&quot;&gt;&lt;subtitle&gt;&lt;$mt:BlogDescription remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/subtitle&gt;&lt;/mt:If&gt;
    &lt;generator uri=&quot;http://www.sixapart.com/movabletype/&quot;&gt;&lt;$mt:ProductName version=&quot;1&quot;$&gt;&lt;/generator&gt;

&lt;$mt:SetVar name=&quot;lastn&quot; value=&quot;15&quot;$&gt;
&lt;$mt:SetVar name=&quot;entries&quot; function=&quot;undef&quot;$&gt;

&lt;mt:Entries lastn=&quot;$lastn&quot;&gt;
&lt;mt:SetVarBlock name=&quot;key&quot;&gt;&lt;mt:EntryDate format_name=&quot;iso8601&quot;&gt;-&lt;mt:EntryID&gt;&lt;/mt:SetVarBlock&gt;
&lt;mt:SetVarBlock name=&quot;entries&quot; key=&quot;$key&quot;&gt;
&lt;entry&gt;
    &lt;title&gt;&lt;$mt:EntryTitle remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/title&gt;
    &lt;link rel=&quot;alternate&quot; type=&quot;text/html&quot; href=&quot;&lt;$mt:EntryPermalink encode_xml=&quot;1&quot;$&gt;&quot; /&gt;
    &lt;id&gt;&lt;$mt:EntryAtomID$&gt;&lt;/id&gt;

    &lt;published&gt;&lt;$mt:EntryDate utc=&quot;1&quot; format=&quot;%Y-%m-%dT%H:%M:%SZ&quot;$&gt;&lt;/published&gt;
    &lt;updated&gt;&lt;$mt:EntryModifiedDate utc=&quot;1&quot; format=&quot;%Y-%m-%dT%H:%M:%SZ&quot;$&gt;&lt;/updated&gt;

    &lt;summary&gt;&lt;$mt:EntryExcerpt remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/summary&gt;
    &lt;author&gt;
        &lt;name&gt;&lt;$mt:EntryAuthorDisplayName encode_xml=&quot;1&quot;$&gt;&lt;/name&gt;
        &lt;mt:If tag=&quot;EntryAuthorURL&quot;&gt;&lt;uri&gt;&lt;$mt:EntryAuthorURL encode_xml=&quot;1&quot;$&gt;&lt;/uri&gt;&lt;/mt:If&gt;
    &lt;/author&gt;
    &lt;mt:EntryCategories&gt;
        &lt;category term=&quot;&lt;$mt:CategoryLabel encode_xml=&quot;1&quot;$&gt;&quot; scheme=&quot;http://www.sixapart.com/ns/types#category&quot; /&gt;
    &lt;/mt:EntryCategories&gt;
    &lt;mt:EntryIfTagged&gt;&lt;mt:EntryTags&gt;&lt;category term=&quot;&lt;$mt:TagName normalize=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&quot; label=&quot;&lt;$mt:TagName encode_xml=&quot;1&quot;$&gt;&quot; scheme=&quot;http://www.sixapart.com/ns/types#tag&quot; /&gt;
    &lt;/mt:EntryTags&gt;&lt;/mt:EntryIfTagged&gt;
    &lt;content type=&quot;html&quot; xml:lang=&quot;&lt;$mt:BlogLanguage ietf=&quot;1&quot;$&gt;&quot; xml:base=&quot;&lt;$mt:BlogURL encode_xml=&quot;1&quot;$&gt;&quot;&gt;
        &lt;$mt:EntryBody encode_xml=&quot;1&quot;$&gt;
        &lt;$mt:EntryMore encode_xml=&quot;1&quot;$&gt;
    &lt;/content&gt;
&lt;/entry&gt;
&lt;/mt:SetVarBlock&gt;
&lt;/mt:Entries&gt;

&lt;mt:Pages lastn=&quot;$lastn&quot;&gt;
&lt;mt:SetVarBlock name=&quot;key&quot;&gt;&lt;mt:PageDate format_name=&quot;iso8601&quot;&gt;-&lt;mt:PageID&gt;&lt;/mt:SetVarBlock&gt;
&lt;mt:SetVarBlock name=&quot;entries&quot; key=&quot;$key&quot;&gt;
&lt;entry&gt;
    &lt;title&gt;&lt;$mt:PageTitle remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/title&gt;
    &lt;link rel=&quot;alternate&quot; type=&quot;text/html&quot; href=&quot;&lt;$mt:PagePermalink encode_xml=&quot;1&quot;$&gt;&quot; /&gt;
    &lt;id&gt;&lt;$mt:EntryAtomID$&gt;&lt;/id&gt;

    &lt;published&gt;&lt;$mt:PageDate utc=&quot;1&quot; format=&quot;%Y-%m-%dT%H:%M:%SZ&quot;$&gt;&lt;/published&gt;
    &lt;updated&gt;&lt;$mt:PageModifiedDate utc=&quot;1&quot; format=&quot;%Y-%m-%dT%H:%M:%SZ&quot;$&gt;&lt;/updated&gt;

    &lt;summary&gt;&lt;$mt:PageExcerpt remove_html=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&lt;/summary&gt;
    &lt;author&gt;
        &lt;name&gt;&lt;$mt:PageAuthorDisplayName encode_xml=&quot;1&quot;$&gt;&lt;/name&gt;
        &lt;mt:If tag=&quot;PageAuthorURL&quot;&gt;&lt;uri&gt;&lt;$mt:PageAuthorURL encode_xml=&quot;1&quot;$&gt;&lt;/uri&gt;&lt;/mt:If&gt;
    &lt;/author&gt;
    &lt;mt:PageFolder&gt;
        &lt;category term=&quot;&lt;$mt:FolderLabel encode_xml=&quot;1&quot;$&gt;&quot; scheme=&quot;http://www.sixapart.com/ns/types#category&quot; /&gt;
    &lt;/mt:PageFolder&gt;
    &lt;mt:PageIfTagged&gt;&lt;mt:PageTags&gt;&lt;category term=&quot;&lt;$mt:TagName normalize=&quot;1&quot; encode_xml=&quot;1&quot;$&gt;&quot; label=&quot;&lt;$mt:TagName encode_xml=&quot;1&quot;$&gt;&quot; scheme=&quot;http://www.sixapart.com/ns/types#tag&quot; /&gt;
    &lt;/mt:PageTags&gt;&lt;/mt:PageIfTagged&gt;
    &lt;content type=&quot;html&quot; xml:lang=&quot;&lt;$mt:BlogLanguage ietf=&quot;1&quot;$&gt;&quot; xml:base=&quot;&lt;$mt:BlogURL encode_xml=&quot;1&quot;$&gt;&quot;&gt;
        &lt;$mt:PageBody encode_xml=&quot;1&quot;$&gt;
        &lt;$mt:PageMore encode_xml=&quot;1&quot;$&gt;
    &lt;/content&gt;
&lt;/entry&gt;
&lt;/mt:SetVarBlock&gt;
&lt;/mt:Pages&gt;

&lt;$mt:SetVar name=&quot;i&quot; value=&quot;0&quot;$&gt;
&lt;mt:Loop name=&quot;entries&quot; sort_by=&quot;key reverse&quot;&gt;
&lt;$mt:SetVar name=&quot;i&quot; op=&quot;++&quot;$&gt;
&lt;mt:If name=&quot;i&quot; le=&quot;$lastn&quot;&gt;
&lt;$mt:GetVar name=&quot;__value__&quot;$&gt;
&lt;/mt:If&gt;
&lt;/mt:Loop&gt;

&lt;/feed&gt;</code></pre>

<p>Power CMS for MTのサポートへお問い合わせいただいた際にプラグインを書くと言う方法を検討したのですが、標準のテンプレートタグで出来るという話がスタッフからあがり、このテンプレートを作成しました。かなりプログラミングライクなことがMTMLで出来ることがおわかりいただけると思います。</p>]]>
        
    </content>
</entry>

<entry>
    <title>カテゴリアーカイブの表示項目をエントリグループで管理する</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/02/post_4.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.201</id>

    <published>2010-02-02T05:30:00Z</published>
    <updated>2010-02-02T05:32:40Z</updated>

    <summary>エントリー(ブログ記事/ウェブページ)やカテゴリ、ブログをグループ化するPowe...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>エントリー(ブログ記事/ウェブページ)やカテゴリ、ブログをグループ化するPower CMS for MTのグループ機能を利用して、カテゴリアーカイブに表示する項目と表示順を自在にカスタマイズする設定及びテンプレートについてご紹介します。
この設定については、導入いただいている複数のお客さまからのご要望で製品にマージされた機能です。</p>

<p class="ac"><a href="http://powercms.alfasado.net/blog/2010/02/02/item_sort01.jpg"><img alt="エントリーグループ機能のインターフェイス" src="http://powercms.alfasado.net/blog/assets_c/2010/02/item_sort01-thumb-544x174-556.jpg" width="544" height="174" /></a></p>

<p>設定手順は下記の通りです。</p>

<ul>
	<li>カテゴリー名と同名のエントリーグループを作成する</li>
	<li>カテゴリーアーカイブに表示させたいエントリーをDrag &amp; Dropでグループに登録する</li>
	<li>グループの設定で「新しく追加されるブログ記事を末尾(又は先頭)に追加する 条件:カテゴリーが[カテゴリ名]」を指定する</li>
	<li>ブログのCategoryGroupSyncプラグイン設定で「カテゴリ保存時に同名のグループを保存する」チェックボックスにチェックを入れて保存する</li>
</ul>

<p class="ac"><a href="http://powercms.alfasado.net/blog/2010/02/02/group_settings.jpg"><img alt="グループの設定" src="http://powercms.alfasado.net/blog/assets_c/2010/02/group_settings-thumb-400x43-558.jpg" width="400" height="43" /></a></p>

<p>各カテゴリー名と同名のグループを作成したら、カテゴリーアーカイブのエントリー一覧のテンプレートのMTEntriesにあたる部分を下記のように変更します。</p>


<pre><code class="mtml">&lt;$MTCategoryLabel setvar=&quot;category_label&quot;$&gt;
&lt;MTItemGroupEntries group=&quot;$category_label&quot;&gt;
    &lt;MTItemGroupEntriesHeader&gt;
    &lt;ul&gt;
    &lt;/MTItemGroupEntriesHeader&gt;
        &lt;MTIf tag=&quot;EntryClass&quot; eq=&quot;page&quot;&gt;
            &lt;li&gt;&lt;a href=&quot;&lt;$MTPagePermalink escape=&quot;html&quot;$&gt;&quot;&gt;&lt;$MTPageTitle escape=&quot;html&quot;$&gt;&lt;/a&gt;&lt;/li&gt;
            &lt;MTElse&gt;
            &lt;li&gt;&lt;a href=&quot;&lt;$MTEntryPermalink escape=&quot;html&quot;$&gt;&quot;&gt;&lt;$MTEntryTitle escape=&quot;html&quot;$&gt;&lt;/a&gt;&lt;/li&gt;
            &lt;/MTElse&gt;
        &lt;/MTIf&gt;
    &lt;MTItemGroupEntriesFooter&gt;
    &lt;/ul&gt;
    &lt;/MTItemGroupEntriesFooter&gt;
&lt;/MTItemGroupEntries&gt;</code></pre>

<p>最後に当該のブログのプラグイン設定で「CategoryGroupSync」プラグインの設定で「カテゴリー保存時に同名のグループを保存する」チェックボックスにチェックを入れ、グループの設定項目を指定して設定を保存します。</p>

<p class="ac"><a href="http://powercms.alfasado.net/blog/2010/02/02/sync_settings.jpg"><img alt="プラグイン設定画面(CategoryGroupSync)" src="http://powercms.alfasado.net/blog/assets_c/2010/02/sync_settings-thumb-280x137-560.jpg" width="280" height="137" /></a></p>

<p>これで、カテゴリーが新しく作成された時に同名のグループが指定した設定で自動的に生成されるようになり、カテゴリアーカイブの表示項目、表示順をグループ機能のDrag &amp; Dropで自在に設定できるようになります。</p>

<p>カテゴリアカイブの表示項目を柔軟に設定したいとお考えの方は是非お試しください。</p>]]>
        
    </content>
</entry>

<entry>
    <title>ブログのサイドバーを見直す(ランキング/表示順/高速化)</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/01/post_3.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.200</id>

    <published>2010-01-29T06:55:26Z</published>
    <updated>2010-01-30T02:37:32Z</updated>

    <summary>このウェブサイトはMovable Type Enterprise + Power...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="テンプレート作成Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>このウェブサイトはMovable Type Enterprise + Power CMS for MTで構築・運用されていますが、先ほどこのブログ(Power CMS for MT ブログ)の右サイドバーの内容を修正しました。このカスタマイズについてご紹介します。</p>

<p style="float: right; width:140px;text-align:right"><a href="http://powercms.alfasado.net/blog/2010/01/29/hotentries.jpg"><img alt="アクセスの多いエントリーのリスト" src="http://powercms.alfasado.net/blog/assets_c/2010/01/hotentries-thumb-120x155-549.jpg" width="120" height="155" /></a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">アクセスの多いブログ記事のリストを表示する</h3>

<p>Power CMS for MTにはページビューを管理画面で確認できるアクセス解析機能が実装されています。ページビューの確認だけで流入経路等は確認できませんので Google Analytics 等を導入している方も多いのですが、Power CMS for MTのアクセス解析機能には次のような活用方法があります。</p>

<ul>
	<li>アクセスの状況をテンプレートタグで出力できる(ホットな話題をサイトに表示することができます)。</li>
	<li>サイト内検索キーワードやクリックされたタグの状況が確認できる(検索にヒットした件数も把握できるので、サイト内検索のキーワードの状況を見ながら 検索結果に類似キーワードを表示する ようなカスタマイズを施すことができます)。</li>
	<li> タグクラウドを利用している場合は良くクリックされるタグをテンプレートタグで出力することができます。</li>
</ul>

<p>下記の例は、直近7日間のアクセスの多いブログ記事を出力する例です。MTHotEntryCountタグを使うことでアクセス数(ページビュー)を出力することも可能です。</p>

<pre><code class="mtml">&lt;ul&gt;
&lt;MTHotEntries period=&quot;last7days&quot; class=&quot;entry&quot; lastn=&quot;5&quot;&gt; 
    &lt;li&gt;&lt;a href=”&lt;$MTEntryPermalink$&gt;”&gt;&lt;$MTEntryTitle escape=&quot;html&quot;$&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/MTHotEntries&gt;
&lt;/ul&gt;</code></pre>

<p class="ac"><a href="http://powercms.alfasado.net/blog/2010/01/29/access_log.jpg"><img alt="アクセス解析画面" src="http://powercms.alfasado.net/blog/assets_c/2010/01/access_log-thumb-544x216-550.jpg" width="544" height="216" class="mt-image-none" style="" /></a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">カテゴリの表示項目・表示順を指定する</h3>

<p>カテゴリ「その他」を追加した際に「その他」が最上部に表示されてしまいましたので、MTCategoriesタグでの出力をやめ、Power CMS for MTのMTItemGroupタグによる出力に切り替えました。</p>

<p>Power CMS for MTの「グループ」機能ではカテゴリの表示順を指定するだけでなく、複数のグループを作成してモジュールのように扱えます。カテゴリの他、ブログ、エントリ、<a href="http://powercms.alfasado.net/blog/2009/04/objectgroup.html">ブログ/カテゴリ/エントリの混在</a>といった各種グループを作成することが出来ます。</p>

<p>下記はグループ名「カテゴリ」のグループを指定順に表示させるテンプレートの記述例です。</p>

<pre><code class="mtml">&lt;MTItemGroupCategories group=&quot;カテゴリ&quot;&gt;
    &lt;MTIf tag=&quot;CategoryCount&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;&lt;$MTCategoryArchiveLink$&gt;&quot;&gt;&lt;$MTCategoryLabel escape=&quot;html&quot;$&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/MTIf&gt;
&lt;/MTItemGroupCategories&gt;</code></pre>

<p class="ac"><a href="http://powercms.alfasado.net/blog/2010/01/29/item_sort.jpg"><img alt="カテゴリーのソート指定" src="http://powercms.alfasado.net/blog/assets_c/2010/01/item_sort-thumb-544x216-553.jpg" width="544" height="203" /></a></p>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">再構築の軽量化・高速化</h3>

<p>このブログの右側のサイドバーは各アーカイブで共通ですから、この部分をファイルに出力してサーバーサイドでインクルードすることで軽量化・高速化を図ることが出来ますが、今回はPower CMS for MTのテンプレートキャッシュタグであるMTRequestCacheBlockタグを使うことで軽量化・高速化を図りました。</p>

<p>このテンプレートタグはkey,blog_idモディファイアでテンプレートの部分を識別して一度のリクエスト(mt.cgiへのリクエスト)で構築される各ページにおいて一度再構築したデータをメモリにキャッシュして2ページ目以降ではそのデータが使われるというものです(SQLのクエリ等は一切発行されないため、再構築の高速化が可能です)。</p>

<pre><code class="mtml">&lt;MTRequestCacheBlock key=&quot;RightMenu&quot;&gt;
    &lt;!--右側サイドバーのテンプレート--&gt;
&lt;/MTRequestCacheBlock&gt;</code></pre>

<p>これによって、約1分かかっていた再構築が30秒前後と倍速になりました。大規模サイト等で再構築に時間がかかるとお悩みの方は是非お試しください。</p>]]>
        
    </content>
</entry>

<entry>
    <title>複数の検索・置換を行うモディファイアを提供するReplacerプラグイン</title>
    <link rel="alternate" type="text/html" href="http://powercms.alfasado.net/blog/2010/01/replacer.html" />
    <id>tag:powercms.alfasado.net,2010:/blog//1.199</id>

    <published>2010-01-27T03:09:49Z</published>
    <updated>2010-07-20T11:49:27Z</updated>

    <summary>テキストの検索・置換が行えるReplacerプラグインを公開します(Power ...</summary>
    <author>
        <name>Junnama Noda</name>
        <uri>http://powercms.alfasado.net/mte/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=2</uri>
    </author>
    
        <category term="プラグイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://powercms.alfasado.net/blog/">
        <![CDATA[<p>テキストの検索・置換が行えるReplacerプラグインを公開します(Power CMS for MTのインストールされていない環境でも動作します)。Movable Type 4 及び 5に対応しています。</p>

<p>Movable Typeでは標準で <a href="http://www.movabletype.jp/documentation/appendices/modifiers/regex_replace.html">regex_replace モディファイア</a>が利用できますが、このプラグインでは複数のテキストの検索・置換が行えるため、テンプレートをよりシンプルに記述することが可能になります。</p>

<p>特定の用語をリンクに置換したりabbr要素に置換する、表記の揺れを統一する等の用途が考えられるかと思います。</p>

<p>各ブログのプラグイン設定で<strong>検索・置換テーブル</strong>と<strong>セパレータ</strong>を指定します。</p>

<p class="ac"><img alt="Replacerプラグインの設定画面" src="http://powercms.alfasado.net/blog/files/entry/Replacer.jpg" width="445" height="234" class="mt-image-none" style="" /></p>


<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">テンプレートの記述方法</h3>

<p>適用したいMTタグにモディファイア replacerを指定します。</p>
 
<pre>&lt;mt:foo replacer=&quot;1&quot;&gt;</pre>

<h3 style="font-weight:bold;margin-bottom:0.2em;font-size:105%">プラグインのダウンロード</h3>

<ins><p>※ダイナミックパブリッシング対応しました。</p></ins>

<ul>
	<li><a href="http://powercms.alfasado.net/blog/files/entry/Replacer.zip">Replacer.zip(3.5 KB)</a></li>
</ul>

<p>This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.</p>]]>
        
    </content>
</entry>

</feed>
