EC CUBEは自分でカスタマイズすることが前提のシステム。カスタマイズしたい部分は当たりをつけてコードを書き直すしかない。PHPを知らなくともできる部分もある(2012/02/24 小平探検隊)
カスタマイズの目標:
本来のショッピングサイト(商品在庫機能とカート機能)を「作品募集」という賞イベントの会員登録と記事投稿サイトにカスタマイズ。
事前準備:ダウンロード
(Ver2.11.5):2012年2月28日 → eccube-2.11.5.zip
http://www.ec-cube.net/download/index.php
事前準備:MySQLデータベースの作成
(オリジナルサイト)
http://www.☆.com/eccube/html/
(比較用のサイト bサイト)
http://www.☆.com/eccubeb/html/
インストール:EC CUBE全ファイルをアップし、ブラウザでアクセス
(インストール)
http://www.☆.com/eccube/html/install/
(サイト)
http://www.☆.com/eccube/html/
ログイン
eccube/reg/admin/ ・・・管理者用画面ログイン
eccube/reg/mypage/login.php ・・・クライアント ログイン
ID&パスワードを忘れたとき
phpMyAdminのdtd_memberテーブルで管理者用ID&パスワードのうち最低IDはわかる。最終的には再インストール(データベースそのままで)。
仕様書はないか、あっても素人には無関係
プログラマ向けの仕様書があっても素人には役立たずだし、プログラマなら自分でコードを追っていく方が早いだろう。
管理画面からの設定:
インストールを完了すると、ページのデザインや確認メールの内容を変更するなど、すぐにいろいろな要望が出てくる。EC CUBEでは管理画面でシステム全体の設定が行える。
管理画面では「デザイン管理」「システム管理」あたりにその機能が集約されているが、行えることは限られている。むしろ、基本的は中身を自分でカスタマイズすることを前提にしたシステムと考えた方が早い。
必要なページをすべて3カラムから1カラムに変更
「デザイン管理」 → 「PC」 → 「レイアウト設定」
http://www.☆.com/eccube/html/admin/
テンプレートのルール
EC-CUBEではSmartyを使用。Smartyがよくわからないが、htmlファイルにPHPコードを埋め込むのではなく、PHPプログラムは外部に出して、それを読み出す独特のタグ(<!--{}-->で挟まれている)をhtmlに記述する方式のよう。
<!--{}-->タグのコード内に「|h」という記述が多く書かれている。htmlタグのエスケープコードらしい。おまじないとして入っているくらいに解釈。
ファイルの構造
・大きく「data」と「html」
・画像などは下記フォルダあたりに:
eccube-2.11.5\html\user_data\packages\default\img
・テンプレートは下記フォルダあたりに:
eccube-2.11.5\data\Smarty\templates\default
・プログラムは下記フォルダあたりに:
eccube-2.11.5\data\class\pages
eccube-2.11.5\data\class\helper
ヘッダー カスタマイズ
eccube-2.11.5\data\Smarty\templates\default\header.tpl
ロゴ画像
eccube-2.11.5\html\user_data\packages\default\img\common\logo.gif
<title>内容の変更
eccube-2.11.5\data\Smarty\templates\default\site_frame.tpl
上部をコメントアウトして、ベタで<title>内容を書き込む
<!-- <title><!--{$arrSiteInfo.shop_name|h}--><!--{if $tpl_subtitle|strlen >= 1}--> / <!--{$tpl_subtitle|h}--><!--{elseif $tpl_title|strlen >= 1}--> / <!--{$tpl_title|h}--><!--{/if}--></title> -->
<title>2012年 第1回 作品募集 (応募作品募集)</title>
<h1>内容の変更
「EC-CUBE発!世界中を旅して見つけた立方体グルメを立方隊長が直送!」
→
「作品募集」
<p id="site_description">EC-CUBE発!世界中を旅して見つけた立方体グルメを立方隊長が直送!</p>
<h1>
<a href="<!--{$smarty.const.TOP_URLPATH}-->"><img src="<!--{$TPL_URLPATH}-->img/common/logo.gif" alt="EC-CUBE ONLINE SHOPPING SITE" /><span><!--{$arrSiteInfo.shop_name|h}-->/<!--{$tpl_title|h}--></span></a>
</h1>
→
<p id="site_description">作品募集</p>
<h1>
<a href="<!--{$smarty.const.TOP_URLPATH}-->"><img src="<!--{$TPL_URLPATH}-->img/common/logo.gif" alt="作品募集" /><span><!--{$arrSiteInfo.shop_name|h}-->/<!--{$tpl_title|h}--></span></a>
</h1>
新規会員登録ボタン → 会員規約ページをパスするカスタマイズ
eccube-2.11.5\data\Smarty\templates\default\header.tplから「kiyaku.php」を抜く
<a href="<!--{$smarty.const.ROOT_URLPATH}-->entry/kiyaku.php → <a href="<!--{$smarty.const.ROOT_URLPATH}-->entry/
カートボタン撤去
eccube-2.11.5\data\Smarty\templates\default\header.tplの次の部分を削除:
ヘッダーのログインボタン撤去
<a href="<!--{$smarty.const.CART_URLPATH}-->" onmouseover="chgImg('<!--{$TPL_URLPATH}-->img/common/btn_header_cart_on.jpg','cartin');" onmouseout="chgImg('<!--{$TPL_URLPATH}-->img/common/btn_header_cart.jpg','cartin');"><img src="<!--{$TPL_URLPATH}-->img/common/btn_header_cart.jpg" alt="カゴの中を見る" name="cartin" id="cartin" /></a>
</li>
<div id="headerInternalColumn">
<!--{* ▼HeaderInternal COLUMN*}-->
<!--{if $arrPageLayout.HeaderInternalNavi|@count > 0}-->
<!--{* ▼上ナビ *}-->
<!--{foreach key=HeaderInternalNaviKey item=HeaderInternalNaviItem from=$arrPageLayout.HeaderInternalNavi}-->
<!-- ▼<!--{$HeaderInternalNaviItem.bloc_name}--> -->
<!--{if $HeaderInternalNaviItem.php_path != ""}-->
<!--{include_php file=$HeaderInternalNaviItem.php_path items=$HeaderInternalNaviItem}-->
<!--{else}-->
<!--{include file=$HeaderInternalNaviItem.tpl_path items=$HeaderInternalNaviItem}-->
<!--{/if}-->
<!-- ▲<!--{$HeaderInternalNaviItem.bloc_name}--> -->
<!--{/foreach}-->
<!--{* ▲上ナビ *}-->
<!--{/if}-->
<!--{* ▲HeaderInternal COLUMN*}-->
</div>
cssファイル
eccube-2.11.5\html\user_data\packages\default\css\common.css
MYページボタン、登録ボタンの右寄せは:
下記の「float: left; → float: right;」
/* ヘッダーナビ
div#header_navi {
float: right;
width: 409px;
height: 38px;
}
div#header_navi ul li {
display: block;
float: left;
}
フッターのカスタマイズ
eccube-2.11.5\data\Smarty\templates\default\footer.tpl
「Copyright c 2005-2012 mydomain All rights reserved.」となっている。2005は不要で、mydomainは社名に変更
<!--{if $smarty.const.RELEASE_YEAR != $smarty.now|date_format:"%Y"}--><!--{$smarty.const.RELEASE_YEAR}-->-<!--{/if}--><!--{$smarty.now|date_format:"%Y"}--><!--{$arrSiteInfo.shop_name_eng|default:$arrSiteInfo.shop_name|h}--> All rights reserved.
→
<!--{$smarty.now|date_format:"%Y"}--> mydomain Inc. All rights reserved.
トップページのカスタマイズ
トップページ:
eccube-2.11.5\data\Smarty\templates\default\index.tpl
トップページのトップ画像
eccube-2.11.5\html\user_data\packages\default\img\banner\bnr_top_main.jpg
幅580px
トップページ → 商品詳細ページ
eccube-2.11.5\data\Smarty\templates\default\products\detail.tpl
商品詳細ページにて、作品募集を商品として登録する。 → 「管理画面」 → 「商品マスター」 → 「」 → 「」
商品レビュー
おそらく
eccube-2.11.5\data\class\pages\products\LC_Page_Products_Review.php
会員登録完了(本登録)の画面のカスタマイズ
ページ本文:
data/Smarty/templates/default/regist/complete.tpl
ページタイトル:
/award/data/class/pages/entry/LC_Page_Entry.php の中の「 $this->tpl_title = '登録(完了ページ)';」
会員登録の画面をカスタマイズ
data/Smarty/templates/default/entry/index.tpl
data\Smarty\templates\default\entry
会員登録フォームの上に、注意書きを入れたいとき:
<span class="attention">※</span>印は必須項目です。スムーズなコミュニケーションのためにその他の項目もなるべく記入ください。なお、記入内容は後でも変更可能です。
<table summary="会員登録フォーム">
<!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/form_personal_input.tpl" flgFields=3 emailMobile=false prefix=""}-->
</table>
※会員登録フォームは別ファイル(form_personal_input.tpl)を読み込んできて展開している。
会員登録の確認画面で不要な「生年月日」などを消す
data/Smarty/templates/default/shopping/confirm.tpl
不要部分をコメントアウト
<!--
<tr>
<th>生年月日</th>
<td>
<!--{if strlen($arrForm.year) > 0 && strlen($arrForm.month) > 0 && strlen($arrForm.day) > 0}-->
<!--{$arrForm.year|h}-->年<!--{$arrForm.month|h}-->月<!--{$arrForm.day|h}-->日
<!--{else}-->
未登録
<!--{/if}-->
</td>
</tr>
-->
会員登録画面に「SHOP用メモ」欄を追加する
【表示部分】会員登録のhtmlファイルに下記の「SHOP用メモ」のテーブル行を追加
eccube\data\Smarty\templates\default\frontparts\form_personal_input.tpl
<tr>
<th>SHOP用メモ</th>
<td>
<span class="attention"><!--{$arrErr.note}--></span>
<textarea name="note" maxlength="<!--{$smarty.const.LTEXT_LEN}-->" <!--{if $arrErr.note != ""}--><!--{sfSetErrorStyle}--><!--{/if}--> cols="60" rows="8" class="area60"><!--{$arrForm.note|h}--></textarea>
</td>
</tr>
【ロジック部分】
eccube-2.11.4\data\class\helper\SC_Helper_Customer.php
* 会員共通
function sfCustomerCommonParam (&$objFormParam)
* 会員登録共通
function sfCustomerRegisterParam (&$objFormParam, $isAdmin = false, $is_mypage = false)
//下記1文を追加する:
$objFormParam->addParam("SHOP用メモ", 'note', LTEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));
必須項目の解除
/data/class/helper/SC_Helper_Customer.php
「EXIST_CHECK」をはずす。
※データベースのテーブルでも必須設定を解除する必要があると思ったが、phpMyAdminでdtb_baseinfoを見たが必須設定はないようだ。
会員登録 → 確認ページ → 完了ページ
eccube-2.11.5\data\Smarty\templates\default\entry\index.tpl
eccube\data\Smarty\templates\default\frontparts\form_personal_input.tpl
会員登録(確認ページ)
eccube-2.11.5\data\Smarty\templates\default\entry\confirm.tpl
コメントアウトするものと、SHOP用メモは追加する。
<tr>
<th>SHOP用メモ</th>
<td>
<!--{$arrForm.note|h}-->
</td>
</tr>
会員登録(完了ページ)
/☆/eccube/data/Smarty/templates/default/regist/complete.tpl
<!-- <p>今後ともよろしくお願い申し上げます。</p> -->
<div class="shop_information">
<p class="name"><!--{$arrSiteInfo.company_name|h}--></p>
<p>お問い合わせは mail@☆.com または Tel.○○8<br /></p>
</div>
会員登録(完了ページ)
(ファイル)\data\Smarty\templates\default\regist\complete.tpl
それではショッピングをお楽しみください。
今後ともご愛顧賜りますようよろしくお願い申し上げます。
TEL:<!--{$arrSiteInfo.tel01}-->-<!--{$arrSiteInfo.tel02}-->-<!--{$arrSiteInfo.tel03}--> <!--{if $arrSiteInfo.business_hour != ""}-->(受付時間/<!--{$arrSiteInfo.business_hour}-->)<!--{/if}-->
会員登録の完了メールの内容カスタマイズ
(ファイル)\data\Smarty\templates\default\mail_templates\customer_regist_mail.tpl
・名前
<!--{$arrForm.name01}--><!--{$arrForm.name02}-->
・カナ
<!--{$arrForm.kana01}--><!--{$arrForm.kana02}-->
・郵便番号
〒<!--{$arrForm.zip01}-->-<!--{$arrForm.zip02}-->
・住所
<!--{$arrPref[$arrForm.pref.value]}--><!--{$arrForm.addr01}-->
<!--{$arrForm.addr02}-->
・電話
<!--{$arrForm.tel01}-->-<!--{$arrForm.tel02}-->-<!--{$arrForm.tel03}-->
・メールアドレス
<!--{$arrForm.email}-->
<!--{$arrForm.email_mobile}-->
・職業:
<!--{$arrJob[$arrForm.job.value]}-->
・性別:
<!--{$arrForm.sex}-->
・SHOP用メモ:
<!--{$arrForm.note}-->
・パスワードを忘れた時のヒント:質問&答え
<!--{$arrForm.reminder}-->
<!--{$arrForm.reminder_answer}-->
退会会員の再登録、時間制限の解除
(SC_Helper_Customer.phpカスタマイズ)
data\class\helper\SC_Helper_Customer.php
if (count($arrRet) > 0) {
// 会員である場合
if ($arrRet[0]['del_flg'] != '1') {
// 登録済み
return 1;
} else {
// 退会した会員である場合
$leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
$now_time = time();
$pass_time = $now_time - $leave_time;
// 退会から何時間-経過しているか判定する。
$limit_time = ENTRY_LIMIT_HOUR * 3600;
if($pass_time < $limit_time) {
// 再登録制限期間内削除ユーザー
return 2;
}
}
}
// 登録可能
return 0;
}
退会会員の再登録、時間制限の解除
(管理画面から行う方法)
「システム設定」 → 「パラメーター設定」 → 「ENTRY_LIMIT_HOUR 再入会制限時間 (単位: 時間)」
MYページ
ログイン処理:
http://www.☆.com/eccube/html/mypage/login.php
eccube-2.11.5\html\mypage\login.php
→
テンプレート
eccube-2.11.5\data\Smarty\templates\default\mypage\login.tpl
ロジック
eccube-2.11.5\data\class\pages\mypage\LC_Page_Mypage_Login.php (?)
ログアウト処理
MYページ 内の 「ログイン」ブロックに含まれる
eccube-2.11.5\data\Smarty\templates\default\frontparts\bloc\login.tpl
「ログイン」ブロックの編集:ポイント表示の削除
eccube-2.11.5\data\Smarty\templates\default\frontparts\bloc
ログイン後のページ:ポイント表示の削除
「現在の所持ポイントは」のような不要なメッセージを削除
eccube-2.11.5\data\Smarty\templates\default\mypage\navi.tpl
ログイン後のページ:購入履歴
eccube-2.11.5\data\Smarty\templates\default\mypage\index.tpl
会員登録内容変更 → 会員登録内容変更(入力ページ) → 会員登録内容変更(入力ページ)
変更自体は新規登録時の form_personal_input.tpl
確認ページは
eccube-2.11.5\data\Smarty\templates\default\mypage\change_confirm.tpl