Power CMS for MT 2.03で追加される新機能のひとつ、Linkプラグインについてご紹介します。下記のページで公開しているLinkプラグインとベースは同じです。

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

  • OPMLに加えCSVからのインポート、CSVエクスポートに対応
  • グループ機能に対応(リンクグループ)
  • 本文テキスト欄のリッチテキストエディタ対応

以下、「リンクをオブジェクトで管理するLinkプラグイン」のページと一部重複する部分がありますが、概要についてご紹介します。

Linkプラグインについて

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

スクリーンショット

リンクの一覧   リンクの編集

エディタへの貼付け   リンクグループの編集

 

テンプレート・タグ

ブロック・タグ

タグ説明備考
MTLinksリンクをループで出力します コンテクスト(MTVar)にセットされる値
__first__:ループの最初
__counter__:ループの何回目か
__odd__:奇数回目の出力
__even__:偶数回目の出力
__last__:ループの最後

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

ファンクション・タグ

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

エディタでのリンク貼り付け

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

コールバック

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

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

カテゴリー:Power CMS 2

携帯絵文字挿入エディタプラグインが追加

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

絵文字挿入アイコン keitaiemoji3.jpg

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

エディタのプラグイン設定

絵文字を出力するテンプレート

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

<mt:setvarblock name="emoticon_dir"><$mt:StaticWebPath$>plugins/TinyMCE/lib/tinymce/plugins/emoji/img/</mt:setvarblock>

<a href="<$MTBlogRelativeURL$>mobile/index.html" accesskey="0">
<$mt:GetEmoji docomo_id="134" size="12" emoticon="1" alt="" base="$emoticon_dir"$>
ホーム
</a>

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

<mt:setvarblock name="emoticon_dir"><$mt:StaticWebPath$>plugins/TinyMCE/lib/tinymce/plugins/emoji/img/</mt:setvarblock>

<a href="<$MTBlogRelativeURL$>mobile/index.html" accesskey="0">
<$mt:GetEmojiLegacy docomo_id="134" size="12" emoticon="1" alt="" base="$emoticon_dir"$>
ホーム
</a>

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

<mt:entrybody emoticon2mtml="1">

この時emoticon2mtml="legacy"を指定することでShift_JIS形式での絵文字を出力することができるようになります。

カテゴリー:Power CMS 2サイト制作全般テンプレート作成Tips

Campaign *とは、タイトル、URL、画像、ムービー、テキスト、メモ等のフィールドを持つMovable Typeのオブジェクトです。カスタムフィールドに対応しているため、自由に入力項目を拡張することができます。画像とムービーは MT::Asset オブジェクトとして管理されます。キャンペーングループをドラッグ&ドロップインターフェイスで登録することが出来ます。

Movable Typeの定期実行タスクによってキャンペーンの掲載開始、終了を制御することやダイナミック・パブリッシングとの組み合わせによってランダムな出力や効果測定が簡単に行えます。

最大表示数やクリック数の設定、ランダムな表示に対応しており、本格的な広告の管理・運用を行うことができます。

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

インストール

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

スクリーンショット

キャンペーンの編集画面 キャンペーンの一覧画面

キャンペーングループの編集画面 プラグインの設定画面

プラグイン設定(ブログ/ウェブサイト単位で行います)

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

テンプレート・タグ

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

ブロックタグ

タグ説明備考
MTCampaignsキャンペーンオブジェクトをループ出力します。 コンテクスト(MTVar)にセットされる値
__first__ :ループの最初
__counter__:ループの何回目か
__odd__ :奇数回目の出力
__even__ :偶数回目の出力
__last__ :ループの最後

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

ファンクションタグ

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

mt-campaign.cgiによる効果測定

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

http://site.example.com/to/mt/mt-campaign.cgi?__mode=counter&campaign_id=1
http://site.example.com/to/mt/mt-campaign.cgi?__mode=redirect&campaign_id=1
http://site.example.com/to/mt/mt-campaign.cgi?__mode=conversion&campaign_id=1

