もくじ

01_まずはインストール

データベース作成時の注意点

正確性か速度のどちらを重視するかによって選択すべき文字コードが違うので、文字照合順序を適切に選択します。

  • 正確性:utf8_unicode_ci
  • 速度:utf8_general_ci

アップロード〜インストール

「data」と「html」を任意の場所にアップロードして、アクセス権の設定を行います。
そのフォルダだけではなく、配下のフォルダやファイルにも設定します。

  • data/install.php【666】
  • data/cache【777】
  • data/class【777】
  • data/Smarty【777】
  • data/logs【777】
  • data/download【777】
  • data/upload【777】
  • html/user_data【777】
  • html/cp【777】
  • html/upload【777】
  • html/install【777】

「html/define.php」の

/** HTMLディレクトリからのDATAディレクトリの相対パス */
/** DATA ディレクトリから HTML ディレクトリの相対パス */

を正しく設定した後、EC-CUBE のデータをアップロートしたディレクトリ「http://www.○○.com/install/」にアクセスして、インストールを進めます。
インストールディレクトリを後から変更する場合は「data/install.php」を書き換えます。

EC-CUBE のインストールは何かとエラーが起こるので、サーバ側でインストール出来る機能があると便利ですね。

02_インストール後の基本設定

テスト用に登録されている商品やカテゴリ、規格を削除

削除できないものは、子カテゴリから削除します。

郵便番号データベースを更新

「基本情報管理 > 郵便番号DB登録」から、郵便番号データベースを更新します。
途中でエラーが出ますが、100%になるまで何度も繰り返します。

SHOPマスタ登録

「基本情報管理 > SHOPマスタ登録」から登録。

特定商取引法登録

「基本情報管理 > 特定商取引法」から登録。

配送業者登録

「基本情報管理 > 配送設定」から登録。

支払方法設定

「基本情報管理 > 支払方法設定」から登録。

ポイント設定

「基本情報管理 > ポイント設定」から登録。

03_決済サービスの利用

決済モジュールの組み込み

EC-CUBEオーナーズストア」に登録します。「導入済みのEC-CUBEバージョン」の欄が「2.0系(2.0.1正式版以降)」になっていないと購入できないものがあるので必ずチェックを入れておきます。それから決済モジュールの購入を済ませます。EC-CUBEサイトURL を登録する場合は、一時的にアクセス認証を解除しておきます。
MYページの「登録内容確認・変更」のページ下にある「オーナーズストア認証キー」をコピーしておいて、それを EC-CUBE の管理画面のヘッダ部分にある「OWNERS STORE > 認証キー設定」に登録します。
「OWNERS STORE > 購入商品一覧」で「購入商品一覧を取得する」をクリックすると、先ほど購入した決済モジュールが表示されるので、インストールを行います。決済サービスへの申し込みは別途行う必要があります。

EC-CUBEペイメントの場合

決済モジュールの設定を行う前に、「html/pg_mulpay」というディレクトリを作成し、アクセス権を777に設定しておきます。
ショッピングカートの決済ページのデザインは、「data/downloads/module/mdl_pg_mulpay/templates/」に、画像データは「html/user_data/」にあります。

設定・再設定時にエラーが出る場合は「data/class_extends/page_extends/admin/order/」のアクセス権を777にすることと、「html/user_data/gmo_id.gif」「html/user_data/gmo_id_on.gif」を一度削除してみるとうまくいくかも。

EC-CUBE の管理画面で「カード決済状況変更機能」を使用する場合は、以下のファイルが上書き・新規作成されます。

上書きされるファイル
data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Edit_Ex.php
data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Ex.php
data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Mail_Ex.php
data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Pdf_Ex.php
data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Status_Ex.php
新規にコピーされるファイル
html/admin/order/pgMulpayCardStatus.php

また、「data/download/module/mdl_pg_mulpay/class/utils/LC_Mdl_PG_MULPAY_Export.php」のバグを修正しておきます(EC-CUBEペイメント決済モジュール ver.1.3 の場合)。

define('MDL_PG_MULPAY_ALTERTRAN_URL', 'https://pt01.mul-pay.jp/payment/AlterTran.idPass');
define('MDL_PG_MULPAY_CHANGETRAN_URL', 'https://pt01.mul-pay.jp/payment/ChangeTran.idPass');
define('MDL_PG_MULPAY_SEARCHTRADE_URL', 'https://pt01.mul-pay.jp/payment/SearchTrade.idPass');

を以下のように修正します。

define('MDL_PG_MULPAY_ALTERTRAN_URL', 'https://p01.mul-pay.jp/payment/AlterTran.idPass');
define('MDL_PG_MULPAY_CHANGETRAN_URL', 'https://p01.mul-pay.jp/payment/ChangeTran.idPass');
define('MDL_PG_MULPAY_SEARCHTRADE_URL', 'https://p01.mul-pay.jp/payment/SearchTrade.idPass');

04_デザインのカスタマイズ

Dreamweaver での注意点

ソースフォーマットの適用は行わないこと。PHP や Smarty が変な所で改行されてしまい、動作しなくなることがあります。

テンプレートのコピー

テンプレートをカスタマイズするために、まずはデフォルトのテンプレートセットをコピーします。
「デザイン管理 > テンプレート設定」からダウンロードして解凍後、フォルダ名を変更します。それを「○○.tar.gz」で圧縮して、「デザイン管理 > テンプレート追加」でアップロードします。

テンプレートについて

「data/Smaty/templates/テンプレート名/」がテンプレートセットの場所です。
画像やCSSの置き場所は、「html/user_data/packages/テンプレート名/」です。

通常は上記のディレクトリに FTP でアクセスして編集を行っていくのですが、テンプレートとして今後使うために取っておきたい場合や、バックアップを取っておくためには、「html/user_data/packages/テンプレート名/」の内容を「data/Smarty/templates/default/_packages/」にコピーしておきます。そうすることで、EC-CUBE の管理画面の「デザイン管理 > テンプレート設定」から完全なテンプレートセットのダウンロードが可能になります。

「デザイン管理 > テンプレート設定」からテンプレートを変更した場合に、トップページのレイアウトなどが崩れてしまっていることがありますが、これは「デザイン管理 > レイアウト設定」でブロックのレイアウトを設定し直すことで解決できると思います。

