PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > PowerCMS 3 > カスタムフィールドで指定したグループ名を出力

2011年08月22日

カスタムフィールドで指定したグループ名を出力

カスタムフィールドで指定したグループ名を出力する方法はありますか?”というご質問をサポートにいただきました。Power CMS 3の新機能であるカスタムフィールドPro(MT標準のカスタムフィールドタイプを大幅に拡張するもの)で出来るようになった「個別のオブジェクト」と「オブジェクトのグループ」をカスタムフィールドで関連づける機能を使った時にテンプレートでグループ名を出したいといったケースだと思います。

「個別のオブジェクト」と「オブジェクトのグループ」の紐づけというのは例えば「ブログ記事」に「ブログ記事のグループ」を紐付けるといった同一のオブジェクトの関連付けや、「ブログ記事」に「バナーのグループ」を紐付けるといったような異なるオブジェクトのグループの関連付けを指します。

テンプレートの紹介の前に簡単にこの機能についてご紹介します。

グループ機能とは下記のキャプチャのように左側にオブジェクトの一覧、右側へドラッグ&ドロップしてオブジェクトをグループ化、表示順をマウス操作で自在に設定できるものです(キャプチャはバナー(広告)グループの編集画面)。

バナーグループの編集画面

関連情報

カスタムフィールドの作成時にカスタムフィールドの種類のところでグループを選択します。

カスタムフィールドの作成画面

指定できるグループ

  • ブログ記事グループ
  • ウェブページグループ
  • ブログ記事/ウェブページグループ(ブログ記事/ウェブページの混在)
  • カテゴリグループ
  • フォルダグループ
  • カテゴリ/フォルダグループ(カテゴリ/フォルダの混在)
  • ウェブサイトグループ
  • ブロググループ
  • ウェブサイト/ブロググループ(ウェブサイト/ブログの混在)
  • オブジェクトグループ(ウェブサイト/ブログ/カテゴリ/フォルダ/ブログ記事/ウェブページの混在)
  • アイテムグループ
  • バナーグループ(広告)
  • リンクグループ
  • テンプレートグループ
  • カスタムオブジェクト
  • カスタムオブジェクトを継承して作成されたオブジェクト

「システムオブジェクト」として指定したオブジェクト(例:ブログ記事)の編集画面に以下のようなボタンが表示されますので、リンクをクリックしてダイアログから作成したグループを選択します。

グループの選択ボタン

通常MTのカスタムフィールドはファンクションタグになりますが、Power CMSのグループについてはブロックタグになり、グループに登録されたアイテムが指定した順番通りに出力されます。例えばタグを「EntryBannerGroup」とした場合、以下のようにテンプレートを書くことができます。

<MTEntryBannerGroup>
<mt:if name="__first__"><ul></mt:if>
<li><a href="<$MTCampaignURL encode_html="1"$>"><img src="<$MTCampaignBannerURL encode_html="1"$>" width="<$MTCampaignBannerWidth$>" height="<$MTCampaignBannerHeight$>" alt="<$MTCampaignTitle encode_html="1"$>" /></a></li>
<mt:if name="__last__"></ul></mt:if>
</MTEntryBannerGroup>

カスタムフィールドで指定したグループ名を出力する

さて、ようやく本題です。Power CMS標準ではグループ名を出力することはできませんが、下記の方法で取得することができるようになります。

まず、GetNameプラグインをインストールします。modelモディファイアとidモディファイアを指定して、そのオブジェクトの名前を出力するプラグインです。

Power CMSのグループカスタムフィールドタグに raw="1" モディファイアを付けます。こうすることで、選択された(関連付けられた)グループのIDを得ることができます。そのIDをGetNameプラグインを用いて出力します。

<MTEntryBannerGroup raw="1" setvar="group_id"></MTEntryBannerGroup>
<MTGetName model="campaigngroup" id="$group_id" escape="html">

実はこのプラグインはサポートへの質問を受けて作成したものです。Power CMSのサポートチームではお客さまのご要望へお答えする、お客さまの課題を解決するために様々なサポートを行っています。マニュアルを見て“できそうにないな”と思った件でもお気軽にサポートへ相談してみてください。このような形で解決策をご提示できるかもしれません。


カテゴリー
PowerCMS 3
サポート
テンプレート作成Tips
プラグイン

Recent Entries