テンプレートタグでは下記のように指定することが可能です。

<$MTCGIPath$><$MTCampaignScript$>__mode=counter&campaign_id=<MTCampaignID>

プラグインによる拡張

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

コールバック

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

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

カテゴリー:Power CMS 2サイト制作全般

レストランの「メニュー」やECサイトでの「取扱い商品」、不動産サイトにおける「物件情報」を管理する「ブログ」を作成し、各アイテムを「ブログ記事」として作成・運用するような設計をした時に運用マニュアル作成時、また導入研修時の説明で「何となく説明しづらい」と思ったことはありませんか?

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

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

管理画面でブログ/ブログ記事の呼称をカスタマイズする

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

プラグイン設定画面

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

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

RenameBlogLabel_2.jpg
適用後の管理画面

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

カテゴリー:Power CMS 2サイト制作全般プラグイン

Power CMS for MT 2.03からグループ&ソート機能が新しくなりました。今回は新しいグループ&ソート機能についてご紹介します。

グループ&ソート機能とは?

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

アイテムグループ
アイテムのグループ編集画面

グループ&ソート機能に対応しているオブジェクト

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

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

グループ&ソート機能の改良点と新機能

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

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

ワンクリックでテンプレートを作成

グループテンプレートモジュールをワンクリックで作成

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

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

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

テンプレートモジュールとウィジェットを混在してグループ化

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

テンプレートグループの編集画面

カテゴリー:Power CMS 2テンプレート作成Tips

管理画面を自由に設計でき、Movable Type (Power CMS for MT)の管理画面でオブジェクトのデータベース管理を行えるようにするプラグイン「カスタムオブジェクト」の紹介の続きです。

カスタムオブジェクトのテンプレート、個別ページの作成及びプラグインでの拡張についてご紹介します。カスタムオブジェクトについてはひとつ前のエントリをご覧ください。

カスタムオブジェクト関連のテンプレート・タグ

タグはすべてスタティック/ダイナミック(DynamicMTML)の両方に対応しています。

ブロックタグ

タグ説明備考
MTCustomObjectsカスタムオブジェクトをループで出力します コンテクスト (MTVar)にセットされる値
__first__:ループの最初
__counter__:ループの何回目か
__odd__:奇数回目の出力
__even__:偶数回目の出力
__last__:ループの最後

指定出来るモディファイア
lastn (limit):何件表示するかを指定します。
offset:何件目から表示するかを指定します(デフォルト値:0)。
sort_order:昇順、降順を指定します(descend,ascend / デフォルト値:ascend)。
sort_by:ソートするカラム名を指定します(created_on, authored_on等 / デフォルト値:id)
blog_id:カスタムオブジェクトが属するブログのIDを指定する場合に記述します。
tag:タグが一致するカスタムオブジェクトを取得します。
group:カスタムオブジェクトグループ名を指定して、グループに属するカスタムオブジェクトを指定したソート順で出力します。groupモディファイアが指定されている場合、sort_byモディファイアの値は無視されます。
MTCustomObjectsHeader / MTCustomObjectsFooterMTCustomObjectsブロックタグの最初と最後に出力されます。
MTCustomObjectモディファイアidを指定してオブジェクトを1件ロードしてコンテクストをセットします。
MTCustomObjectTagsカスタムオブジェクトに付けられているタグをループ出力します。MTTagName、MTTagID等のタグ関連のMTタグが利用できます。 MT標準のMTTagsタグでtypeに'customobject'を指定することができます
MTCustomObjectAuthor カスタムオブジェクトを作成したユーザーのコンテクストをセットします。ブロックの中ではMTAuthor関連のタグが利用できます。
MTCustomObjectIfTaggedMTCustomObjectsまたはMTCustomObjectタグの中でコンテクストにセットされたカスタムオブジェクトがタグ付けされている場合に出力されます。

