MTAppListing でブログ記事グループ的なことをやってみる

PowerCMSの好きな機能の1つのグループ系の機能があります。

グルーピング&ソート | PowerCMS の機能 | PowerCMS - カスタマイズする CMS。
http://www.powercms.jp/features/function/sorting.html

これをつかえば好きなように色々なオブジェクトの表示/非表示を切り替えたり、並び替えが出来たりと機能が豊富なPowerCMSの中でもほぼ必ず使う機能のような気がします。

このPowerCMSのブログ記事グループの簡易版的な機能を MTAppjQuery v1.7.0 でリリースした MTAppListingを使って試してみました。

今回はリストにした記事一覧を、表示させたいインデックステンプレートで選択するという前提で進めます。
テンプレートに1行テキストのカスタムフィールド「bpentrylist」を追加します。

記事一覧を表示させてそこから使うエントリーを選択したいので、user.jsは以下の様に書きます。

if(mtappVars.screen_id == 'edit-template-index'){

$('#customfield_bpentrylist').MTAppListing({
  url: '<mt:Var name="config.CGIPath"><mt:Var name="config.DataAPIScript">/v1/sites/<mt:BlogID>/entries',
  data: {
    limit: 9999999
  },
  jsontable: {
    header: {
      id: 'ID',
      title: 'タイトル'
    },
    headerOrder: ['id', 'title'],
    itemsRootKey: 'items',
    listingTargetKey: 'id',
    listingTargetEscape: false
  }
});

}

これで追加したカスタムフィールドで記事を選択出来るようになります。

選択された記事自体は以下の様なテンプレートで取り出すことが出来ます。

<mt:SetVar name="relatedids"><mt:bpentrylist setvar="relatedids">
<mt:Var name="relatedids" regex_replace="/^,/","" regex_replace="/,$/","" setvar="relatedids">
<mt:Var name="relatedids" split="," setvar="_relatedids" /><mt:If name="_relatedids">
<mt:Loop name="_relatedids"><mt:If name="__first__"><h2>ブログ記事グループ的サンプル</h2><ul></mt:If>
<mt:Entries id="$__value__"><li><a href="<mt:EntryPermalink>"><mt:EntryTitle></a></li></mt:Entries>
<mt:If name="__last__"></ul></mt:If></mt:Loop>
</mt:If>

配列のまま mt:Entries に渡してしまうとソートされてしまうようなので、配列をループさせて mt:Entries の id モディファイアに1つずつ渡しています。

簡易的な機能ではありますが、こういった使い方をしたいときに使ってみてはいかがでしょうか?


Comments

comments powered by Disqus