日本発のECオープンプラットフォーム、EC-CUBE 2.11.5 のカスタマイズメモですよ。

EC-CUBE は MySQL よりも PostgreSQL に最適化されているので、特別な理由がないかぎりデータベースは PostgreSQL を選択した方がいいですね。ベンチマークの数値以上にサクサク感がハンパないです。

最新バージョンの 2.12系はこの数カ月さんざん振り回されたので、「腐ってやがる… 早すぎたんだ」と割りきって 2.11系を選択するのも良いかもですね。ただ、2.11系はプラグインが使えません。プラグインといっても中身は PHP なので、その気になればどうとでもね。

旧バージョンはここ
【EC-CUBE 2.4.3】カスタマイズのメモ

納品書のPDF

「data/Smarty/templates/admin/pdf/nouhinsyo1.pdf」
という実体のある PDF データの中に、
「data/class/SC_Fpdf.php」
「data/pages/admin/order/LC_Page_Admin_Order_Pdf.php」
がテキストを挿入しているイメージです。

納品書のロゴ

ロゴ画像はここです。サイズを変更する場合は位置の変更も必要ですね。
「data/Smarty/templates/admin/pdf/logo.png」

納品書のテキスト

FPDF で生成されているので、 「data/class/SC_Fpdf.php」
「data/pages/admin/order/LC_Page_Admin_Order_Pdf.php」
を変更していきます。

納品書、その他

PDF 自体に書かれているテキストは直接変更していきます。
「data/Smarty/templates/admin/pdf/nouhinsyo1.pdf」

自動送信メール

管理画面から送信するメールのカスタマイズはここです。文字コードを「JIS」を「UTF-8」に変更したり、送信先の「○○様」の「様」を変更もこのあたり。
「data/class/SC_SendMail.php」
「data/class/helper/SC_Helper_Mail.php」

会員登録や購入時の入力項目

海外向けにカスタマイズを行う場合など、都道府県の選択項目をなくしたり入力桁数を変更する場合は以下です。

「data/class/helper/SC_Helper_Customer.php」
「data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php」
「data/class/pages/admin/basis/LC_Page_Admin_Basis.php」
「data/class/pages/shopping/LC_Page_Shopping.php」
「data/class/pages/mypage/LC_Page_Mypage.php」
「data/class/pages/contact/LC_Page_Contact.php」

これに加えて、
「data/Smarty/templates/テンプレート名」のテンプレートと
「data/Smarty/templates/admin」の管理画面のカスタマイズも忘れずに。

必須項目や文字数の制限

  • EXIST_CHECK:必須入力かどうか
  • SPTAB_CHECK:スペースとタブの判定
  • MAX_LENGTH_CHECK:最大文字数
  • MIN_LENGTH_CHECK:最小文字数

日本語入力のON/OFF

  • ime-mode:active:日本語入力モード
  • ime-mode:disabled:半角入力モード
  • ime-mode:inactive:半角入力モード(ユーザー側で日本語モードに切り替え可能)
  • ime-mode:auto:自動(設定を受け継ぐ)

全角/半角/英字の変換

  • K:半角カタカナを全角カタカナに変換
  • C:全角ひらがなを全角カタカナに変換
  • V:「K」と一緒に利用して、濁点付きの文字を一文字に変換
  • n:全角数字を半角数字に変換
  • a:全角数字を半角数字に変換

商品一覧/詳細ページの全角/半角

商品一覧/詳細ページは、たとえば「!」が「!」に自動変換されるなど、半角にしたくない場合はここをカスタマイズです。「KVa」を「KV」にしていきます。
「data/class/pages/admin/products/LC_Page_Admin_Products_Product.php」

ログアウトボタンの設置

デフォルトではマイページからログアウトできないので、この機能を追加します。

「data/class/pages/mypage/LC_Page_Mypage.php」

// 支払い方法の取得
$this->arrPayment = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
// 1ページあたりの件数
$this->dispNumber = SEARCH_PMAX;

