タグ: カスタマイズ

【EC-CUBE】お問い合わせフォームに項目追加

例として「お問い合わせ」のお客様情報入力欄に「会社名」欄を追加する

1)\data\class\pages\contact\LC_Page_Contact.php を修正。

  1. 「フォーム値変換用カラム」部分の「お名前」の前に会社名分を追加。 (Ver.2.3Rc1の場合、L79あたり)
    array( “column” => “cname01”, “convert” => “aKV” ),
  2. 「エラーチェック処理部」部分の「お名前」の前に会社名分を追加。 (Ver.2.3Rc1の場合、L188あたり)
    $objErr->doFunc(array(“会社名”, “cname01”, MTEXT_LEN), array(“SPTAB_CHECK” ,”MAX_LENGTH_CHECK”));

2)\data\Smarty\templates\default\contact\index.tpl を修正。 

会社名入力枠を「お名前」の前に追加する。 (Ver.2.3Rc1の場合、L37あたり)

<tr>
<th>会社名</th>
<td>
<input type=”text”
class=”box380″
name=”cname01″
value=”<!–{$cname01|default:$arrData.cname01|escape}–>”
maxlength=”<!–{$smarty.const.STEXT_LEN}–>”
style=”<!–{$arrErr.cname01|sfGetErrorColor}–>” /> 
</td>
</tr>

3)\data\Smarty\templates\default\contact\confirm.tpl

会社名表示枠を「お名前」の前に追加する。 (Ver.2.3Rc1の場合、L38あたり)

<tr>
<th>会社名</th>
<td><!–{$arrForm.cname01|escape}–></td>
</tr>

4)\data\Smarty\templates\default\mail_templates\contact_mail.tpl

会社名を「お名前」の前に追加。 (Ver.2.3Rc1の場合、L42あたり)

■会社名:<!–{$arrForm.cname01}–>

【EC-CUBE】SEO対策の続き。GOOGLE MAP用サイトマップ内のURLも変更。

EC-CUBEのサイト内URLをSEO用に静的HTML化した。で、今度は、GOOGLEサイトマップ用のXMLファイル内のリンクも同じように静的HTML化する。

※これは、自サイトの記事(https://bton.papalabs.net/?p=325)で、既に一覧や詳細ページなど全体的な静的HTML化の設定が出来ていることを前提とする。

/data/class/pages/LC_Page_Sitemap.php

を修正。

(Ver.2.3Rc1の場合)
L240

            $page = array(“url” => SITE_URL . sprintf(“%sproducts/list.php?category_id=%d”, $mobile, $result[$i][‘category_id’]));

↓↓↓下記のように変更。

            $page = array(“url” => SITE_URL . sprintf(“%sproducts/list%d.html”, $mobile, $result[$i][‘category_id’]));

L264

            $page = array(“url” => SITE_URL. sprintf(“%sproducts/detail.php?product_id=%d”, $mobile, $result[$i][‘product_id’]),
                          “update_date” => $result[$i][‘update_date’]);

↓↓↓下記のように変更。

            $page = array(“url” => SITE_URL. sprintf(“%sproducts/detail%d.html”, $mobile, $result[$i][‘product_id’]),
                          “update_date” => $result[$i][‘update_date’]);

【EC-CUBE】各種設定

基本的には、管理画面のシステム設定内、パラメータ設定で、値を変えればよい。

パラメータ設定で変わらないとき、該当するファイルは、

/data/mtb_constants_init.php
/data/cache/mtb_constants.php (キャッシュファイル)

を修正すればOK。さらに、phpMyAdminでDBの、mtb_constantsテーブルを探し、該当するフィールドを直接編集すればOK。

  1. メルマガの配信予約をしたいときは、この中の値、MELMAGA_BATCH_MODEをtrureに設定すると配信設定が日時予約画面に変わる。(cronが必要)
  2. 仮会員登録制にする場合は、CUSTOMER_CONFIRM_MAILをtrueに設定する。
  3. カスタマイズ中にエラーの原因を特定したいときは、DEBUG_MODEをtrueにすると、エラーメッセージが表示される。

【EC-CUBE】パンくずリストの実装

VER.2.3RC1の場合。

1)/data/class_extends/helper_extends/SC_Helper_DB_Ex.php の編集。

「class SC_Helper_DB_Ex extends SC_Helper_DB」の中にコードを仕込む。
37行目(”{“と”}”の間)に以下を追加。

 
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 .= ‘‘ . $CatName . ‘ > ‘;
}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 .= ‘‘ . $CatName . ‘ > ‘;
}
return $TopicPath;
}

2)/data/class/pages/products/LC_Page_Products_List.php の編集。 (L112に2行追加。)

        // タイトル編集
        $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; ←追加

        }

 3)/data/class/pages/products/LC_Page_Products_Detail.php の編集。 (L229に2行追加。)

        // サブタイトルを取得
        $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);

4)パンくずリスト用新規ブロックの追加。

デザイン管理→ブロック編集 で新規ブロックをつくり、下記コードを適当な名前で保存。(ブロック名:「パンくずリスト」、ファイル名:「topicpath」で保存。でも、分かれば、なんでもいい。)

<!–{if $tpl_topicpath != “”}–>
<a href=”<!–{$smarty.const.SITE_URL}–>index.php”>TopPage</a>
<!–{$tpl_topicpath}–>
<!–{$arrProduct.name|escape}–>
<!–{/if}–>

デザイン管理→レイアウト編集 にパンくずリストのブロックが出来ているので、パンくずリストを実装したいページ(一覧ページや詳細ページ)の該当箇所にパンくずリストのブロックを設定すればOK。

参考:http://www.gnnk.net/20080113050103/

注意! 「カテゴリの説明やビジュアルを追加する」とアタる!
下記のやり方で、LC_Page_Products_List_Ex.phpを使用する場合、こちらのパンくず実装を先にやるか、LC_Page_Products_List_Ex.phpで実装しないと、マージされないので注意!すること。
http://www.eccube-school.jp/products/detail43.html

http://www.bton.net46.net/?p=313 (←こっちのほうは、_EXを使ってないので、同じファイルを上書きすることになるから問題ない。でも、本来は、_EXを使ったほうがいいので、_EXのファイルのほうで、パンくずを実装するってほうがいいのかも。メモメモ。)