オリジナルのカラムを追加する1【要PHP】

今回の内容はSOY Inquiry 2.9.0以降で動作します。


オリジナルのカラムを追加します。

例として、カスタムカラム(CustomColumn)という項目を追加しながら、仕組みを見ていきます。


はじめに文字列を出力するのみの簡単なカラムのコードを用意します。

下記のパスになるようにファイルを作成します。

/CMSインストールディレクトリ/app/webapp/inquiry/src/columns/custom/CustomColumn.class.php

※太字の箇所は***Columnという命名規則であれば、***の箇所は任意の文字列で良いです。


CustomColumn.class.phpの中身は下記のようにします。

<?php

class CustomColumn extends SOYInquiry_ColumnBase{

	/**
	 * ユーザに表示するようのフォーム
	 * @param array
	 * @return string
	 */
	function getForm(array $attrs=array()){
		return "何らかのフォーム";
	}

	/**
	 * 確認画面で呼び出す
	 * @return string
	 */
	function getView(){
		return "入力した内容";
	}

	/**
	 * データ投入用
	 * @return string
	 */
	function getContent(){
		return "挿入する内容";
	}

	/**
	 * 設定画面で表示する用のフォーム
	 * @return string
	 */
	function getConfigForm(){
		return "設定画面";
	}
}

続いて、CustomColumnをSOY Inquiryに登録します。

/CMSインストールディレクトリ/common/config/inquiry.config.php.sample

/CMSインストールディレクトリ/common/config/inquiry.config.php

にリネームした後、下記のように追加します。

<?php
$advancedColumns = array(
	"Custom" => "カスタムカラム",
);

※***ColumnからColumnを除いておきます。


SOY Inquiryの画面で何らかのフォームの問い合わせ項目の編集の画面を開くと、


custom_column_0


今回追加したカスタムカラムを追加することができるようになっています。


custom_column_1


赤線で示した箇所に自身で作成したHTMLを挿入することができ、

/**
 * 設定画面で表示する用のフォーム
 * @return string
 */
function getConfigForm(){
	return "設定画面";
}

getConfigFormメソッドで文字列を返す事で挿入します。




公開側の方でもフォームの表示を確認してみますと、


custom_column_2


/**
 * ユーザに表示するようのフォーム
 * @param array
 * @return string
 */
function getForm(array $attrs=array()){
	return "何らかのフォーム";
}

getFormメソッドで返した文字列が出力されています。




公開側のフォームで入力内容の確認ボタンを押してみます。


custom_column_3


/**
 * 確認画面で呼び出す
 * @return string
 */
function getView(){
	return "入力した内容";
}

getViewメソッドで返した文字列が出力されています。




確認画面で送信ボタンを押すと、


custom_column_4


送信完了画面が表示されます。

このページのお問い合わせ内容で出力されているカスタム: 挿入する内容

/**
 * データ投入用
 * @return string
 */
function getContent(){
	return "挿入する内容";
}

getContentメソッドで返した文字列になります。


getContentメソッドの返り値は送信完了画面の他に、自動送信メールや管理画面でお問い合わせ内容の詳細を開いた時に記載される値でも利用します。


もし、メールに自動挿入されるテキストをgetContentで返す文字列とは異なる値にしたい場合は、

/**
 * メールの本文に使用する
 * @return string
 */
function getMailText(){
	return "メールで挿入する値";
}

getMailTextメソッドを用意して文字列を返します。


追記

カスタムカラムの親クラスのSOYInquiry_ColumnBaseのコードは下記のリンク先ページで確認できます。

https://github.com/inunosinsi/soycms/blob/master/cms/app/webapp/inquiry/src/domain/SOYInquiry_Column.class.php