Home > EC-CUBE Archive

EC-CUBE Archive

EC-CUBE 商品詳細ページにお問合せボタン

商品詳細ページにお問合せボタンを作り、そのボタンをクリックするとお問い合わせ内容の textarea にその商品名を挿入する方法。

EC-CUBE 開発コミュニティの 商品詳細ページからお問い合わせへ遷移するには のスレッドで ryo さんが答えていた方法。

管理画面の「デザイン管理」から「ページ詳細設定」で「商品詳細ページ」を編集。
その時の例は下のformを追加する感じ

<form method="post" action="<!–{$smarty.const.SITE_URL}–>contact/">
<input type="hidden" name="products_name" value="<!–{$arrProduct.name|escape}–>" />

<input type="submit" name="" value="この商品について問い合わせる" />
</form>

赤字の部分はSSLに飛ばすなら「$smarty.const.SSL_URL」に変更。
※ 既存のformタグの内側に挿入しないように注意。その場合はgetが無難?

それから、「data/Smarty/templates/contact/index.tpl」を下記のように編集。

 152行目あたり:
<textarea name="contents" cols="60" rows="20" class="area60" wrap="hard"
maxlength="<!–{$smarty.const.LTEXT_LEN}–>" style="<!–{$arrErr.contents|sfGetErrorColor}–>">
<!–{$smarty.post.products_name|escape}–><!–{$contents|escape}–>
</textarea>

赤字を追加。

これでOK ;-)

EC-CUBE 詳細ページ毎にキーワードを入れる

EC-CUBE 2.0.1

現段階では、[基本情報管理]→[SEO管理]の商品詳細ページ欄の[メタタグ:Description]や[メタタグ:Keywords]の欄に入力をすると、すべての詳細ページに同じ内容がはいってしまうので使えなかったが、EC-CUBE開発コミュニティのこのスレッドに解決策が投稿されていた。

/data/Smarty/templates/site_frame.tplの

<meta name="keywords" content="<!--{$arrPageLayout.keyword|escape}-->">

<meta name="keywords" content="<!–{$arrPageLayout.keyword|escape}–><!–{if $arrProduct.comment3}–>,<!–{$arrProduct.comment3|escape}–><!–{/if}–>">

に入れ替えることでキーワードが個別に表示されるようになった。
Descriptionはまだうまくいっていないようですが・・・。

ECC-CUBE カテゴリ一覧に説明文を入れる

データベース(postgresql)の、テーブル dtb_category にフィールドを1つ追加

フィールド(カラム)名:description   型:text

■修正するファイル

data/Smarty/templates/default/admin/products/category.tpl
data/Smarty/templates/default/list.tpl
data/class/pages/admin/products/LC_Page_Admin_Products_Category.php
data/class/pages/products/LC_Page_Products_List.php
shop/user_data/css/common.css

■data/Smarty/templates/default/admin/products/category.tpl

113行目あたり

<td width="428" valign="top">

<span class="red12"><!–{$arrErr.category_name}–></span>
●この行を変更 <input type="text" name="category_name" value="<!–{$arrForm.category_name|escape}–>" size="30" class="box30" maxlength="<!–{$smarty.const.STEXT_LEN}–>"/>
<input type="submit" name="button" value="登録"/><span class="red10"> (上限<!–{$smarty.const.STEXT_LEN}–>文字)</span>
<table width="428" border="0" cellspacing="0" cellpadding="0" summary=" ">
<tr><td height="15"></td></tr>

次のように変更

<td width="428" valign="top">

<span class="red12"><!–{$arrErr.category_name}–></span>
●この行を変更 <input type="text" name="category_name" value="<!–{$arrForm.category_name|escape}–>" size="30" class="box30" maxlength="<!–{$smarty.const.STEXT_LEN}–>"/><br/>
■この行を追加 <textarea name="description" cols=80 rows=10><!–{$arrForm.description|escape}–></textarea><br/>
<input type="submit" name="button" value="登録"/><span class="red10"> (上限<!–{$smarty.const.STEXT_LEN}–>文字)</span>
<table width="428" border="0" cellspacing="0" cellpadding="0" summary=" ">
<tr><td height="15"></td></tr>

■data/Smarty/templates/default/list.tpl

57行あたり

