• 2018.06.23
  • [最終更新日]2018.06.26
  • EC-cube

【EC-cube2.13】会員管理に追加した項目で絞込み検索したい

【EC-cube2.13】会員管理に追加した項目で絞込み検索したいのイメージ画像

今回は前回追加した項目を使用して絞り込み検索をしたいと思います。

前回の記事はこちら【EC-cube2.13】会員管理に項目を追加したい

Smartyテンプレート側ファイルの編集

「data/Smarty/templates/admin/adminparts/form_customer_search.tpl」を編集

<tr>
    <th>年間売上高</th>
    <td colspan="3">
        <!--{assign var=key value="search_turnover_seg"}-->
        <!--{html_checkboxes name=$key options=$arrTurnOver separator="&nbsp;" selected=$arrForm[$key].value}-->
    </td>
</tr>

といった感じにテーブルの行を追加。

PHPロジック側ファイルの編集(1)

「/data/class/helper/SC_Helper_Customer.php」を編集

public function sfSetSearchParam(&$objFormParam)
{
    $objFormParam->addParam('会員ID', 'search_customer_id', ID_MAX_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
    $objFormParam->addParam('お名前', 'search_name', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
     ・
     ・
     ・
    //追記
    $objFormParam->addParam('年間売上高', 'search_turnover_seg', INT_LEN, 'n', array('MAX_LENGTH_CHECK'));

PHPロジック側ファイルの編集(2)

「/data/class/pages/admin/customer/LC_Page_Admin_Customer.php」を編集

public function init()
{
    parent::init();
    $this->tpl_mainpage = 'customer/index.tpl';
    $this->tpl_mainno = 'customer';
    $this->tpl_subno = 'index';
     ・
     ・
     ・	
    $this->arrStatus = $masterData->getMasterData('mtb_customer_status');
    $this->arrMagazineType = $masterData->getMasterData('mtb_magazine_type');
    //追記
    $this->arrTurnOver = $masterData->getMasterData('mtb_turnover_seg');

PHPロジック側ファイルの編集(3)

「/data/class/SC_CustomerList.php」を編集

class SC_CustomerList extends SC_SelectSql_Ex
{
    public $arrColumnCSV;

    public function __construct($array, $mode = '')
    {
        parent::__construct($array);

        $objDb = new SC_Helper_DB_Ex();
        $dbFactory = SC_DB_DBFactory_Ex::getInstance();
     ・
     ・
     ・	
        // 会員状態
        if (!isset($this->arrSql['search_status'])) $this->arrSql['search_status'] = '';
        if (is_array($this->arrSql['search_status'])) {
            $arrStatusVal = $this->setItemTerm($this->arrSql['search_status'], 'status');
            foreach ($arrStatusVal as $data) {
                $this->arrVal[] = $data;
            }
        }
		
	// 年間売上高 追記
        if (!isset($this->arrSql['search_turnover_seg'])) $this->arrSql['search_turnover_seg'] = '';
        if (is_array($this->arrSql['search_turnover_seg'])) {
            $arrTurnOverVal = $this->setItemTerm($this->arrSql['search_turnover_seg'], 'turnover_seg');
            foreach ($arrTurnOverVal as $data) {
                $this->arrVal[] = $data;
            }
        }

        $this->setOrder('customer_id DESC');
    }

【追記】メルマガ管理にも反映させる場合

「data/Smarty/templates/admin/adminparts/form_customer_search.tpl」を編集した時点で、実はメルマガ管理の検索にも項目名は出てしまいます。

おそらく方法としては、
1. 上記ファイルではないファイルを編集して会員管理のみに表示されるようにする
2. メルマガ管理でも検索を機能させる

のどちらかとなりそうですので、後者の場合の方法です。

方法は簡単で、「/data/class/pages/admin/mail/LC_Page_Admin_Mail.php」も
「LC_Page_Admin_Customer.php」と同じように追記していただくだけです。