EC-CUBE(その6)当サイトについてにホームページのアドレスを表示する

当サイトについてにホームページのURLなどを表示したい場合がありますよね。ないですかそうですか。
というわけで当サイトについてのページに項目を追加してみました。


始めに、管理画面から当サイトについての情報を更新するには、基本情報管理のSHOPマスタの箇所から登録できます。なので、このSHOPマスタの部分が登録できるようになれば勝ちですね!

1.データベースに項目追加

SHOPマスタの情報はデータベースに登録されます。僕はインストール時にMySqlを選択したので、dtb_baseinfoというテーブルになります。
ここにhome_page_urlというカラムを追加してください。カラムの追加はphpMyAdmin(ローカルの人はhttp://127.0.0.1/phpmyadminになるでしょうか)を使うと簡単です。

alter table dtb_baseinfo add home_page_url text;

2.管理画面の編集

SHOPマスタを登録する管理画面のテンプレートファイルは以下のファイルになります。

  • \data\Smarty\templates\default\admin\basis\index.tpl

ここに以下のソースを追加してください。すると管理画面に登録するためのテキストボックスが表示されるはずです。

	<tr>
		<td bgcolor="#f2f1ec" width="180" class="fs12n">ホームページ</td>
		<td bgcolor="#ffffff" width="537" class="fs10n">
			<span class="red12"><!--{$arrErr.home_page_url}--></span>
			<input type="text" name="home_page_url" value="<!--{$arrForm.home_page_url|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" size="60" class="box60" style="<!--{if $arrErr.home_page_url != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}--><!--{/if}-->"/>
			<span class="red"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span>
		</td>
	</tr>

3.データベースへの登録

あとはデータベースに登録できればオッケーです!
EC-CUBEのVer.2では、実際に処理を行う部分は\data\classと\data\class_extendsに分かれていて、\data\class_extendsの方は\data\classを継承したクラス群が同じフォルダ構成となって配置されたフォルダになっています。
なので、今回はせっかくなので\data\class_extendsの方に書き込んでみます。書き込むのは以下のファイルになります。

  • \data\class_extends\page_extends\admin\basis\LC_Page_Admin_Basis_Ex.php
<?php
/*
 * This file is part of EC-CUBE
 *
 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

// {{{ requires
require_once(CLASS_PATH . "pages/admin/basis/LC_Page_Admin_Basis.php");

/**
 * 店舗基本情報 のページクラス(拡張).
 *
 * LC_Page_Admin_Basis をカスタマイズする場合はこのクラスを編集する.
 *
 * @package Page
 * @author LOCKON CO.,LTD.
 * @version $Id: LC_Page_Admin_Basis_Ex.php 16741 2007-11-08 00:43:24Z adachi $
 */
class LC_Page_Admin_Basis_Ex extends LC_Page_Admin_Basis {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
    }

    // 基本情報用のカラムを取り出す。
    function lfGetCol() {

        // 基本クラスでカラムを取得
        $arrCol = parent::lfGetCol();
		
        // 今回追加したカラムを取得
        $arrCol[] = "home_page_url";

        return $arrCol;
    }

    /* 取得文字列の変換 */
    function lfConvertParam($array) {
        /*
         *	文字列の変換
         *	K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
         *	C :  「全角ひら仮名」を「全角かた仮名」に変換
         *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
         *	n :  「全角」数字を「半角(ハンカク)」に変換
         *  a :  全角英数字を半角英数字に変換する
         */
        // 基本クラスでの変換
        parent::lfConvertParam($array);

        // 拡張クラスでの変換
        $arrConvList['home_page_url'] = "a";

        return SC_Utils_Ex::mbConvertKanaWithArray($array, $arrConvList);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}
?>

エラーチェックを独自に追加したい場合は、\data\class\pages\admin\basis\LC_Page_Admin_Basis.phpのfunction lfErrorCheck($array) {…をこのファイルに書き込んでください。多分コピーして基本クラスを呼ばない形の方がラクです。

4.当サイトについてへの表示

ここまでできたら、データベースには登録できているはずなので、当サイトについての画面に表示するだけです。
変更対象となるファイルは以下のファイルです。

  • \data\Smarty\templates\default\abouts\index.tpl
      <!--{if strlen($_site.home_page_url)}-->
      <tr>
        <th>ホームページ</th>
        <td><a href="<!--{$_site.home_page_url|escape}-->" onclick="window.open('<!--{$_site.home_page_url|escape}-->'); return false;"><!--{$_site.home_page_url|escape}--></a></td>
      </tr>
      <!--{/if}-->

onclick="window.open(…となっているのは別タブで開くようにするためです。


これでお店情報にGoogleMapでもなんでも表示できますね\(^o^)/