header.tpl と footer.tpl がうまく読み込まれない場合は、「デザイン管理 > ヘッダー・フッター設定」から登録すると読み込まれるかも。

データベースのバックアップ

全ての作業ポイントでは必ず「システム設定 > バックアップ管理」でバックアップを作成しておきます。
EC-CUBE の設定データは全てデータベースに保存されているので、データベースのバックアップがあれば、多くの設定をリストアすることが可能ということです。
EC-CUBE 上でのバックアップだけではなく、サーバ側の機能で自動バックアップやリストアが簡単に可能であればさらに安心ですね。

05_商品ページのカスタマイズ

商品の画像サイズを変更

「システム設定 > パラメータ設定」の、各パラメータ値を変更します。

  • LARGE_IMAGE_WIDTH
  • LARGE_IMAGE_HEIGHT
  • SMALL_IMAGE_WIDTH
  • SMALL_IMAGE_HEIGHT
  • NORMAL_IMAGE_WIDTH
  • NORMAL_IMAGE_HEIGHT
  • NORMAL_SUBIMAGE_WIDTH
  • NORMAL_SUBIMAGE_HEIGHT
  • LARGE_SUBIMAGE_WIDTH
  • LARGE_SUBIMAGE_HEIGHT
  • DISP_IMAGE_WIDTH
  • DISP_IMAGE_HEIGHT
  • OTHER_IMAGE1_WIDTH
  • OTHER_IMAGE1_HEIGHT

登録できる商品画像の数を増やす

デフォルトでは商品詳細ページに登録できるサブ画像が5点までなので、それを仮に上限10点に変更していきます。
まずは「システム設定 > パラメータ設定」の「PRODUCTSUB_MAX」を、10に変更します。

この作業の前に必ず、デフォルトで登録されている商品などを全て削除しておかないと「商品管理 > 商品マスタ」で商品が表示されないエラーが起こります。

次に phpMyAdmin でデータベースにアクセスします。
「dtb_products」テーブルの

  • sub_title6
  • sub_comment6
  • sub_image6
  • sub_large_image6

の後に、以下のフィールドを追加します。

  • sub_title7
  • sub_comment7
  • sub_image7
  • sub_large_image7
  • sub_title8
  • sub_comment8
  • sub_image8
  • sub_large_image8
  • sub_title9
  • sub_comment9
  • sub_image9
  • sub_large_image9
  • sub_title10
  • sub_comment10
  • sub_image10
  • sub_large_image10

そして「data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php」の

T1.sub_title6,
T1.sub_comment6,
T1.sub_image6,
T1.sub_large_image6,
sub_title5,sub_comment5,sub_image5,sub_large_image5,

の後にそれぞれ、10まで追加します。

これで「商品管理 > 商品登録」にサブ画像を10点まで登録できるようになります。ただし、「詳細-サブタイトル」の欄に何もテキストが入っていないと、画像ごと表示されないので注意が必要です。

商品名の全角表示

商品名[カラー名]と登録した場合に、商品名[カラー名]のように自動変換されてしまいます。

「data/class/pages/admin/products/LC_Page_Admin_Products_Product.php」の

// スポット商品
$arrConvList['name'] = "KVa";
$arrConvList['main_list_comment'] = "KVa";
$arrConvList['main_comment'] = "KVa";
$arrConvList['note'] = "KVa";
$arrConvList['price01'] = "n";
$arrConvList['price02'] = "n";
$arrConvList['stock'] = "n";
$arrConvList['sale_limit'] = "n";
$arrConvList['point_rate'] = "n";
$arrConvList['product_code'] = "KVna";
$arrConvList['comment1'] = "a";
$arrConvList['deliv_fee'] = "n";

を、
»PHP: mb_convert_kana – Manual
に沿って

// スポット商品
$arrConvList['name'] = "KV";
$arrConvList['main_list_comment'] = "KV";
$arrConvList['main_comment'] = "KV";
$arrConvList['note'] = "KVa";
$arrConvList['price01'] = "n";
$arrConvList['price02'] = "n";
$arrConvList['stock'] = "n";
$arrConvList['sale_limit'] = "n";
$arrConvList['point_rate'] = "n";
$arrConvList['product_code'] = "KVna";
$arrConvList['comment1'] = "a";
$arrConvList['deliv_fee'] = "n";>

と変更することで「商品名、一覧-メインコメント、詳細-メインコメント」で全角表示できるようになります。

在庫数の表示

»EC-CUBEの商品詳細ページに在庫数を表示する方法(別ウィンドウ表示編)「EC-CUBEの学校」
を参考に、
「html/products/stock.php」
「data/class_extends/page_extends/products/LC_Page_Products_Stock_Ex.php」
「data/class/pages/products/LC_Page_Products_Stock.php」
「data/Smarty/templates/テンプレート名/products/stock.tpl」
「html/user_data/packages/テンプレート名/window.css」
「data/Smarty/templates/テンプレート名/detail.tpl」
を追加・カスタマイズしていきます。

商品一覧ページの商品表示数

商品一覧ページの商品表示数は「システム設定 > パラメータ設定」の「PRODUCTS_LIST_MAX」ではなく、「設定 > マスタデータ管理」にある「mtb_product_list_max」を変更します。値だけではなく、ID に表示したい数を入力します。3つありますが、最小の表示件数が適用されるようなので他の2つは削除します。

06_マイページのカスタマイズ

マイページにログアウトボタンを追加する

「data/Smarty/templates/テンプレート名/mypage/navi.tpl」の、ログアウトボタンを追加したい場所に

<form name="login_form" id="login_form" method="post" action="<!--{$smarty.const.SSL_URL}-->frontparts/login_check.php" onSubmit="return fnCheckLogin('login_form')">
	<input type="hidden" name="mode" value="login" />
	<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
	<input type="hidden" name="url" value="<!--{$smarty.server.PHP_SELF|escape}-->" />
	<a href="<!--{$smarty.server.PHP_SELF|escape}-->" onClick="fnFormModeSubmit('login_form', 'logout', '', ''); return false;">ログアウト</a>
</form>

を追加します。次に、

「data/class/pages/mypage/LC_Page_MyPage」の

function process() {
}