ファンクションタグ

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

タグ説明
MTCustomObjectBlogIDカスタムオブジェクトのブログIDを出力します。
MTCustomObjectIDカスタムオブジェクトのIDを出力します。
MTCustomObjectNameカスタムオブジェクトの名前を出力します。
MTCustomObjectAuthorDisplayNameカスタムオブジェクトの作成者名を出力します。
MTCustomObjectAuthoredOnカスタムオブジェクトの作成日を出力します。
MTCustomObjectModifiedOnカスタムオブジェクトオブジェクトの更新日を出力します。

カスタムオブジェクトをページとして表示する

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

Viewerプラグインの設置とテンプレートの作成

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

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

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

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

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

<$mt:include module="$template" blog_id="$blog_id"$>

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

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

プラグインによる拡張

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

コールバック

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

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

カテゴリー:Power CMS 2プラグイン

今月末リリース予定のPower CMS for MT 2.03にはいくつかの新機能が追加されます。ここでは新機能のひとつ「管理画面を自由に設計できるカスタムオブジェクト」機能を2回に分けてご紹介します。

*新機能の一覧についてはこちらのリリースをご覧ください。

カスタムオブジェクトとは?

Movable Type (Power CMS for MT)の管理画面でオブジェクトのデータベース管理を行えるようにするものです。例えば「商品」「文房具」「楽器」「書籍」「楽曲」など、ウェブサイト/ブログ毎に1種類のカスタムオブジェクトを持つことができます。

カスタムオブジェクトはインストール直後は名前、公開日といった最低限の項目しか持っていません。カスタムオブジェクトはカスタムフィールドに対応しているため、管理画面、入力項目は自由に設計することができます。カスタムフィールドで指定したテキスト(複数行)欄ではリッチテキストエディタを使うことができます。また、タグ付け、グループ化とソート順指定、管理画面から名前での検索、CSVのダウンロード、アップロードに対応しています。もちろんテンプレート・タグを使って値を自在に取り出すことが出来ます。

さらに、このカスタムオブジェクトを拡張するプラグインを書くこともできます。

カスタムオブジェクト編集画面
インストール直後のカスタムオブジェクト編集画面

インストール

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

プラグイン設定画面

名称を設定する

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

ロールの設定画面

カスタムオブジェクトの権限

カスタムオブジェクトを扱えるユーザーは「カスタムオブジェクトの管理」権限を持ったユーザーです。プラグインをインストールすると「カスタムオブジェクト管理者」というロールが追加されます(プラグインを設置した状態で新規インストールした場合にはロールは追加されませんので、別途ロールを追加するか既存のロールに「カスタムオブジェクトの管理」権限を追加してください)。

管理画面をカスタムフィールドで自由に設計

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

名前ベースネームテンプレートタグ種類
名称(追記)cf_moreCustomobjectMoreテキスト
メーカー名cf_manufacturerCustomobjectManufacturerテキスト
商品番号cf_itemnumberCustomobjectItemNumberテキスト
紹介文cf_bodyCustomobjectBodyテキスト(複数行)
画像(1)cf_image1CustomobjectImageMain画像
画像(2)cf_image2CustomobjectImageSub画像
サイズcf_sizeCustomobjectSizeテキスト
価格(税込)cf_priceCustomobjectPriceテキスト
備考cf_remarksCustomobjectRemarksテキスト
メーカーURLcf_urlCustomobjectUrlテキスト

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

カスタムオブジェクト編集画面
カスタムフィールドで項目設定後のカスタムオブジェクトの編集画面

CSVからデータを一括投入する

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

カスタムオブジェクトの一覧画面

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

CSVファイルのサンプル

カスタムオブジェクトをグループ化してソート順指定する

Power CMS for MTの他のグループ機能と同様のインターフェイスでカスタムオブジェクトをグループ化、ソート順を指定することができます。

