ブログ名の設定は、まだ。 ネット社会の一粒の"地の塩"でありたいと思っています。

EC-CUBEの「お問い合わせ」を複製・カスタマイズして「ご相談ページ」を作ってみた。(その1)

2013年01月08日 · カテゴリ:EC-CUBEの話

唐突ですが、EC-CUBEという通販のオープンソースのカスタマイズの話です。
EC-CUBE初心者ですが、自分への備忘録と、自分のようにプログラムに詳しくない人向けに書いておきます。
(もちろん自己責任でお願いします)

EC-CUBEにはデフォルトで備わっている「お問い合わせ」のメールフォームがあります。
このPHPやテンプレートのファイル群を複版して、別のメールフォーム(PC用)を作成してみました。

お問い合わせのメールフォームをベースにしたのは、当然入力したデータをメールで飛ばすという仕組みが同じだからですが、
そのファイル群を流れの順に書くと

(1)ご相談入力ページのphpとテンプレート
(2)入力確認のphpとテンプレート
(3)ご相談完了ページのphpとテンプレート
(4)ご相談メール文のテンプレート

ですが、その他「拡張」というようなファイルがあります。

で、最初にやったほうがいいんじゃないの?と思ったのが、既存のお問い合わせページ用ファイルを別名保存し、その別名のまま(ソースに書かれたパスを修正して)いったんメールを飛ばしてみるといいんじゃないのってこと。
それだと、すべて別名保存ファイルなので既存ファイルを上書きしないだけ、私のような初心者には安全かと思います。
ただし、ファイルの複版とソースの修正をしてFTPでUPするだけでOKかというと、それだけでは動きません。
「ご相談入力ページ」と「ご相談送信完了ページ」は、PHPAdminを使ってデータベースの dtb_pagelayout に登録が必要です。

そこはちょっと(DBバックアップ取るとか、詳しい人に頼むとか)慎重にしないとリスクがあります。

作業手順としては、「ファイル群の複製」「ソースの初期修正」「DBに2つのページ登録」「とりあえずメールを飛ばしてみる」「相談フォームの項目の設定」「テンプレートのカスタマイズ」「メールテンプレートの登録とカスタマイズ」「最終確認(完成)」というステップです。

ちなみにEC-CUBEのバージョンは、2.12.0です。

さて、まずは「複製」です。
私はまず自分の作業用PCのデスクトップに「ec-cube」ホルダを作り、そこにFTPで必要なファイルを集めました。

下記10ファイルがそのすべてです。

ec-cube
┣data
┃ ┣class
┃ ┃ ┗pages
┃ ┃   ┗contact
┃ ┃     ┣LC_Page_Contact_Complete_Soudan.php (完了画面の設定)
┃ ┃     ┃ ※LC_Page_Contact_Complete.phpのコピー
┃ ┃     ┗LC_Page_Contact_Soudan.php (入力画面の設定)
┃ ┃       ※LC_Page_Contact.phpのコピー
┃ ┣class_extends
┃ ┃ ┗page_extends
┃ ┃   ┗contact
┃ ┃     ┣LC_Page_Contact_Complete_Soudan_Ex.php (完了画面の拡張)
┃ ┃     ┃ ※LC_Page_Contact_Complete_Ex.phpのコピー
┃ ┃     ┗LC_Page_Contact_Soudan_Ex.php (入力画面の拡張)
┃ ┃       ※LC_Page_Contact_Ex.phpのコピー
┃ ┗Smarty
┃   ┗templates
┃     ┗default(もしくは購入したテンプレート名)
┃       ┣contact
┃       ┃ ┣complete_soudan.tpl (完了画面のテンプレ)
┃       ┃ ┃ ※complete.tplのコピー
┃       ┃ ┣confirm_soudan.tpl (確認画面のテンプレ)
┃       ┃ ┃ ※confirm.tplのコピー
┃       ┃ ┗soudan.tpl (入力画面のテンプレ)
┃       ┃   ※index.tplのコピー
┃       ┗mail_templates
┃         ┗soudan_mail.tpl (メールの入力情報のテンプレ)
┃           ※mail.tplのコピー
┗html
  ┗contact
     ┣complete_soudan.php (完了画面のプログラム)
     ┃ ※complete.phpのコピー
     ┗soudan.php (入力・確認画面のプログラム)
       ※index.phpのコピー

デスクトップに作業用に作った「ec-cube」のホルダに、上記10ファイルを(FTPでサイトにアクセスするか、手元にバックアップがあればそこからコピーして)、サイトと同じ構造の各ホルダに入れます。
入れる時か入れたあと、ファイル名をすべて書き変えます。
私の場合は、集め終わったあと上記の太字の部分(_Sodanとか_soudanとかあると思いますが)にファイル名を変えました。

必要な「ファイル群の複製」が済んだら、次は「ソースの初期修正」です。
本格的な項目の書き換えは後回しで、まずは各ファイルのつなぎを書く感じです。

