カスタムフィールド

カスタムフィールドとは、エントリーの記事を書いていくようなユニットとは違い、固定の入力方法で更新できるような入力欄のことです。値段の表記方法も人によって様々なので、たとえば、商品Aでは「¥8,000」、商品Bでは「8,000円」と記述されてしまっているという問題を防ぐことができます。

a-blog cms のカスタムフィールドについては、テンプレートを手で書く必要がありますが、その分、自由度が高い入力欄を作成できます。

カスタムフィールドの種類

カスタムフィールドには以下の5種類のものを設定できます。

  • ブログ
  • カテゴリー
  • エントリー
  • ユーザー
  • モジュール

カスタムフィールドのタグの基本

以下のようにカスタムフィールドを作る事ができます。どこかでご覧になった事があるかと思います。フォームのHTMLと同様に書く事で a-blog cms のカスタムフィールドを作る事ができると理解してください。

表示用のフォームタグ

メールアドレスの入力欄自体になります。スタイルを適応したい場合はこのinputタグにclass属性を記述してください。

<input type="text" name="mailaddress" value="{mailaddress}" />

システムに mailaddress という項目の存在を伝える記述

システムに伝えるための記述なので、type属性はhidden(非表示)にします。

<input type="hidden" name="field[]" value="mailaddress" />

必須入力を指示するための指定

こちらもシステムに伝えるための記述なので、type属性はhidden(非表示)にします。

<input type="hidden" name="mailaddress:validator#required" />

ブログのカスタムフィールド

まず、どこのファイルを修正すればいいかを知る方法からご紹介します。まず、管理ページ>ブログの順に移動し、カスタム情報のタブをクリックして、フォームを開きます。


ブログのカスタムフィールド設定画面

ブログのカスタムフィールド設定画面


以下はローカルPC上にインストールした場合のアドレスになります。レンタルサーバにインストールした際には localhost の部分がオリジナルのドメインになります。

http://localhost/demo/bid/1/admin/blog_edit/#acms_custom

このテンプレートファイルは以下のファイルになります。

/themes/system/admin/blog/edit.html

これを site2015 テーマ内で修正するのであれば、以下の場所にコピーして修正する事になります。

/themes/site2018/admin/blog/edit.html

これが基本ではありますが、この edit.html が次のバージョンアップでメンテナンスが入ってしまい、アップデートしたバージョンの管理画面とテンプレートに差が出ることもあるかもしれません。もちろん、このファイルを修正し、しっかりカスタマイズすることも方法の1つです。

今回、より簡単にカスタムフィールドをカスタマイして頂けるように、edit.html の中に書かれているインクルードの記述をご紹介します。以下のインクルードの記述の場所には何もファイルが存在しておりません。ですので、カスタマイズ前の段階では何も表示されません。

@include("/admin/blog/field.html")

この場所に field.html を置く事で、あたかも edit.html を修正したかのような効果がある事になります。

/themes/site2018/admin/blog/field.html

テキストの入力欄を1つ、プルダウンメニューを1つ追加する際のサンプルは以下のようになります。

<h3>カスタムフィールド サンプル</h3>

<input type="text" name="sample1" value="{sample1}" />
<input type="hidden" name="field[]" value="sample1" />

<select name="sample2">
    <option value="aaa"{sample2:selected#aaa}>aaa</option>
    <option value="bbb"{sample2:selected#bbb}>bbb</option>
    <option value="ccc"{sample2:selected#ccc}>ccc</option>
</select>
<input type="hidden" name="field[]" value="description" />

このようにして多くのカスタムフィールドを設定し、柔軟にフォームを作成でき、クライアントに分かりやすいインターフェースを提供できるようになります。

先ほどまでは入力ページの入力欄の説明でしたが、表示用のページに Blog_Field というカスタムフィールドのデータを表示するモジュールを利用し、以下のようにテンプレートに記述します。

<!-- BEGIN_MODULE Blog_Field -->
  <p> sample1 : {sample1}</p>
  <p> sample2 : {sample2}</p>
<!-- END_MODULE Blog_Field -->

エントリーのカスタムフィールド

エントリーのカスタムフィールドについては、いろいろなコントロールが可能です。例えば、このカテゴリーのときとか、このブログのとき、このエントリーのときのみ、というように、同じエントリーのフォームで違うフォームを表示する事ができれば、必要なところで必要なカスタムフィールドのみを表示させる事が可能になります。

ブログのカスタムフィールドと同様にエントリーのカスタムフィールド用の field.html を用意します。

/themes/site2018/admin/entry/field.html

内容としては、以下のように記述します。

<!--#include file="/admin/entry/blog%{BID}.html" -->
<!--#include file="/admin/entry/category%{CID}.html" -->
<!--#include file="/admin/entry/entry%{EID}.html" -->

グローバル変数とインクルードを利用して、特定のブログや、カテゴリー、エントリーのときにのみ、読み込むファイルを用意します。例えば、カテゴリーIDが 1 のときは以下のようなファイルを用意します。

/themes/site2018/admin/entry/category1.html

エントリーのカスタムフィールドについては、エントリーについては修正時点でないとIDが確定していません。カテゴリーのプルダウンで変更してもカスタムフィールドは変化しませんので、注意する必要があります。

a-blog cms と Google Analytics で A/B テストできる環境を作ってみる

私の個人のブログに前後編で書こうとしていた「a-blog cms で A/B テストできる環境を考えてみる その1」を引っ越してきてきました。こちらのエントリーが公開された時点で元のコンテンツはエントリーは削除していませんが noindex に変更してあります。(エントリー側で 301リダイレクトできるような事ができてもいいかもと思ったりもしています)



a-blog cms には Cookie の値を利用してテーマを切り替えることができます。その機能を活用の1つとして、A/Bテストができる環境を作ってみる事を考えてみたいと思います。