<input type="hidden" name="orderby" value="<!–{$orderby}–>" />
<input type="hidden" name="product_id" value="" />
<div id="listtitle"><h2><!–★タイトル★–><!–{$tpl_subtitle}–></h2></div>
■この行を追加 <div id="category_description"><!–{$arrSearch.description}–></div>
<!–検索条件ここから–>
<!–{if $tpl_subtitle == "検索結果"}–>
<ul class="pagecondarea">

■data/class/pages/admin/products/LC_Page_Admin_Products_Category.php

111行あたり

$oquery = new SC_Query();
$where = "category_id = ?";
$cat_name = $oquery->get("dtb_category", "category_name", $where, array($_POST['category_id']));
■この行を追加 $cat_desc = $oquery->get("dtb_category", "description", $where, array($_POST['category_id']));
// 入力項目にカテゴリ名を入力する。
$this->arrForm['category_name'] = $cat_name;
■この行を追加 $this->arrForm['description'] = $cat_desc;
// POSTデータを引き継ぐ
$this->arrForm['category_id'] = $_POST['category_id'];
break;

223行あたり

// 入力データを渡す。
$sqlval = $this->objFormParam->getHashArray();
■この行を追加 GC_Utils_Ex::gfPrintLog($sqlval['category_name']);
■この行を追加 GC_Utils_Ex::gfPrintLog($sqlval['description']);
$sqlval['create_date'] = "Now()";
$sqlval['update_date'] = "Now()";
$sqlval['creator_id'] = $_SESSION['member_id'];

254行あたり

$parent_category_id = '0';
}

●この行を変更 $col = "category_id, category_name, level, rank";
$where = "del_flg = 0 AND parent_category_id = ?";
$objQuery->setoption("ORDER BY rank DESC");
$arrRet = $objQuery->select($col, "dtb_category", $where, array($parent_category_id));

次のように変更

$parent_category_id = '0';
}

●この行を変更 $col = "category_id, category_name, description, level, rank";
$where = "del_flg = 0 AND parent_category_id = ?";
$objQuery->setoption("ORDER BY rank DESC");
$arrRet = $objQuery->select($col, "dtb_category", $where, array($parent_category_id));

264行あたり

/* パラメータ情報の初期化 */
function lfInitParam() {
$this->objFormParam->addParam("カテゴリ名", "category_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
■この行を追加 $this->objFormParam->addParam("カテゴリ説明", "description", STEXT_LEN, "KVa");
}

/* 入力内容のチェック */

■data/class/pages/products/LC_Page_Products_List.php

133行あたり

}else{
$arrCat = $conn->getOne("SELECT category_name FROM dtb_category WHERE category_id = ?", $arrCategory_id);
$arrSearch['category'] = $arrCat;
■この行を追加 $arrDesc = $conn->getOne("SELECT description FROM dtb_category WHERE category_id = ?", $arrCategory_id);
■この行を追加 $arrSearch['description'] = $arrDesc;
}

// 商品名検索条件

これは、EC-CUBE開発コミュニティの「カテゴリに説明を」 でktsさんの投稿で説明されている。

次に、カテゴリに説明を加えない場合には表示しないようにする設定をしておいた。

デザイン管理→ページ詳細設定→商品一覧ページ(data/Smarty/templates/default/list.tpl)

追加した行を if 文で表示・非表示にする

<!–{if $arrSearch.description != ""}–><!–●追加行●–>
<div id="category_description"><!–{$arrSearch.description}–></div>
<!–{/if}–><!–●追加行●–>

あとはCSSで体裁を整える。

EC-CUBE 受注メールの不具合

受注完了時に購入者と管理人に受注メールが届かないといけないのだが、EC-CUBEのデフォルト設定のままでは管理者に受注メールが届かない。

【解決方法】

基本情報管理 → パラメータ設定

MAIL_BACKENDの設定が "smtp" になっているのを "mail" に変更することで管理者にもメールが届くようになった。

これでだめだったらこちらにも詳しく書かれていますので参照してみてください。

http://blog.ec-orange.jp/2008/01/25/55/

商品登録時に関連商品が表示されなくなった

原因がわかり、対処ができた。

この現象はEC-CUBE 2.0.1で発生

【原因】

基本情報管理のパラメーター設定に何らかの変更を加えると、キャッシュにあるmtb_constants.phpよりRECOMMEND_PRODUCT_MAXが消えてしまうためということがEC-CUBE開発コミュニティサイトでわかった。

管理画面よりパラメータを変更すると関連商品が表示されなくなります。

Step1.

Webminの PostgreSQL データベースのmtb_constantsテーブルに下記内容を手動で追加

 フィールド名 : 値