の中に

// トランザクションIDの取得
$this->transactionid = $this->getToken();

を追加します。

07_納品書のカスタマイズ

ロゴデータの変更

納品書などのロゴデータは「data/pdf/logo.png」を変更します。
一見「html/user_data/packages/テンプレート名/img/pdf/logo.png」がソレっぽいのですが違います。
※EC-CUBE 2.4.3 で「html/user_data/packages/テンプレート名/img/pdf/logo.png」になったようです。

08_構成のカスタマイズ

カテゴリ(商品名のメニュー)に数を表示しない

カテゴリに登録した商品数に応じて「商品名(3)」のように数が表示されますが、それを削除します。

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

<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<a href="<!--{$smarty.const.LIST_P_HTML}--><!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>

の、以下の箇所を削除します。

(<!--{$arrTree[cnt].product_count|default:0}-->)

特定のページだけに画像を表示する

トップページのみ表示させたい場合は

<!--{if $smarty.server.PHP_SELF == "/index.php"}-->
表示させたい内容をここに入れる
<!--{else}--><!--{/if}-->

商品詳細ページだけに表示させたい場合は

<!--{if $smarty.server.PHP_SELF == "/products/detail.php"}-->
表示させたい内容をここに入れる
<!--{else}--><!--{/if}-->

カテゴリIDや商品IDで振り分ける方法です。
カテゴリIDが1か、商品IDが5の場合のみ表示させたい場合は以下のようにします。

<!--{if $category_id == "1"or $arrProduct.product_id == "5"}-->
表示させたい内容をここに入れる
<!--{/if}-->

09_メールテンプレートのカスタマイズ

メールテンプレートの作成

「システム設定 > マスタデータ管理」の「mtb_mail_template」を追加・変更し、「mtb_mail_tpl_path」でそれぞれのテンプレートのパスを設定します。その後、「基本設定管理 > メール設定」から内容を登録します。

メールのテンプレートを追加する

「システム設定 > マスタデータ管理」の「mtb_mail_tpl_path」でパスを指定し、「基本情報管理 > メール設定」から内容を設定します。

10_システムのカスタマイズ

属性のカスタマイズ

「システム設定 > マスタデータ管理」の「mtb_job」の属性を、業種に合わせた適切なものに変更します。

  • 会社員
  • 会社役員
  • 公務員
  • 自営業
  • 学生
  • 主婦
  • 無職
  • パート・アルバイト
  • その他

メルマガの種類

メルマガの種類を、デフォルトの「HTML、テキスト、希望しない」から「受け取る、受け取らない」に変更するためには、以下のテンプレートファイルを変更します。

「data/Smarty/templates/default/customer/edit.tpl」
「data/Smarty/templates/default/customer/confirm.tpl」
「data/Smarty/templates/テンプレート名/entry/confirm.tpl」
「data/Smarty/templates/テンプレート名/frontparts/form_personal_input.tpl」
「data/Smarty/templates/テンプレート名/mail_template/mailmagazine_temp.tpl」
「data/Smarty/templates/テンプレート名/mail_template/mailmagazine_cancel.tpl」
「data/Smarty/templates/テンプレート名/mail_template/mailmagazine_resist.tpl」
「data/Smarty/templates/テンプレート名/mobile/entry/set2.tpl」
「data/Smarty/templates/テンプレート名/mobile/magazine/cancel.tpl」
「data/Smarty/templates/テンプレート名/mobile/magazine/index.tpl」
「data/Smarty/templates/テンプレート名/mobile/magazine/regist.tpl」
「data/Smarty/templates/テンプレート名/mobile/mypage/set2.tpl」
「data/Smarty/templates/テンプレート名/mobile/mypage/change_confirm.tpl」

管理画面の「顧客管理」への反映は、カスタマイズしたテンプレートセットではなく、デフォルトのテンプレートセット内に置きます。

「data/Smarty/templates/default/admin/customer/edit.tpl」
「data/Smarty/templates/default/admin/customer/edit_confirm.tpl」

ちなみに「システム設定 > マスタデータ管理」の「mtb_mail_magazine_type」は、メルマガの種類を直接変更するためのものではなく、「メルマガ管理」の検索結果で「希望配信」に表示されるテキストです。

パスワードを忘れた時の質問

「システム設定 > マスタデータ管理」の「mtb_reminder」を変更します。

お問い合わせフォームの入力例

お問い合わせフォームの入力時に表示される、住所の入力例を変更します。

「システム設定 > パラメータ設定」の「SAMPLE_ADDRESS1、SAMPLE_ADDRESS2」をそれぞれ変更します。

商品一覧ページの表示件数を変更した場合、規格の表示がされない時の対処

「data/class/pages/products/LC_Page_Products_List.php」の