グループの作成は「カスタムオブジェクト」メニュー(この例では「文房具」メニュー)の「グループの作成」をクリックして行います。

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

カスタムオブジェクトグループの編集画面

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

グループ化したカスタムオブジェクトの一覧を表示するテンプレートモジュールを作成する

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

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

モジュールの作成ボタン

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

カテゴリー:Power CMS 2プラグイン

Movable Typeでは独自のオブジェクトのテーブルを作成して管理画面で作成・管理したり、作成したオブジェクトに対応するテンプレート・タグを作成することができます。

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

Linkプラグインについて

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

Perlモジュールについて

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

スクリーンショット

リンクの一覧画面   リンクの作成・編集

タグの管理   ロール - リンク管理者

リンクの検索   エディタへの貼付け

テンプレート・タグ

ブロック・タグ

タグ説明備考
MTLinksリンクをループで出力します コンテクスト(MTVar)にセットされる値
__first__:ループの最初
__counter__:ループの何回目か
__odd__:奇数回目の出力
__even__:偶数回目の出力
__last__:ループの最後

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

ファンクション・タグ

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

コールバック

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

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

Power CMS for MTへの機能追加について

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

ライセンス

ダウンロード

カテゴリー:プラグイン

提供開始から1ヶ月が経過したPower CMS for MT Ver.2。大幅に改良されたユーザーインターフェイスが好評をいただいています。

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

ドラッグ&ドロップアップロードの利用手順

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

Power CMS for MTの様々なドラッグ&ドロップインターフェイス

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

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

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

導入事例について、セミナーレポートのページもあわせてご覧ください。株式会社コンセント様による六本木ヒルズ様ウェブサイトの事例やサラヤ株式会社様の事例をご紹介いただきました。

カテゴリー:Power CMS 2

Power CMS for MT ver.2(MT5対応版)はまもなくリリースの予定です。

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

同一のURLでPC/携帯/iPhone対応のページを出力する

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

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

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

MTRawMTMLタグと新しいブロックタグでCSSを切り替える

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

<MTRawMTML>
<MTifKeitai>
        <link href="/common/css/keitai.css" rel="stylesheet" type="text/css" />
    <MTElse>
    <MTifiPhone>
        <link href="/common/css/iphone.css" rel="stylesheet" type="text/css" />
    <MTElse>
        <link href="/common/css/pc.css" rel="stylesheet" type="text/css" />
    </MTElse>
    </MTifiPhone>
    </MTElse>
</MTifKeitai>
</MTRawMTML>

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

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

MTRawMTMLTagタグ

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

<MTRawMTML><MTifKeitai></MTRawMTML>
    --携帯用の出力内容
<MTRawMTML></MTifKeitai></MTRawMTML>

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

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

<MTRawMTMLTag tag="MTifKeitai">
    --携帯用の出力内容
<MTRawMTMLTag tag="/MTifKeitai">

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

<MTifKeitai>
    --携帯用の出力内容
</MTifKeitai>

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

<MTRawMTML><MTQuery key="query" setvar="query"></MTRawMTML>
<MTRawMTMLTag tag="MTIf" params='name="query" eq="foo"'>
    -- ?query=foo 付きリクエストの場合に出力
<MTRawMTMLTag tag="/MTIf">

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

<MTQuery key="query" setvar="query">
<MTIf name="query" eq="foo">
    -- bar.html?query=foo 付きリクエストの場合に出力
</MTIf>

携帯ページで「本文」と「続き」を擬似的に別ページに分割する

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

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

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

プラグインのダウンロード

*1 Movable Type個人無償版をご利用の方は無償でご利用いただけます。
*2 GNU 一般公衆利用許諾契約書

カテゴリー:Power CMS 2イベント・セミナー情報テンプレート作成Tipsプラグイン技術情報

  • Alfasado
Alfasado