id :            RECOMMEND_PRODUCT_MAX
name :      6
rank :        523
remarks :  関連商品の数

Step2.

管理画面にログインし、基本情報管理-パラメータ設定にてRECOMMEND_PRODUCT_MAXが追加されているのを確認。(一番下の行に追加されています)

そのまま、"この内容で登録する"をクリック。

この情報もEC-CUBE開発コミュニティサイトから

 【Ver.2.0.1】 おすすめ商品数に関するパラメータの不一致

これでもとどおり商品管理画面の関連商品が表示されるようになった。

EC-CUBE おすすめ商品の列を増やす

EC-CUBEでトップページなどにおすすめ商品を表示させる場合、デフォルトでは2列表示になっている。

これを3列ずつ表示させるには、

ブロック編集画面でオススメ商品を編集する

<!–{section name=cnt loop=$arrBestProducts step=2}–>

<!–{section name=cnt loop=$arrBestProducts step=3}–>

にする。(step=2をstep=3に変更)

2つめの商品ブロック <div class="recomendright">~</div>の recomendright を recomendleft に変更し、

1行目の

<!–{assign var=cnt2 value=`$smarty.section.cnt.iteration*$smarty.section.cnt.step-1` }–>

<!–{assign var=cnt2 value=`$smarty.section.cnt.iteration*$smarty.section.cnt.step-2` }–>

に変更。

<!–{assign var=price01 value=`$arrBestProducts[cnt].price01_min`}–>
<!–{assign var=price02 value=`$arrBestProducts[cnt].price02_min`}–>

<!–{assign var=price01 value=`$arrBestProducts[$cnt2].price01_min`}–>
<!–{assign var=price02 value=`$arrBestProducts[$cnt2].price02_min`}–>

に変更。([cnt]を[$cnt2]に)

この2つ目の商品ブロックをコピーして追加(1つ目の商品ブロックでもどっちでもいいけど)
<div class="recomendleft">~</div>の recomendleft を recomendright に変更し

<!–{assign var=cnt2 value=`$smarty.section.cnt.iteration*$smarty.section.cnt.step-2` }–>

<!–{assign var=cnt3 value=`$smarty.section.cnt.iteration*$smarty.section.cnt.step-1` }–>

に変更。(var=cnt2 を var=cnt3 に、step-2 を step-1 に)

<!–{assign var=price01 value=`$arrBestProducts[$cnt2].price01_min`}–>
<!–{assign var=price02 value=`$arrBestProducts[$cnt2].price02_min`}–>

<!–{assign var=price01 value=`$arrBestProducts[$cnt3].price01_min`}–>
<!–{assign var=price02 value=`$arrBestProducts[$cnt3].price02_min`}–>

に変更。([$cnt2] を [$cnt3] に)

これでおすすめ商品が3列に :-P

商品画像の登録

商品の画像を登録するときに指定されている大きさでないものを登録してしまいました。・・・でも大丈夫みたい。

メイン画像で使った260×260の大きさのものを詳細-サブ画像で使ったのですが、サブで指定されている200×200サイズにサムネイルされています。

500KBまでだと大丈夫なんでしょうかね?

商品管理の商品並び替え

商品の並び替えをしようとしてもできません。

疑問に思ったことは順位のところの番号って何の番号なんでしょうか?

全部同じ数字が入っていたり、11商品入っているところは11と12の数字しか入っていません 。

商品並び替え画面

EC-CUBE 2.0 インストールの注意

EC-CUBE 2.0 をインストールする際は

  1. 今まで以上にパーミッションの設定が必要
  2. PostgreSQL を使う場合、eccube_db というデータベースを UNICODE で作成しておかないといけない

パーミッションの設定はあまりにも多すぎる。なんとかならんもんかなぁ。

1回目のインストールで「EC-CUBEのコミュニティサイト」の書き込み と同じエラーが出てしまった。

で、eccube_db というデータベースを UNICODE で作成しておかないといけないということがわかった。

PostgreSQL 7.4 文書の第 20章 を参考にして、root以外でログインし

createdb -E UNICODE eccube_db

を実行してデータベースを作成してからインストールすることで無事インストールができた。

ヘッダー・フッターの編集

EC-CUBE 1.4.5

管理画面→デザイン管理→ヘッダー/フッター設定

この画面で編集が可能で、反映されるファイルは

html/user_data/include/header.tpl
html/user_data/include/footer.tpl

Home > EC-CUBE Archive

Return to page top