TopMovable Typeカスタムフィールド > 2010年4月
2010年4月30日

コマーシャルパックで利用する管理画面の代替テンプレートパス(その2)

April 30,2010 11:55 PM
Tag:[, ]
Permalink

コマーシャルパックで利用する管理画面の代替テンプレートパス(その1)」の続きです。

カスタムフィールドの一覧を表示するlist_field.tmplは、代替テンプレートに配置したファイルを正常に取得しないようです。

原因は、Community.pack::lib::MT::Community::list_fieldのテンプレート取得処理で、テンプレートファイルのパスを直接指定している(下記赤色部分)ためと思われます。

sub list_field {
    my ($app) = @_;
    my $plugin = $app->component('Commercial');
    my $q = $app->param;
    …中略…
    return $app->listing({
        terms => {
            $blog_id ? ( blog_id => [ $blog_id, 0 ] ) : ()
        },
        args => { sort => 'name', 'direction' => 'ascend' },
        no_limit => 1,
        type => 'field',
        code => $hasher,
        template => File::Spec->catdir($plugin->path,'tmpl','list_field.tmpl'),
        params => {
            ($blog_id ? (
                blog_id => [ $blog_id, 0 ],
                edit_blog_id => $blog_id,
            ) : ( system_overview => 1 )),
            list_noncron => 1,
            saved_deleted => $q->param('saved_deleted') || 0,
            saved => $q->param('saved') || 0,
            obj_types_loop => \@customfield_objs,
            cfg_customfield => 1,
            search_type => 'entry',
        },
    });
}

赤色部分を次のように修正すれば、代替テンプレートが取得できるようになります。

sub list_field {
    my ($app) = @_;
    my $plugin = $app->component('Commercial');
    my $q = $app->param;
    …中略…
    return $app->listing({
        terms => {
            $blog_id ? ( blog_id => [ $blog_id, 0 ] ) : ()
        },
        args => { sort => 'name', 'direction' => 'ascend' },
        no_limit => 1,
        type => 'field',
        code => $hasher,
        template => 'list_field.tmpl',
        params => {
            ($blog_id ? (
                blog_id => [ $blog_id, 0 ],
                edit_blog_id => $blog_id,
            ) : ( system_overview => 1 )),
            list_noncron => 1,
            saved_deleted => $q->param('saved_deleted') || 0,
            saved => $q->param('saved') || 0,
            obj_types_loop => \@customfield_objs,
            cfg_customfield => 1,
            search_type => 'entry',
        },
    });
}
Comments [0] | Trackbacks [0]
2010年4月19日

特定のカスタムフィールドの情報を出力する(その2)

April 19,2010 11:55 PM
Tag:[, ]
Permalink

特定のカスタムフィールドの情報を出力する」で、Movable Typeの特定のカスタムフィールドの情報を出力する方法を紹介しましたが、デフォルトで用意されているモディファイアがありましたので、本エントリーでは「その2」ということで紹介します。

1.includeモディファイアを使用する

MTXXCustomFieldsタグにincludeモディファイアを設定し、モディファイアの値にカスタムフィールドの名前を設定します。

<mt:Entries>
  <mt:EntryCustomFields include="価格">
    <mt:CustomFieldName />
    <mt:CustomFieldValue />
  </mt:EntryCustomFields>
</mt:Entries>

複数のフィールドを対象にする場合は、モディファイアに設定した値をカンマで区切ります。

<mt:Entries>
  <mt:EntryCustomFields include="価格,サイズ">
    <mt:CustomFieldName />
    <mt:CustomFieldValue />
  </mt:EntryCustomFields>
</mt:Entries>

2.excludeモディファイアを使用する

MTXXCustomFieldsタグにexcludeモディファイアを設定し、モディファイアの値にカスタムフィールドの名前を設定します。こちらは公式ドキュメントに掲載されています。

<mt:Entries>
  <mt:EntryCustomFields exclude="価格">
    <mt:CustomFieldName />
    <mt:CustomFieldValue />
  </mt:EntryCustomFields>
</mt:Entries>

複数のフィールドを対象にする場合は、モディファイアに設定した値をカンマで区切ります。

<mt:Entries>
  <mt:EntryCustomFields exclude="価格,サイズ">
    <mt:CustomFieldName />
    <mt:CustomFieldValue />
  </mt:EntryCustomFields>
</mt:Entries>
Comments [0] | Trackbacks [0]
2010年4月16日

特定のカスタムフィールドの情報を出力する

April 16,2010 12:30 AM
Tag:[, ]
Permalink

Movable Typeで特定のカスタムフィールドの情報を出力するためのカスタマイズを紹介します。

ここではブログ記事に複数追加したカスタムフィールドから、次のように定義した「価格」カスタムフィールドの名前と値を出力する例で説明します。

  • テンプレートタグ名:MTEntryProductPrice
  • ベースネーム:cf_1

1.基本

あるシステムオブジェクト(ここではブログ記事)に複数のカスタムフィールドの情報を出力するには、MTEntryCustomFieldsタグを利用し、タグブロック内でMTCustomFieldXXタグを記述します。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:CustomFieldName />
    <mt:CustomFieldValue />
  </mt:EntryCustomFields>
</mt:Entries>

ただし、この場合、ブログ記事に登録されているすべてのカスタムフィールドの情報が出力されてしまいます。

2.特定のカスタムフィールドの情報を出力する

特定のカスタムフィールドの情報を出力するには、MTEntryCustomFieldsタグブロック内で、MTIfタグを使ってMTCustomFieldBasenameタグを判定する方法があります。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:If tag="CustomFieldBasename" eq="cf_1">
      <mt:CustomFieldName />
      <mt:CustomFieldValue />
    </mt:If>
  </mt:EntryCustomFields>
</mt:Entries>

MTCustomFieldValueタグは、MTEntryProductPriceタグでもOKです。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:If tag="CustomFieldBasename" eq="cf_1">
      <mt:CustomFieldName />
      <mt:MTEntryProductPrice />
    </mt:If>
  </mt:EntryCustomFields>
</mt:Entries>

もう少しきちんと書くのであれば、MTEntryProductPriceタグの値があることも判定します。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:If tag="CustomFieldBasename" eq="cf_1">
      <mt:If tag="EntryProductPrice">
        <mt:CustomFieldName />
        <mt:MTEntryProductPrice />
      </mt:If>
    </mt:If>
  </mt:EntryCustomFields>
</mt:Entries>

CustomFieldExtensionTags プラグイン」を利用すれば、テンプレートタグ名でも判定できるようになります。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:If tag="CustomFieldTag" eq="EntryProductPrice">
      <mt:If tag="EntryProductPrice">
        <mt:CustomFieldName />
        <mt:MTEntryProductPrice />
      </mt:If>
    </mt:If>
  </mt:EntryCustomFields>
</mt:Entries>

3.失敗例

次のように、カスタムフィールドのテンプレートタグを判定する方法ではうまくいきません。

<mt:Entries>
  <mt:EntryCustomFields>
    <mt:If tag="EntryProductPrice">
      <mt:CustomFieldName />
      <mt:CustomFieldValue />
    </mt:If>
  </mt:EntryCustomFields>
</mt:Entries>
Comments [0] | Trackbacks [0]
Now loading...
Recent Entries
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2022年
2021年
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3