//ログアウト
if ($_GET['mode'] == 'logout'){
	$objCustomer->EndSession();
	header("Location: index.php");
}

「data/Smarty/templates/default/mypage/navi.tpl」

<li><a href="index.php?mode=logout" class="<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->">ログアウト</a></li>

管理画面のパスワードを忘れてしまった場合

パスワードをチェックする「lfCheckError」をいったんコメントアウトします。

「data/class/pages/admin/LC_Page_Admin_Index.php」

switch ($this->getMode()) {
case 'login':
	//ログイン処理
	$this->lfInitParam($objFormParam);
	$objFormParam->setParam($_POST);
	//$this->arrErr = $this->lfCheckError($objFormParam);
	if (SC_Utils_Ex::isBlank($this->arrErr)) {
		$this->lfDoLogin($objFormParam->getValue('login_id'));
		SC_Response_Ex::sendRedirect(ADMIN_HOME_URLPATH);
	}else{
		SC_Utils_Ex::sfDispError(LOGIN_ERROR);
	}
	break;
	default:
	break;
}

テストサイトのURLから本番サイトのURLに変更

「data/config/config.php」のURLを変更します。

define('HTTP_URL', 'http://www.○○.com/');
define('HTTPS_URL', 'https://www.○○.com/');
define('ROOT_URLPATH', '/');

スマートフォン自動振り分けをしない

PC/スマホ/モバイルの振り分けをしない場合は、「data/class/SC_Display.php」のデバイスを判別する部分をコメントアウトします

public static function detectDevice($reset = FALSE) {
	if (is_null(SC_Display_Ex::$device) || $reset) {
		$nu = new Net_UserAgent_Mobile();
		$su = new SC_SmartphoneUserAgent_Ex();
//			if ($nu->isMobile()) {
//				SC_Display_Ex::$device = DEVICE_TYPE_MOBILE;
//			} elseif ($su->isSmartphone()) {
//				SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;
//			} else {
					SC_Display_Ex::$device = DEVICE_TYPE_PC;
//			}
	}
		return SC_Display_Ex::$device;
	}

商品詳細/商品一覧ページで、特定のページのみに情報を表示する

商品詳細ページで特定のページのみに情報を表示する

product_id で判別して表示します。

<!--{if $arrProduct.product_id == "○"}-->
<img src="<!--{$TPL_URLPATH}-->img/○○.jpg">
<!--{/if}-->

商品一覧ページで特定のページのみに情報を表示する

category_id で判別して表示します。

<!--{if $category_id == "○"}-->
<img src="<!--{$TPL_URLPATH}-->img/○○.jpg">
<!--{/if}-->

URLや画像の取得

絶対パスではなく EC-CUBE のタグを使った方が何かと便利なのです。

テンプレートのパス

<!--{$TPL_URLPATH}-->

トップページのパス

<!--{$smarty.const.TOP_URLPATH}-->

現在のページURLを取得する

<!--{$smarty.server.REQUEST_URI|escape}-->

商品一覧の順番(奇数偶数)で左右に振り分ける方法

奇数偶数を判別して「class=”right”」などを追加して、CSS でデザインを行います。

おすすめ商品

<!--{if $smarty.foreach.recommend_products.iteration % 2 === 0}--> right<!--{/if}-->

商品一覧

<!--{if $smarty.foreach.arrProducts.iteration % 2 === 0}--> right<!--{/if}-->

商品の画像サイズ変更

商品詳細/商品一覧は管理画面から設定できますが、おすすめ商品の画像サイズはテンプレートを直接変更します。

「data/Smarty/templates/テンプレート名/frontparts/bloc/recommend.tpl」

<img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrProduct.main_list_image|sfNoImageMainList|h}-->&amp;width=438&amp;height=233" alt="<!--{$arrProduct.name|h}-->" />

こちらの関連記事もあわせてどうぞ!