(1)まず、
html/contact/soudan.php をテキストエディタで開き、下記の2つの行を修正(赤字部分を追加)します。

require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Contact_Soudan_Ex.php';

$objPage = new LC_Page_Contact_Soudan_Ex();

(2)次に、同じホルダ内の
html/contact/complete_soudan.php をテキストエディタで開き、下記の2つの行を修正(赤字部分を追加)します。

require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Contact_Complete_Soudan_Ex.php';

$objPage = new LC_Page_Contact_Complete_Soudan_Ex();

(3)次に、
data/class_extends/page_extends/contact/LC_Page_Contact_Soudan_Ex.php
を開き、下記の2つの行を修正(赤字部分を追加)します。

require_once CLASS_REALDIR . 'pages/contact/LC_Page_Contact_Soudan.php';

class LC_Page_Contact_Soudan_Ex extends LC_Page_Contact_Soudan {

(4)次に同じホルダの、
data/class_extends/page_extends/contact/LC_Page_Contact_Complete_Soudan_Ex.php
を開き、下記の2つの行を修正(赤字部分を追加)します。

require_once CLASS_REALDIR . 'pages/contact/LC_Page_Contact_Complete_Soudan.php';

class LC_Page_Contact_Complete_Soudan_Ex extends LC_Page_Contact_Complete_Soudan {

(5)次に、
data/class/pages/contact/LC_Page_Contact_Soudan.php を修正します。

このファイルで質問項目や必須指定等を設定するのですが、いったん後回しして、とりあえず導通のために下記の修正だけ(赤字部分を書き替えor追加)します。

class LC_Page_Contact_Soudan extends LC_Page_Ex {

    function init() {
        parent::init();
        if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
            $this->tpl_title = 'ご相談のお申し込み';
        } else {
            $this->tpl_title = 'ご相談のお申し込み(入力ページ)';
        }

ほか、入力確認ページのテンプレートファイル名、

$this->tpl_mainpage = 'contact/confirm_soudan.tpl';

及び相談完了ページのテンプレートファイル名を書き変えます、

SC_Response_Ex::sendRedirect('complete_soudan.php');

です。

(6)そして、次に同じホルダにある
data/class/pages/contact/LC_Page_Contact_Complete_Soudan.phpを修正します。

class LC_Page_Contact_Complete_Soudan extends LC_Page_Ex {

の部分と、もう1つ、完了ページのテンプレートタイトル

    function init() {
        parent::init();
        $this->tpl_title = 'ご相談のお申し込み(完了ページ)';
        $this->tpl_mainno = 'contact';
    }

これで、いったん「ファイル群の複製」とPHPの「ソースの初期修正」が終わったので、FTPでそれぞれのDrにUPします。
名前だけ変えてまだソースを触っていないtplファイルもUPします。
その際、UPしたファイルのパーミッションに注意してください。複製前のファイルと同じにしておけばOKです。

次はPHPAdminを使って「DB(dtb_pagelayout)に2つのページ登録」です。(PHPAdminに慣れてない方はサーバ管理者にお願いするしかないでしょう。)

データベースのdtb_pagelayoutに「相談入力ページ」と「相談完了ページ」の2つのページをDB登録します。
※完了ページが既存のお問い合わせ画面と同じ(共用)であれば、完了ページは登録する必要はありません。
※DBはバックアップしてから作業を。自己責任でお願いします。

device_type_id: 10 ※10はPCページのことです
       page_id: ※使われていないID番号
     page_name: 相談(入力)
           url: contact/soudan.php
      filename: contact/soudan
    header_chk: 1
    footer_chk: 1
      edit_flg: 2
        author: NULL
   description: NULL
       keyword: NULL
    update_url: 
   create_date: now()
   update_date: now()

もう1つ、完了ページのDB登録です。

device_type_id: 10
       page_id: ※使われていないID番号
     page_name: 相談(完了)
           url: contact/complete_soudan.php
      filename: contact/complete_soudan
    header_chk: 1
    footer_chk: 1
      edit_flg: 2
        author: NULL
   description: NULL
       keyword: NULL
    update_url: 
   create_date: now()
   update_date: now()

これをDBに登録すれば、管理画面からカスタマイズもできるようになります。

さて、これでいったん入力ページ
http://(ドメイン)/contact/soudan.php
から適当に入力して、確認画面、完了画面、そしてメールが飛ぶことを確認します。

どうでしょうか?
「とりあえずメールを飛ばしてみる」はうまく行ったでしょうか。

うまくいったと仮定して、次は新しい項目の作成をします。

« 1つ古い記事:

1つ新しい記事: »

Leave a Reply

Trackback URL

記事テーマと関係ないとか、リンクがない場合(一方的TB)、あとアダルトサイトは申し訳ないですが承認しませんので予めご了解ください。またrel="nofollow"つけてるので、SEOのリンクジュースが目的のコメント、TBは残念ながら効果が無いと思います。予めご承知おきください。