// 規格セレクトボックス設定
if($disp_num == 15) {
for($i = 0; $i < count($this->arrProducts); $i++) {
$this->lfMakeSelect($this->arrProducts[$i]['product_id'], $arrClassName, $arrClassCatName);

を、以下のように変更します。

// 規格セレクトボックス設定
if($disp_num == $this->disp_number) {
for($i = 0; $i < count($this->arrProducts); $i++) {
$this->lfMakeSelect($this->arrProducts[$i]['product_id'], $arrClassName, $arrClassCatName);

SEO対策の基本

「http://www.○○.com/products/detail.php?product_id=○○」のような動的 URL を、「http://www.○○.com/products/detail/○○」のような静的 URL に変更します。

「html/」の .htaccess に以下を追加します。

#mode_rewriteの設定
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^products/detail/([0-9]+)? products/detail.php?product_id=$1 [L]
RewriteRule ^products/list/([0-9]+)? products/list.php?category_id=$1 [L]
RewriteRule ^mobile/products/detail/([0-9]+)_([0-9]+)? mobile/products/detail.php?product_id=$1&page=$2 [L]
RewriteRule ^mobile/products/list/([0-9]+)? mobile/products/list.php?category_id=$1 [L]

次に「data/Smarty/template/テンプレート名/bloc/category.tpl」の

<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>

を次のように変更します。

<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)<a href="<!--{$smarty.const.LIST_P_HTML}--><!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>

そして、「システム設定 > パラメータ設定」の「DETAIL_P_HTML」

URL_DIR . "products/detail.php?product_id="

を以下のように変更します。

URL_DIR . "products/detail/"

次に「LIST_P_HTML」の

URL_DIR . "products/list-p"

を以下のように変更します。

URL_DIR . "products/list/"

»カスタマイズ:応用/動的ページの静的化 – EC-CUBE カスタマイズのまとめサイト|開発ノウハウwiki

カテゴリ内に登録商品が1つの場合、一覧ページではなく詳細ページにリンクさせる

サイドメニューのカテゴリをクリックした際に、そのカテゴリ内に商品が1つしか登録されていない場合に限り、商品一覧ページではなく商品詳細ページに直接リンクさせます。

「data/class/pages/products/LC_Page_Products_List.php」の

// 商品一覧の表示処理
$this->lfDispProductsList($arrCategory_id[0], $_GET['name'], $this->disp_number, $_POST['orderby']);

の後に以下を追加します。

if(count($this->arrProducts) == 1){
header("Location: http://www.URL.com/products/detail/" . $this->arrProducts[0]['product_id']);
}

»EC-CUBE 開発コミュニティサイト – フォーラム

カテゴリの階層を折りたたまない

「dara/Smarty/templates/テンプレート名/bloc/category.tpl」の

<!--{if $arrTree[cnt].display == 1}-->
<!--{/if}-->

をそれぞれ削除します。

バグの修正

dara/Smarty/templates/テンプレート名/shopping/nonmember_input.tpl」の、「配送先を指定」のあたりにあるタグに「<」が付いていないものがあるので修正します。

<tr>
<th colspan="2">
<!--{assign var=key value="deliv_check"}-->
<!--{$arrForm[$key].value|sfGetChecked:1}--> <id="deliv_label" />
<!--{$arrForm[$key].value|sfGetChecked:1}--> <id="deliv_label" />
<input type="checkbox" name="<!--{$key}-->" value="1" onclick="fnCheckInputDeliv();" <!--{$arrForm[$key].value|sfGetChecked:1}--> <id="deliv_label" />
<label for="deliv_label"><em>配送先を指定</em> ※上記に入力されたご住所と同一の場合は省略可能です。</label>
</th>
</tr>

以下のように修正します。

<tr>
<th colspan="2">
<!--{assign var=key value="deliv_check"}-->
<input type="checkbox" name="<!--{$key}-->" value="1" onclick="fnCheckInputDeliv();" ><!--{$arrForm[$key].value|sfGetChecked:1}-->
<label for="deliv_label"><em>配送先を指定</em> ※上記に入力されたご住所と同一の場合は省略可能です。</label>
</th>
</tr>

»EC-CUBE 開発コミュニティサイト - タグの一部が表示される

yuga.js

yuga.js のバージョンに合った jquery.js を読み込ませます。マイページのボタンの表示がおかしくなるので修正が必要です。if else文 になっているのを削除して「class="btn"」に変更します。※その他にもエラーが起こる箇所があるので注意が必要です。

パンくずリスト

こちらのサイトを参考に、いくつか修正を加えて行きます。
»EC-CUBE開発Wiki - [EC-CUBE]パンくずリスト設置

「data/class_extends/helper_extends/SC_Helper_DB_EX.php 」を以下に変更します。

<?php
require_once(CLASS_PATH . "helper/SC_Helper_DB.php");
 
/**
 * DB関連のヘルパークラス(拡張)
 *
 * LC_Helper_DB をカスタマイズする場合はこのクラスを編集する
**/
class SC_Helper_DB_Ex extends SC_Helper_DB {
 
	/**
	 *パンくずリスト表示機能追加
	 **/
	 function sfGetTopicPath($category_id) {
	     // 商品が属するカテゴリIDを縦に取得
	     $objQuery = new SC_Query();
	     $arrCatID = $this->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
	     $TopicPath = " > ";
 
	     // カテゴリー名称を取得
	     foreach($arrCatID as $key => $val){
	         $sql = "SELECT category_name FROM dtb_category WHERE category_id = ?";
	         $arrVal = array($val);
	         $CatName = $objQuery->getOne($sql, $arrVal);
	         if($val != $category_id){
	             $TopicPath .= '<a href="/products/list.php?category_id=' .$val . '">'. $CatName . '</a> >';
	         } else {
	             $TopicPath .= $CatName;
	         }
	     }
	     return $TopicPath;
	 }
 
	 /**
	 *パンくずリスト表示機能追加
	 **/
	 function sfGetTopicPath2($category_id) {
	     // 商品が属するカテゴリIDを縦に取得
	     $objQuery = new SC_Query();
	     $arrCatID = $this->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
	     $TopicPath = " > ";
	     // カテゴリー名称を取得
	     foreach($arrCatID as $key => $val){
	         $sql = "SELECT category_name FROM dtb_category WHERE category_id = ?";
	         $arrVal = array($val);
	         $CatName = $objQuery->getOne($sql, $arrVal);
	         $TopicPath .= '<a href="/products/list.php?category_id=' .$val . '">'. $CatName . '</a> >';
	     }
	     return $TopicPath;
	 }
}
?>

「data/class/pages/products/LC_Page_Products_List.php」に以下を追加します。

// タイトル編集
        $tpl_subtitle = "";
        if ($_GET['mode'] == 'search') {
            $tpl_subtitle = "検索結果";
        } elseif (empty($arrCategory_id[0])) {
            $tpl_subtitle = "全商品";
        } else {
            $arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
            $tpl_subtitle = $arrFirstCat['name'];
 
            // @パンくずリスト設置機能追加 
            $TopicPath = $objDb->sfGetTopicPath($arrCategory_id[0]);
            $this->tpl_topicpath = $TopicPath;
        }

「data/class/pages/products/LC_Page_Products_Detail.php」に以下を追加します。

// サブタイトルを取得
        $arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'], $status);
        $arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
        $this->tpl_subtitle = $arrFirstCat['name'];
 
        // @パンくずリスト表示機能追加
        $arrTopicPath = $objDb->sfGetTopicPath2($arrCategory_id[0]);
        $this->tpl_topicpath = $arrTopicPath;
 
        // 関連カテゴリを取得
        $this->arrRelativeCat = $objDb->sfGetMultiCatTree($tmp_id);

「templates/テンプレート名/site_main.tpl 」に以下を追加します。

<!--{* ▼HEADER *}-->
<!--{if $arrPageLayout.header_chk != 2}-->
<!--{include file= $header_tpl}-->
<!--{/if}-->
<!--{* ▲HEADER *}-->

<!--{* ▼パンくずリスト *}-->
<div id="bread-list">
<!--{if $smarty.server.PHP_SELF == "/index.php"}-->
<!--{else}-->
<a href="<!--{$smarty.const.SITE_URL}-->index.php">TopPage</a>
<!--{$tpl_topicpath}-->
<!--{$arrProduct.name|escape}-->

<!--{if $tpl_topicpath == ""}-->
> <!--{$tpl_title|escape}-->
<!--{/if}-->
<!--{/if}-->
</div>
<!--{* ▲パンくずリスト *}-->

ページタイトルの変更

「/data/Smarty/templates/テンプレート名/site_frame.tpl」の

<title><!--{$arrSiteInfo.shop_name|escape}-->/<!--{$tpl_title|escape}--></title>

を以下に変更します。

<!--{assign var=top value="`$smarty.const.URL_DIR`index.php"}-->
<!--{assign var=list value="`$smarty.const.URL_DIR`products/list.php"}-->
<!--{assign var=detail value="`$smarty.const.URL_DIR`products/detail.php"}-->
<!--{if $smarty.server.PHP_SELF==$top}-->
<title><!--{$arrSiteInfo.shop_name}--> | <!--{$arrPageLayout.description|escape}--></title>
<!--{elseif $smarty.server.PHP_SELF==$list}-->
<!--{if $tpl_subtitle != "全商品"}-->
<title><!--{$tpl_subtitle}--> | <!--{$arrSiteInfo.shop_name}--> <!--{$arrPageLayout.description|escape}--></title>
<!--{else}-->
<title><!--{$arrPageLayout.description|escape}--> | <!--{$arrSiteInfo.shop_name}--></title>
<!--{/if}-->
<!--{elseif $smarty.server.PHP_SELF==$detail}-->
<title><!--{$tpl_title|escape}--> | <!--{$tpl_subtitle}--> | <!--{$arrSiteInfo.shop_name}--> <!--{$arrPageLayout.description|escape}--></title>
<!--{else}-->
<title><!--{$tpl_title|escape}--> | <!--{$arrSiteInfo.shop_name}--> <!--{$arrPageLayout.description|escape}--></title>
<!--{/if}-->

»EC-CUBE 開発コミュニティサイト - フォーラム

ケータイのメールテンプレート

ケータイから購入した際に、発送完了メールが届いてしまったり、メールテンプレートで追加したあいさつ文や署名が追加されないなどのバグを修正します。

「data/class/pages/shopping/LC_Page_Shopping_Complete.php」の

age のプロセス(モバイル).

以下にある、

// 完了メール送信
if($order_id != "") {
$mailHelper->sfSendOrderMail($order_id, '●');
}

●を、ケータイの受注確認メールのテンプレートIDに変更します。

次に、「templates/テンプレート名/mobile/mail_templates/order_mail.tpl」の該当の箇所に

<!--{$tpl_header}-->
<!--{$tpl_footer}-->

をそれぞれ追加します。

»EC-CUBE 開発コミュニティサイト - フォーラム

ケータイサイトのURLを変更する

「html/mobile」を「html/m」に変更して、「data/install.php」を以下のように変更します。

define ('MOBILE_HTML_PATH', HTML_PATH . 'm/');
define ('MOBILE_SITE_URL', SITE_URL . 'm/');
define ('MOBILE_SSL_URL', SSL_URL . 'm/');
define ('MOBILE_URL_DIR', URL_DIR . 'm/');

サイトマップのURLも変更する必要があるので、「data/class/pages/LC_Page_Sitemap.php」の

$mobile = "";
        if ($isMobile) {
            $mobile = "mobile/";
        }

を以下のように変更します。

$mobile = "";
        if ($isMobile) {
            $mobile = "m/";
        }

商品詳細ページのメイン写真をクリックしたときに、正しく拡大写真が表示されるようにする

<!--★画像★-->
<a href="javascript:void(win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&amp;image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&amp;admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))"> <img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" /></a>

を以下のように変更します。

<!--★画像★-->
<a href="javascript:void(win01('<!--{$smarty.const.URL_DIR}-->products/detail_image.php?product_id=<!--{$arrProduct.product_id}-->&amp;image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&amp;admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))"> <img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" /></a>

商品詳細ページに YouTube の動画を埋め込めるようにする

「システム設定 > マスタデータ管理 > mtb_allowed_tag」に「object、/object、param、/param、embed、/embed」を追加します。

商品詳細ページのメインコメントに、自動的に </ br> タグが入らないようにする

「data/Smarty/templates/テンプレート名/detail.tpl」の

<div class="subtext">
<!--★詳細メインコメント★-->
<!--{$arrProduct.main_comment|nl2br}-->
</div>

を以下のように変更します。

<div class="subtext">
<!--★詳細メインコメント★-->
<!--{$arrProduct.main_comment}-->
</div>

ケータイサイトの場合は「data/Smarty/templates/テンプレート名/mobile/products/detail.tpl」の

<div class="subtext">
<!--★詳細メインコメント★-->
[emoji:76]<!--{$arrProduct.main_comment|nl2br}--><br>
</div>

を以下のように変更します。

<div class="subtext">
<!--★詳細メインコメント★-->
[emoji:76]<!--{$arrProduct.main_comment}--><br>
</div>

iPhone のメールアドレスをケータイのメールアドレスとして認める

「システム設定 > マスタデータ管理 > mtb_mobile_domain」に「@i.softbank.jp」を追加します。

「基本情報管理 > 特定商取引法」の文字数を上限200文字から1000文字に変更する

「data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php」の

<div class="subtext">
    /* パラメータ情報の初期化 */
    function lfInitParam() {
        $this->objFormParam->addParam("販売業者", "law_company", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("運営責任者", "law_manager", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("郵便番号1", "law_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
        $this->objFormParam->addParam("郵便番号2", "law_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
        $this->objFormParam->addParam("都道府県", "law_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
        $this->objFormParam->addParam("住所1", "law_addr01", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("住所2", "law_addr02", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("電話番号1", "law_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("電話番号2", "law_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("電話番号3", "law_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号1", "law_fax01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号2", "law_fax02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号3", "law_fax03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("メールアドレス", "law_email", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK"));
        $this->objFormParam->addParam("URL", "law_url", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "URL_CHECK"));
        $this->objFormParam->addParam("必要料金", "law_term01", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("注文方法", "law_term02", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("支払方法", "law_term03", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("支払期限", "law_term04", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("引き渡し時期", "law_term05", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("返品・交換について", "law_term06", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
    }
    	</div>

<div class="subtext">
    /* パラメータ情報の初期化 */
    function lfInitParam() {
        $this->objFormParam->addParam("販売業者", "law_company", STEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("運営責任者", "law_manager", STEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("郵便番号1", "law_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
        $this->objFormParam->addParam("郵便番号2", "law_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
        $this->objFormParam->addParam("都道府県", "law_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
        $this->objFormParam->addParam("住所1", "law_addr01", MTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("住所2", "law_addr02", MTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("電話番号1", "law_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("電話番号2", "law_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("電話番号3", "law_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号1", "law_fax01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号2", "law_fax02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("FAX番号3", "law_fax03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));
        $this->objFormParam->addParam("メールアドレス", "law_email", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK"));
        $this->objFormParam->addParam("URL", "law_url", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "URL_CHECK"));
        $this->objFormParam->addParam("必要料金", "law_term01", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("注文方法", "law_term02", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("支払方法", "law_term03", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("支払期限", "law_term04", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("引き渡し時期", "law_term05", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        $this->objFormParam->addParam("返品・交換について", "law_term06", MLTEXT_LEN, "KV", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
    }
    	</div>

に変更します。

次に、
「data/class/pages/admin/basis/LC_Page_Admin_Basis.php」の

<div class="subtext">
        // スポット商品
        $arrConvList['company_name'] = "KVa";
        $arrConvList['company_kana'] = "KVC";
        $arrConvList['shop_name'] = "KVa";
        $arrConvList['shop_kana'] = "KVC";
        $arrConvList['addr01'] = "KVa";
        $arrConvList['addr02'] = "KVa";
        $arrConvList['zip01'] = "n";
        $arrConvList['zip02'] = "n";
        $arrConvList['tel01'] = "n";
        $arrConvList['tel02'] = "n";
        $arrConvList['tel03'] = "n";
        $arrConvList['fax01'] = "n";
        $arrConvList['fax02'] = "n";
        $arrConvList['fax03'] = "n";
        $arrConvList['email01'] = "a";
        $arrConvList['email02'] = "a";
        $arrConvList['email03'] = "a";
        $arrConvList['email04'] = "a";
        $arrConvList['tax'] = "n";
        $arrConvList['free_rule'] = "n";
        $arrConvList['business_hour'] = "KVa";
        $arrConvList['good_traded'] = "";
        $arrConvList['message'] = "";
    	</div>

<div class="subtext"> // スポット商品
 $arrConvList['company_name'] = "KV";
 $arrConvList['company_kana'] = "KVC";
 $arrConvList['shop_name'] = "KV";
 $arrConvList['shop_kana'] = "KVC";
 $arrConvList['addr01'] = "KVa";
 $arrConvList['addr02'] = "KVa";
 $arrConvList['zip01'] = "n";
 $arrConvList['zip02'] = "n";
 $arrConvList['tel01'] = "n";
 $arrConvList['tel02'] = "n";
 $arrConvList['tel03'] = "n";
 $arrConvList['fax01'] = "n";
 $arrConvList['fax02'] = "n";
 $arrConvList['fax03'] = "n";
 $arrConvList['email01'] = "a";
 $arrConvList['email02'] = "a";
 $arrConvList['email03'] = "a";
 $arrConvList['email04'] = "a";
 $arrConvList['tax'] = "n";
 $arrConvList['free_rule'] = "n";
 $arrConvList['business_hour'] = "KV";
 $arrConvList['good_traded'] = "";
 $arrConvList['message'] = ""; </div>

に変更します。

»EC-CUBE 開発コミュニティサイト - 特定商取引法登録での文字数上限変更

ログイン時のみ表示するエリアを設定して、会員限定サイトにする

<!--{if $tpl_login}-->
<!--{else}-->
<!--{/if}-->

を使って、表示エリアを制限します。

»EC-CUBE 開発コミュニティサイト - ログインしないと価格がわからないショッピングサイト

メルマガを予約配信できるようにする

「システム設定 > パラメータ設定 > MELMAGA_BATCH_MODE」を「true」にします。そして、サーバの cron 設定で「html/admin/mail/sendmail.php」を30分毎に実行するように設定します。

対象商品のご購入で送料無料!の設定方法

「data/class/helper/SC_Helper_DB.php」の sfTotalConfirm 内に、以下を追加します。

// 商品コードに○○○○○が含まれていたら送料無料
for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "○○○○○"){
$abcount += 1;
}
}
if($abcount > 0)
{
$arrData['deliv_fee'] = 0;
}

»EC-CUBE 開発コミュニティサイト - 送料無料設定のカスタマイズについて

郵便番号DBを更新する

まずはこのページから「全国一括」の lzh ファイルをダウンロードして解凍します。
»読み仮名データの促音・拗音を小書きで表記するもの - 日本郵便

できた「KEN_ALL.CSV」の文字コードを「UTF-8」に変更して、「/data/downloads」に上書きします。次に、phpMyAdmin などで「mtb_zip テーブル」を空にします。そして最後に「基本情報管理 > 郵便番号DB登録」で100%にしたら完了です。

リストアを行った後などは郵便番号データがリセットされてしまうことがあるので、同じく更新が必要です。

»郵便番号のデータを最新のものにアップデートする「EC-CUBEの学校」

エラーメッセージの文言を変更する

「data/class/pages/error/LC_Page_Error.php」を変更します。

納品書に電話番号を記載する

「data/class/SC_Fpdf.php」の任意の場所に、以下を追加します。

$text = "TEL:".$this->arrDisp['deliv_tel01']."-".$this->arrDisp['deliv_tel02']."-".$this->arrDisp['deliv_tel03'];
$this->lfText(26,144,$text, 10); //お届け先TEL

その他、FPFD の情報はここにあるっぽいです
»FPDF(日本語マニュアル)

マイページのログイン画面のパスワード入力エリアを、10文字に制限する

「data/Smaty/templates/テンプレート名/mypagelogin.tpl」の

<p class="passwd">
         <!--{assign var=key value="mypage_login_pass"}-->
         <span class="attention"><!--{$arrErr[$key]}--></span>
         <img src="<!--{$TPL_DIR}-->img/login/password.gif"
              width="92" height="13" alt="パスワード" />
         &nbsp;<input type="password" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="40" class="box300" />
       </p>

を以下のように変更します。

<p class="passwd">
         <!--{assign var=key value="mypage_login_pass"}-->
         <span class="attention"><!--{$arrErr[$key]}--></span>
         <img src="<!--{$TPL_DIR}-->img/login/password.gif"
              width="92" height="13" alt="パスワード" />
         &nbsp;<input type="password" name="<!--{$key}-->" maxlength="10" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="40" class="box300" />
       </p>

ケータイ用の Google Analytics コードを埋め込む

こちらのサイトを参考に埋め込みます。
»Google Analytics 携帯用コードをEC-CUBEに埋め込む方法 | 株式会社サイバーウィル

他にも方法がありますが、いずれにしても

<?php...?>

を以下のように変更する必要があります。

<!--{php}-->...<!--{php}-->

お問い合わせメールのタイトルを変更する

「/data/class/pages/contact/LC_Page_Contact.php」を変更します。

受注管理の対応状況(ステータス)を追加する

「システム管理 > マスタデータ管理 > mtb_order_status」に追加します。それぞれの色は「システム管理 > マスタデータ管理 > mtb_order_status_color」で設定します。

また、「受注管理 > ステータス管理」で各ステータスに発送日が正しく表示されるように、

<!--{if $arrStatus[cnt].status eq 5}--><!--{$arrStatus[cnt].commit_date|sfDispDBDate:false}--><!--{else}-->未発送<!--{/if}-->

を以下のように変更します。

<!--{$arrStatus[cnt].commit_date|sfDispDBDate|default:"未発送"}-->

レビューが投稿されたらメールで通知する

こちらを参考にカスタマイズします。
»無謀ですが・・・知識0でXREAにEC-CUBE導入 *EC-CUBEカスタマイズ備忘録* 【テンプレート販売 Easy-CUBE】 - レビュー投稿をメールでお知らせ

規格ごとに価格が異なる場合、その価格をセレクトボックスに表示する

こちらを参考にカスタマイズします。
»EC-CUBE 開発コミュニティサイト - 規格で分けられた商品の価格表示
»EC-CUBE 開発コミュニティサイト - 規格で分けられた商品の価格・ポイント表示

商品ランキング表示する

こちらを参考にカスタマイズします。
»カスタマイズ:応用/ランキング表示 - EC-CUBE カスタマイズのまとめサイト|開発ノウハウwiki

受注管理からダウンロードできる CSV に「お届け日」を追加する

「コンテンツ管理 > CSV出力項目設定 > 高度な設定」で以下のSQL文を設定します。

o.order_id , 
o.message , 
o.order_name01 , 
o.order_name02 , 
o.order_kana01 , 
o.order_kana02 , 
o.order_email , 
o.order_tel01 , 
o.order_tel02 , 
o.order_tel03 , 
o.order_fax01 , 
o.order_fax02 , 
o.order_fax03 , 
o.order_zip01 , 
o.order_zip02 , 
o.order_pref , 
o.order_addr01 , 
o.order_addr02 , 
o.order_sex , 
o.order_birth , 
o.deliv_name01 , 
o.deliv_name02 , 
o.deliv_kana01 , 
o.deliv_kana02 , 
o.deliv_tel01 , 
o.deliv_tel02 , 
o.deliv_tel03 , 
o.deliv_fax01 , 
o.deliv_fax02 , 
o.deliv_fax03 , 
o.deliv_zip01 , 
o.deliv_zip02 , 
o.deliv_pref , 
o.deliv_addr01 , 
o.deliv_addr02 , 
o.subtotal , 
o.discount , 
o.deliv_fee , 
o.charge , 
o.use_point , 
o.add_point , 
o.birth_point , 
o.tax , 
o.total , 
o.payment_total , 
o.payment_method , 
o.deliv_id , 
o.deliv_time_id , 
o.deliv_time , 
o.deliv_no , 
o.note , 
o.status , 
o.create_date , 
o.update_date , 
o.deliv_date , 
od.order_id , 
od.product_name , 
od.product_code , 
od.price , 
od.quantity , 
od.point_rate , 
dt.deliv_id , 
dt.time_id , 
dt.deliv_time , 
d.name , 
d.service_name FROM dtb_order AS o 
LEFT JOIN dtb_order_detail AS od ON o.order_id = od.order_id 
LEFT JOIN dtb_deliv AS d ON o.deliv_id = d.deliv_id  
LEFT JOIN dtb_delivtime AS dt ON o.deliv_id = dt.deliv_id AND o.deliv_time_id = dt.time_id AND d.deliv_id = dt.deliv_id 
where o.del_flg = 0 and o.status=1

また、最後の

and o.status=1

を削除すると、新規受付のデータだけではなく、全受注データがダウンロードできます。

11_TIPS

テンプレートを変更したのに反映されない

いきなりページが表示されなくなった場合など、デフォルトテンプレートでは表示されているのにカスタマイズしたテンプレートではダメな場合などは、「data/Smaty/templates_c/テンプレート名/」に Smarty がコンパイルしたキャッシュデータが作成されているので、それを削除すると解決する場合があります。

規格2問題

規格1に「サイズ」を登録し、「規格2」は特に設定していない商品なのに、「規格2」の選択が表示されて購入できないという問題があります。どうやら EC-CUBE のバグのようです。

phpMyAdmin で以下の SQL文を実行します。

UPDATE dtb_products_class
SET classcategory_id2 = 0
WHERE classcategory_id2 IN (
SELECT classcategory_id
FROM dtb_classcategory
WHERE class_id = 0
AND rank = 0
AND creator_id = 0
)
;
UPDATE dtb_classcategory
SET classcategory_id = 0
WHERE class_id = 0
AND rank = 0
AND creator_id = 0
;

また、この問題は商品登録の時にいくつかのことに気を付ければ事前に防ぐことができます。商品登録後、規格登録の画面で必ず「規格1」を選択し、その後「表示する」をクリック。下の商品コード、在庫、価格などの内容が全てクリアされた状態で入力を行います。

お届け日を指定したにもかかわらず、管理画面では「1901年1月1日」になってしまうバグを修正する

こちらを参考に修正します。
»チェンジセット 18712 – EC-CUBE Trac
»EC-CUBE 開発コミュニティサイト - 2.4.3 お届け日指定(配達日指定)の表示

購入時に「その他お問い合わせ(備考)」記入された内容が、受注管理画面で表示されない不具合を修正する

「data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php」の

$this->objFormParam->addParam("受注日", "create_date");
$this->objFormParam->addParam("発送日", "commit_date");
$this->objFormParam->addParam("お届け日", "deliv_date");

を以下に変更します。

$this->objFormParam->addParam("受注日", "create_date");
$this->objFormParam->addParam("発送日", "commit_date");
$this->objFormParam->addParam("備考", "message");
$this->objFormParam->addParam("お届け日", "deliv_date");

次に「data/Smarty/templates/default/admin/order/edit.tpl」※ の
※決済モジュールを使用している場合は「data/downloads/module/mdl_pg_mulpay/templates/admin/order/edit_2.4.3.tpl」

<tr class="fs12n">
<td bgcolor="#f2f1ec" width="110">備考</td>
<td bgcolor="#ffffff" width="607" colspan="3"><!--{$arrForm.message|escape|nl2br}--></td>
</tr>

を以下に変更します。

<tr class="fs12n">
<td bgcolor="#f2f1ec" width="110">備考</td>
<td bgcolor="#ffffff" width="607" colspan="3"><!--{$arrForm.message.value|escape|nl2br}--></td></tr>

RSSの日付が正しく表示されない不具合を修正する

以下を参考に修正します。
»チェンジセット 18718 – EC-CUBE Trac

ケータイサイトでポイントが表示・使用できない不具合を修正する

以下を参考に修正します。
»チェンジセット 18731 – EC-CUBE Trac

受注管理一覧の「購入金額」の部分を、ポイントを差し引いた「お支払い合計」に変更する

以下を参考に修正します。
»チェンジセット 18729 – EC-CUBE Trac

「受注管理 > ステータス管理」にも反映させる場合は、「data/Smarty/templates/default/admin/order/status.tpl」を同じように変更します。

カテゴリが重複されて表示される場合の解消方法

何かの拍子に、カテゴリが重複されて表示されてしまうことがあります。その場合は「商品管理」の検索結果から、どれでもいいので「編集」を選択し、特に何も変更せずに登録を完了させます。これでカテゴリが再計算されるので重複が解消されます。

会員登録完了メールが、ショップ側にも Bcc されるが、ケータイアドレスを登録した時にしか Bcc されない

パソコンメールアドレスを登録した場合にも Bcc されるように修正します。
「data/class/pages/entry/LC_Page_Entry.php」の

''									// 宛先
, $subject							// サブジェクト
, $toCustomerMail					// 本文
, $CONF["email03"]					// 配送元アドレス
, $CONF["shop_name"]				// 配送元 名前
, $CONF["email03"]					// reply_to
, $CONF["email04"]					// return_path
, $CONF["email04"]					//  Errors_to

を以下のように変更します。

''									// 宛先
, $subject							// サブジェクト
, $toCustomerMail					// 本文
, $CONF["email03"]					// 配送元アドレス
, $CONF["shop_name"]				// 配送元 名前
, $CONF["email03"]					// reply_to
, $CONF["email04"]					// return_path
, $CONF["email04"]					//  Errors_to
, $CONF["email01"]	//  Bcc

受注管理の受注履歴編集にて在庫を編集した際、マイナスの在庫が登録できてしまう不具合を修正する

以下を参考に修正します。
»チェンジセット 18714 – EC-CUBE Trac

購入制限が正常に動作しない不具合を修正する

以下を参考に修正します。
»チェンジセット 18705 – EC-CUBE Trac

メルマガの差出人を、会社名ではなくショップ名に変更する

「data/class/pages/admin/mail/LC_Page_Admin_Mail_Sendmail.php」の

$objSite->data["company_name"]

を以下に変更します。

$objSite->data["shop_name"]

12_EC-CUBE のカスタマイズ情報サイト

最後までお読みいただきありがとうございます!よろしければフォローお願いします!

もしお役に立てる情報がありましたら、そのお気持ちを Bitcoin や PayPal で送金していただけると、とても嬉しく思います!

他にも、Amazonのほしい物リストからお選びいただくこともできます。

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

      【EC-CUBE 2.11.5】カスタマイズのメモ

      日本発のECオープンプラットフォーム、EC-CUBE 2.11.5 のカスタマイズメモですよ。 EC-CUBE は MySQL よりも PostgreSQL に最適化されているので、特別な理由がない…

      【ネットショップ】1クリックで荷物お問い合わせを可能にする方法

      ネットショップを運営していて、商品を発送した後に「発送完了メール」を送るのですが、そこで商品の発送状況をお客様に知っていただけるように、伝票番号と荷物お問い合わせを行うための URL を記載する場合…

      オリジナルのギフトカードを発行する方法

      ギフトカードとは、つまりプラスチックカード型の商品券のことです。例えば、コンビニや家電量販店で売っている iTunesカードがそうですね。購入後に自分のアカウントにチャージして使うことができます。 …

      未来のアパレルブランドと未来のネットショップ

      キャラクターをみんなでかわいいと言って遊んでいた。それは着ぐるみで、中に人が入っていることはわかっているけれど、キャラクターという体(てい)で受け入れていた。 それがある日、その着ぐるみからガチのチ…

      【独習PHP】02_配列

      「独習PHP」を元に、要約メモしておきたいと思います。 配列 仕切りのある入れ物のこと。ひとつの変数に対してひとつの値を持つものをスカラー変数といい、配列のように複数の値を持つことができる入れ物のこ…