<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www28.atwiki.jp/lucier/">
    <title>EC-CUBE開発Wiki</title>
    <link>http://www28.atwiki.jp/lucier/</link>
    <description>EC-CUBE開発Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-09-19T18:20:27+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/11.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/24.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/56.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/55.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/54.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/26.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/32.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/53.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/36.html" />
                <rdf:li rdf:resource="http://www28.atwiki.jp/lucier/pages/37.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/11.html">
    <title>プラグイン/コメント</title>
    <link>http://www28.atwiki.jp/lucier/pages/11.html</link>
    <description>
      * コメントプラグイン
@wikiのwikiモードでは
 #comment()
と入力することでコメントフォームを簡単に作成することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_60_ja.html


-----
たとえば、#comment() と入力すると以下のように表示されます。

- r  -- r  (2011-09-19 18:20:27)
#comment    </description>
    <dc:date>2011-09-19T18:20:27+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/24.html">
    <title>EC-CUBE開発メモ一覧</title>
    <link>http://www28.atwiki.jp/lucier/pages/24.html</link>
    <description>
      **EC-CUBE
-[[[EC-CUBE]おすすめ商品の列を増やす]]
-[[[EC-CUBE]商品詳細ページのtitleタグ変更(SEO対策)]]
-[[[EC-CUBE]ポイント付与率一括変更方法]]
-[[[EC-CUBE]メルマガ配信時のfrom_name変更方法]]
-[[[EC-CUBE]詳細ページ毎にキーワードを入れる]]
-[[[EC-CUBE]ヘッダー・フッターの編集]]
-[[[EC-CUBE]背景色の変更]]
-[[[EC-CUBE]デザインカスタマイズ]]
-[[[EC-CUBE]環境変数系の定数定義ファイル]]
-[[[EC-CUBE]管理画面で注意]]
-[[[EC-CUBE]郵便番号データの入れ替え]]
-[[[EC-CUBE]CSVファイルから商品データを一括登録]]
-[[[EC-CUBE]商品送料・送料カスタマイズのスレッド]]
-[[[EC-CUBE]ブロックの編集とか追加]]
-[[[EC-CUBE]QRコード埋め込み(編集中)]]
-[[[EC-CUBE]MySQL の遅さをサブクエリの改善とコードの一部改良で手間暇かけずに解決する]]
-[[[EC-CUBE]帳票の右上ロゴを変更したい]]
-[[[EC-CUBE]商品詳細ページで在庫数を別ウィンドウで表示する]]
-[[[EC-CUBE]お問い合わせメールを管理画面で確認できるようにする]]
-[[[EC-CUBE]お問い合わせメールを管理画面から返信できるようにする]]
-[[[EC-CUBE]ログイン後に見た商品の履歴を表示する]]
-[[[EC-CUBE]売上集計をリアルタイムで行うとタイムアウトする]]
-[[[EC-CUBE]売上集計の職業別集計・会員別集計がシステムエラーで動かない]]
-[[[EC-CUBE]パンくずリスト設置]]
-[[[EC-CUBE]送料カスタマイズのための準備]]
-[[[EC-CUBE]都道府県別・重量別に送料設定]]
-[[[EC-CUBE]ユーザーを追加する]]
-[[[EC-CUBE]人気ランキングを表示する]]
-[[[EC-CUBE]カレンダーのカスタマイズ]]
-[[[EC-CUBE]お気に入り機能追加]]
-[[[EC-CUBE]IE6で帳票（PDF）が開けない]]
-[[[EC-CUBE]処理の流れ]]
----
**EC-CUBE モバイル
-[[[EC-CUBE]モバイルへの注文受付メールに送料やらを載せる]]
-[[[EC-CUBE]モバイルでもポイント利用注文]]
-[[[EC-CUBE]携帯docomoのデフォルトのリンク表示]]
-[[[EC-CUBE]モバイルご利用ガイドの編集方法]]

----
**ちょこっとメモ
-[[ちょこっとメモ]]
----
**mysql
-[[[mysql]コマンドプロンプトからMySQLサーバーにアクセス]]
----
**web
-[[[web]iPhoneのユーザーエージェント]]
----
**リンク
-[[UTF-8 TeraTerm Pto with TTSSHの使い方&gt;&gt;http://hp.brs.nihon-u.ac.jp/~momose/UTF8/index.html]]
----    </description>
    <dc:date>2009-06-01T12:46:34+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/56.html">
    <title>[EC-CUBE]処理の流れ</title>
    <link>http://www28.atwiki.jp/lucier/pages/56.html</link>
    <description>
      **リクエストを受け取ってから画面に表示されるまでの流れをメモ。

「当サイトについて」ページにアクセスした場合。
 http://xxxx.com/about/index.php
 ↓
 eccube/html/about/index.php
 ↓
 [OUT]
 eccube/data/class_extends/page_extends/abouts/LC_Page_Abouts_Ex.php
     ｜
    [extends]
    eccube/data/class/pages/abouts/LC_Page_Abouts.php
     ｜   ｜
     ｜  init()で使用するテンプレートやtitleをセット
     ｜   ｜
     ｜  process()で
     ｜    ・レイアウト取得
     ｜    ・テンプレ用のデータ取得
     ｜    ・テンプレへデータをセット
     ｜    ・テンプレの表示
     ｜   ｜
     ｜  destroy()
     ｜
    [extends]
    eccube/data/class/pages/LC_Page.php

aboutのindex.php。基本となる形。

 require_once(&quot;../require.php&quot;);
 require_once(CLASS_EX_PATH . &quot;page_extends/abouts/LC_Page_Abouts_Ex.php&quot;);
 $objPage = new LC_Page_Abouts_Ex();
 register_shutdown_function(array($objPage, &quot;destroy&quot;));
 $objPage-&gt;init();
 $objPage-&gt;process();

aboutのinit()メソッド

 function init() {
    parent::init();
    $this-&gt;tpl_mainpage = &#039;abouts/index.tpl&#039;;
    $this-&gt;tpl_page_category = &#039;abouts&#039;;
    $this-&gt;tpl_title = &#039;当サイトについて&#039;;
 }

aboutのprocess()メソッド
 function process() {
    $objView = new SC_SiteView();
    // レイアウトデザインを取得
    $layout = new SC_Helper_PageLayout_Ex();
    $layout-&gt;sfGetPageLayout($this, false, DEF_LAYOUT);
    $objView-&gt;assignobj($this);
    $objView-&gt;display(SITE_FRAME);
 }

assignobj()でテンプレにデータをセットし、display()で表示する。

ちなみにキャンペーンと絡む場合はdisplay()を使わず

$objCampaignSess-&gt;pageView($this-&gt;objView);

で分岐からdisplay()する。    </description>
    <dc:date>2009-06-01T12:46:11+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/55.html">
    <title>[MySQL]大量データを格納したテーブルにはインデックスを。</title>
    <link>http://www28.atwiki.jp/lucier/pages/55.html</link>
    <description>
      郵便番号テーブル（mtb_zip）のデータ件数は約12万8000件。
これをまともにselectしたりすると、アブナイ。

そんなときはindexをはろう。
indexは本でいうところの索引。
これがあるかないかで検索スピードの差は歴然。

**そもそもインデックスって？

通常、MySQLでは、selectコマンドを実行した場合、
1レコード目から最終レコードまで、シーケンシャルに検索を行っていく。
データが大量になってくると検索速度の問題が生じる。
そこで出てくるのがインデックス。
インデックスを作成すると検索速度は劇的に改善される。
ただし、MySQLでは1000件以下のデータの場合はインデックスを作成しないほうが
速いとされている。

インデックスとは先ほども記載したとおり、
本の索引のようなもの。

索引語はアイウエオ順、あるいは、アルファベット順に並べられていて、
各々の索引語には、その索引語が登場するページ数（位置情報）が示されています。
読者はその位置情報を頼りに、ページを捲って、
目的のキーワードのある部分を読むことができるようになるという訳です。

逆に、索引がない場合、
1ページ目から順番に目的のキーワードを見つけるために本を読んでいくことの煩わしさを考えれば、
データベースにおいても、シーケンシャルに読んでいくことがいかに非効率であるかがわかりますね。


最も単純なものは、各レコードの先頭の一文字だけを用いたインデックス。
例えば、アルファベットだけで構成されているレコードの場合、
先頭の文字がa～zまでの26のグループに分割されます。

ここで、検索語keyで検索を行った場合、
先頭文字がkであるグループを検索しに行くだけでいいので、
シーケンシャルな検索に較べて、検索速度は圧倒的に速くなります。
仮に、レコード件数が10万件あったとして、そのうち、
先頭がkで始まるレコードが4,000件ならば、
単純計算で検索速度は25倍速くなるということになります。

実際には、先頭1文字ではなく、先頭5文字とか先頭10文字のインデックスを作成しておき、
B-tree（B木）と呼ばれる左右均等なツリー構造にデータを格納しておきます。

**インデックスの作成と削除

 create index インデックス名 on テーブル名 (フィールド名);

とする方法と、tableを作成する際に、同時に

 create table テーブル名 (index インデックス名 (フィールド名));

とする方法があります。
同様に、alterコマンドを使って、

 alter table テーブル名 add index インデックス名 (フィールド名);

としても構いません。
create tableとalter tableを使用する場合は、インデックス名を省略することができます。
その場合、インデックス名はインデックスを作成するフィールド名と同じになります。
ちなみに、インデックス化できるフィールドは必ず必須フィールド（not null）でなければなりません。
また、単にフィールド名のみを入力すると、レコードの全てをインデックス化しますが、先頭何文字かまでをインデックス化したいならば、フィールド名(数字)のように指定します。
例えば、bib_tbテーブルのtitleフィールドのレコードを先頭5文字目までをインデックス化したいならば、

 create index title_index on bib_tb (title(5));

とします（インデックス名はtitle_index）。


今回はmtb_zipテーブルに対し、
zipcodeを必須に変更し、
そのあとzipcodeの3桁目までをインデックス化してインデックスを作成。

 create index zip_index on mtb_zip (zipcode(3));

作成したインデックスを確認するには、showコマンドを使います。


**全文インデックスについて（日本語未対応）
　ちょっと寄り道します。
　さて、インデックスを使った検索が可能となるのは、基本的に、完全一致のselect文です。
　このほか、あいまい検索（部分一致）のlike演算子を使った場合、前方一致（keyword%）であれば問題ないのですが、中央一致（%keyword%）や後方一致（%keyword）の場合は、インデックスを使用することができません。
　これは、レコードの前方から一文字ずつをインデックス化しているためです。
　しかし、実際の検索では、完全一致や前方一致で検索を行うことは稀であり、むしろ、レコード内のどこかに特定のキーワードを含むような検索を行うことの方が多いでしょう。
　そういった場合のために、MySQLでは、全文インデックスをサポートしています。

日本語を扱うことはできませんのでご注意下さい。

　また、全文インデックスはnot nullであるvarchar型かtext型のフィールドにしか適用できません。
　基本構文は以下の通りです。
　通常のindexを作成する場合とほとんど変わりありません。

create fulltext index インデックス名 on テーブル名 (フィールド名);

create table テーブル名 (fulltext インデックス名 (フィールド名));

alter table テーブル名 add fulltext インデックス名 (フィールド名);

　やはり、create tableとalter tableでは、インデックス名を省略できます。

　全文インデックスの検索方法は、通常の検索や通常のインデックスを用いた際とは異なります。
　基本構文は以下の通りです。

select フィールド名 from テーブル名 where match (フィールド名) against (&#039;検索語&#039;);

　したがって、title中にjapanを含むレコードを検索する場合、

select * from bib_tb where match (title) against (&#039;japan&#039;);

となります。
　ちなみに、全文検索の場合、基本的に、適合度順出力を行います（詳しくはこちら）。

　MySQLで日本語全文検索を行うためには、まず、形態素解析やN-gramによって、文字列をワードごとに分割して、スペースで区切り、さらに、16進数文字に変換したりして、あたかも日本語ではないかのように装う必要があります。
　ということを、無理矢理やっちゃったエライ方もいらっしゃいます。    </description>
    <dc:date>2009-05-28T12:17:54+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/54.html">
    <title>覚書</title>
    <link>http://www28.atwiki.jp/lucier/pages/54.html</link>
    <description>
      忘れて大変なことになったから
覚書。。。


TOPのレイアウト変更のときとか
Smartyのテンプレート変数割り当てのときに設定する設定先のファイル

 /html/eccube_super/data/class/SC_View.php

Line94あたりから・・・

        // テンプレート変数を割り当て
        $this-&gt;assign(&quot;TPL_DIR&quot;, TPL_DIR);
        // ヘッダとフッタを割り当て
        $header_tpl = USER_PATH . USER_PACKAGE_DIR . TEMPLATE_NAME . &quot;/&quot; . &quot;header.tpl&quot;;
        $footer_tpl = USER_PATH . USER_PACKAGE_DIR . TEMPLATE_NAME . &quot;/&quot; . &quot;footer.tpl&quot;;
        // @2009.05.21 追加
        $topimage_tpl = USER_PATH . USER_PACKAGE_DIR . TEMPLATE_NAME . &quot;/&quot; . &quot;bloc/topimage.tpl&quot;;
        // ユーザー作成のテンプレートが無ければ, 指定テンプレートを割り当て
        if (!$this-&gt;_smarty-&gt;template_exists($header_tpl)) {
            $header_tpl = TEMPLATE_DIR . &quot;header.tpl&quot;;
        }
        if (!$this-&gt;_smarty-&gt;template_exists($footer_tpl)) {
            $footer_tpl = TEMPLATE_DIR . &quot;footer.tpl&quot;;
        }
        $this-&gt;assign(&quot;header_tpl&quot;, $header_tpl);
        $this-&gt;assign(&quot;footer_tpl&quot;, $footer_tpl);
        $this-&gt;assign(&quot;topimage_tpl&quot;, $topimage_tpl);
    }    </description>
    <dc:date>2009-05-27T18:26:02+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/26.html">
    <title>[EC-CUBE]CSVファイルから商品データを一括登録</title>
    <link>http://www28.atwiki.jp/lucier/pages/26.html</link>
    <description>
      管理画面からは商品情報を1点づつしかアップできないが、
CSVファイルを使用すれば複数の商品を一括登録できる。

１．商品画像の準備とサーバへのアップロード
CSVファイルを作成した時に一番迷うのが、画像の項目があること。しかも必須・・・
下記ディレクトリへ、&amp;bold(){先に画像をアップ}して、そのファイル名を記載する。

 /html/upload/save_image/
　
※おそらくパスがサーバにより異なる。
各サーバのインストールディレクトリ内の、「upload」ディレクトリ内、「save_image」ディレクトリ

２．CSVファイルを作成
管理画面へアクセスし、「商品管理」＞「商品登録CSV」のページへアクセス。
このページに載っている「登録情報」の項目を元に、CSVファイルを作成する。
このとき、&amp;bold(){CSVファイルの文字コードを、「UTF-8」にする。}
ExcelからCSVを出力した場合は、UTF-8ではないので、文字コードの変換ができるテキストエディタで、一度開いたものを、UTF-8で保存し直す。

３．管理画面からアップロード
上記で作成したファイルを、２の画面からアップロードする。
アップができたかどうかは、商品マスタのページで確認する。    </description>
    <dc:date>2009-05-27T09:33:59+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/32.html">
    <title>[EC-CUBE]MySQL の遅さをサブクエリの改善とコードの一部改良で手間暇かけずに解決する</title>
    <link>http://www28.atwiki.jp/lucier/pages/32.html</link>
    <description>
      2.4.0 以降は下記の変更は不要
http://svn.ec-cube.net/open_trac/ticket/436

EC-CUBEでMySQLが遅いらしい。
最近では、PHP 関係で有名なアシアルさんのブログ等でも述べられていました。

ECオープンソースのEC CUBEを調査してみました : アシアルブログ
http://blog.asial.co.jp/540

MySQLモードでの一覧の表示が 39.67s から 1.37s 程度まで早くなりました。

改善方法についてですが、 SC_DB_DBFactory_MYSQL.php#viewToSubQuery の変更を行い、
SQL にて改善を図ったうえで、 LC_Page_Products_List.php の内部で商品一覧部分の
クエリ発行でかなり無駄になっている部分を改善。
機能テストについては商品を 1000 件程度、一商品につき、規格を2つ。
カテゴリについては3階層程度までもぐったものを1カテゴリにつき20商品程度にて振り分けている。

SQL変換部分の改善
  data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
の#viewToSubQuery()の部分の改修を行いました。
この部分は PostgreSQL モードではビューへの参照となっている部分をすべてサブクエリとして発行するコードです。

なぜそのようなことを行っているかというと EC-CUBE が当初想定していた
MySQL のバージョンにて 4.x 以前はビュー機能がなかったため（5.x 以降は搭載されました）。ただ、この部分での変換サブクエリでかなり無駄があるため、そのへんをスッキリさせました。

以下が変更部分です。 商品一覧の対象となる vw_products_allclass の value 部分を以下の SQL に変更して下さい。

  (SELECT
                    pr.product_id
                    ,pl.product_code_min
                    ,pl.product_code_max
                    ,pl.price01_min
                    ,pl.price01_max
                    ,pl.price02_min
                    ,pl.price02_max
                    ,pl.stock_min
                    ,pl.stock_max
                    ,pl.stock_unlimited_min
                    ,pl.stock_unlimited_max
                    ,pr.del_flg
                    ,pr.status
                    ,pr.name
                    ,pr.comment1
                    ,pr.comment2
                    ,pr.comment3
                    ,pr.main_list_comment
                    ,pr.main_image
                    ,pr.main_list_image
                    ,pr.product_flag
                    ,pr.deliv_date_id
                    ,pr.sale_limit
                    ,pr.point_rate
                    ,pr.sale_unlimited
                    ,pr.create_date
                    ,pr.deliv_fee
                    ,pc.rank
                    ,cc.rank AS category_rank
                    ,cc.category_id
                FROM
                    (((SELECT
                        product_id as product_id_sub
                        ,MIN(product_code) AS product_code_min
                        ,MAX(product_code) AS product_code_max
                        ,MIN(price01) AS price01_min
                        ,MAX(price01) AS price01_max
                        ,MIN(price02) AS price02_min
                        ,MAX(price02) AS price02_max
                        ,MIN(stock) AS stock_min
                        ,MAX(stock) AS stock_max
                        ,MIN(stock_unlimited) AS stock_unlimited_min
                        ,MAX(stock_unlimited) AS stock_unlimited_max
                    FROM dtb_products_class GROUP BY product_id
                ) AS pl
                    LEFT JOIN dtb_products AS pr ON pl.product_id_sub = pr.product_id)   LEFT JOIN dtb_product_categories AS pc ON pr.product_id = pc.product_id) LEFT JOIN dtb_category AS cc ON pc.category_id = cc.category_id) 

この SQL の改善によって弊社環境では、さきほどあげたテストデータでデフォルトの 39.67s から 4.09s 程度まで改善されました。また SHOW STATUS で確認したところ、問い合わせ数は 1/3 程度になりました。

-商品一覧部分の変更
商品一覧部分のコードを改善します。規格の取得をデフォルトでは商品一件ごとに全部とってきていたのですが、これを一括に取得するという方法に変更しています。

  http://systemfriend.co.jp/files/public/blog/takahashi/LC_Page_Products_List.phps

.phps を .php にリネームして下さい。また公式のリビジョン 17506 のものを対象に行っていますので、バージョン等違う方はそれにあわせてください。    </description>
    <dc:date>2009-05-26T17:39:48+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/53.html">
    <title>[EC-CUBE]IE6で帳票（PDF）が開けない</title>
    <link>http://www28.atwiki.jp/lucier/pages/53.html</link>
    <description>
      EC-CUBE2系ではIE6で帳票が開けない。
原因は2段階で開く小窓のせいらしい。

1系では1度目に開く小窓にPDFが出力されていたので
使い勝手は悪いけど、ちゃんとブラウザで確認できたらしいです。

ブラウザをIE以外にするとか、
ファイルを保存するようにさせるとかって方法はありますが、
シェアを考えるとまだまだIE6ユーザーは多い。

BtoCをつくるなら
ユーザビリティをまず優先・・・


ってことで、1系と同じように
小窓を1回だけ開いてそこにPDFを出力させるように強制変更・・・
/html/eccube/data/class/SC_Fpdf.php
#highlight(linenumber,php){{
    function createPdf() {
        // PDFをブラウザに送信
ob_clean();
        if($this-&gt;pdf_download == 1) {
          $filename = &quot;nouhinsyo-No&quot;.$this-&gt;arrData[&#039;order_id&#039;].&quot;.pdf&quot;;
        } else {
          //$filename = &quot;nouhinsyo.pdf&quot;;
          $this-&gt;pdf-&gt;Output();
        }
        $this-&gt;pdf-&gt;Output($this-&gt;sjis_conv($filename), D);
        // 入力してPDFファイルを閉じる
        $this-&gt;pdf-&gt;Close();
    }
}}

で、このままだとブラウザ表示はできても
ダウンロードができない。。。orz

/data/Smarty/templates/default/admin/order/pdf_input.tpl
を下記の様に変更。
#highlight(linenumber,php){{
function lfPopwinSubmit(formName) {
  if(document[formName].download.value == 0) {
    win02(&#039;about:blank&#039;,&#039;pdf&#039;,&#039;1000&#039;,&#039;900&#039;);
    document[formName].target = &quot;pdf&quot;;
  }
  else {
    document[formName].target = &quot;_self&quot;;
  }
  document[formName].submit();
  return false;
}
}}

とりあえずこれで表示もダウンロードもできるようになったけど、
ダウンロードを選択して作成ボタンを押下してポップアップされた
小窓でファイルを保存しないで「開く」を押すと。。。。

&amp;ref(error.gif)
なんとかならなぃかな。。。コレ。    </description>
    <dc:date>2009-05-25T17:49:50+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/36.html">
    <title>[EC-CUBE]お問い合わせメールを管理画面で確認できるようにする</title>
    <link>http://www28.atwiki.jp/lucier/pages/36.html</link>
    <description>
      [EC-CUBE]お問い合わせメールを管理画面で確認できるようにする

※超大変だった。コレ。
　サイトに載っててる通りにやってもうまくいかないので、注意。

カスタマイズ結果はこんな感じに。

&amp;ref(otoiawase.JPG)
&amp;ref(otoiawase2.JPG)
----


1.テーブルを追加

お問い合わせを保存するテーブルを追加する。

テーブル名:dtb_contact

以下のSQLを発行し、テーブルをCREATEする。
mysql用。PostgreSQLだったら、create_date timstamp のところを create_date timestamp without time zone,
に変えてね
#highlight(linenumber){{
CREATE TABLE dtb_contact (
    contact_id serial NOT NULL,
    name text,
    name_f text,
    zip01 text,
    zip02 text,
    pref integer,
    addr01 text,
    tel01 text,
    tel02 text,
    tel03 text,
    email text,
    message text,
    create_date timestamp ,
    del_flg integer DEFAULT 0,
    customer_id integer,
    status integer DEFAULT 0
);
}}

作成したテーブルに対して一意性制約を加える。

 alter table dtb_contact add constraint dtb_contact_contact_id_key unique (contact_id);

----

2.INSERT文の作成。
お問い合わせのページのクラスを編集してINSERTのための処理を追記する。

  /data/class/pages/contact/LC_Page_Contact.php

以下のメソッドを追加。

#highlight(linenumber,php){{
// ------------  データベースへ格納 ------------
function lfRegisterContactData(){
    $sqlval = array();
    $objQuery = new SC_Query();
        
    $sqlval[&#039;name&#039;]        = $this-&gt;arrForm[&#039;name01&#039;];
    $sqlval[&#039;name_f&#039;]      = $this-&gt;arrForm[&#039;name02&#039;];
    $sqlval[&#039;email&#039;]       = $this-&gt;arrForm[&#039;email&#039;];
    $sqlval[&#039;zip01&#039;]       = $this-&gt;arrForm[&#039;zip01&#039;];
    $sqlval[&#039;zip02&#039;]       = $this-&gt;arrForm[&#039;zip02&#039;];
    $sqlval[&#039;pref&#039;]        = $this-&gt;arrForm[&#039;pref&#039;];
    $sqlval[&#039;addr01&#039;]      = $this-&gt;arrForm[&#039;addr01&#039;];
    $sqlval[&#039;tel01&#039;]       = $this-&gt;arrForm[&#039;tel01&#039;];
    $sqlval[&#039;tel02&#039;]       = $this-&gt;arrForm[&#039;tel02&#039;];
    $sqlval[&#039;tel03&#039;]       = $this-&gt;arrForm[&#039;tel03&#039;];
    $sqlval[&#039;message&#039;]     = $this-&gt;arrForm[&#039;contents&#039;];
    $sqlval[&#039;create_date&#039;] = &#039;Now()&#039;;
    if(isset($this-&gt;arrData[&#039;customer_id&#039;]) &amp;&amp; !empty($this-&gt;arrData[&#039;customer_id&#039;])){
        $sqlval[&#039;customer_id&#039;] = $this-&gt;arrData[&#039;customer_id&#039;];
    }
    $objQuery-&gt;insert(&quot;dtb_contact&quot;, $sqlval);
}
}}

complete時に上記メソッドを呼び出す。(122行目あたり)

#highlight(linenumber,php){{
case &#039;complete&#039;:
    $this-&gt;arrForm = $_POST;
    $this-&gt;arrForm[&#039;email&#039;] = strtolower($_POST[&#039;email&#039;]);
    $this-&gt;arrForm = $this-&gt;lfConvertParam($this-&gt;arrForm,$arrConvertColumn);
    $this-&gt;arrErr = $this-&gt;lfErrorCheck($this-&gt;arrForm);
    $this-&gt;lfRegisterContactData();    //追加
if(!$this-&gt;arrErr) {
}}

ここまででDBへの登録が可能になる。

----

3.お問い合わせ内容の表示
以下の4ファイルを新規作成する。
※ただし、4ファイルとも同じディレクトリにあるedit.php(.tpl)をコピーして作成すること。

 /html/admin/customer/contact.php
 /data/class_extends/page_extends/admin/customer/LC_Page_Admin_Customer_Contact_Ex.php
 /data/class/pages/admin/customer/LC_Page_Admin_Customer_Contact.php
 /data/Smarty/templates/default/admin/customer/contact.tpl


contact.php
LC_Page_Admin_Customer_Edit_Ex となっている箇所を LC_Page_Admin_Customer_Contact_Ex に変更します。

#highlight(linenumber,php){{
&lt;?php

require_once(&quot;../../require.php&quot;);
require_once(CLASS_EX_PATH . &quot;page_extends/admin/customer/LC_Page_Admin_Customer_Contact_Ex.php&quot;);

$objPage = new LC_Page_Admin_Customer_Contact_Ex();
register_shutdown_function(array($objPage, &quot;destroy&quot;));
$objPage-&gt;init();
$objPage-&gt;process();
?&gt;
}}

LC_Page_Admin_Customer_Contact_Ex.php
このファイルも、Customer_Edit　となっているところを　Customer_Contact　に変更します。

#highlight(linenumber,php){{
&lt;?php
require_once(CLASS_PATH . &quot;pages/admin/customer/LC_Page_Admin_Customer_Contact.php&quot;);

class LC_Page_Admin_Customer_Contact_Ex extends LC_Page_Admin_Customer_Contact {

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}
?&gt;
}}

LC_Page_Admin_Customer_Contact.php
このファイルはすべて書き直し。

#highlight(linenumber,php){{
&lt;?php
require_once(CLASS_PATH . &quot;pages/LC_Page.php&quot;);

class LC_Page_Admin_Customer_Contact extends LC_Page {

    function init() {
        parent::init();
        $this-&gt;tpl_mainpage = &#039;customer/contact.tpl&#039;;
        $this-&gt;tpl_subnavi = &#039;customer/subnavi.tpl&#039;;
        $this-&gt;tpl_mainno = &#039;customer&#039;;
        $this-&gt;tpl_subno = &#039;contact&#039;;
        $this-&gt;tpl_pager = TEMPLATE_DIR . &#039;admin/pager.tpl&#039;;
        $this-&gt;tpl_subtitle = &#039;お問い合わせ管理&#039;;

        $masterData = new SC_DB_MasterData_Ex();
        $this-&gt;arrSex = $masterData-&gt;getMasterData(&quot;mtb_sex&quot;);
        $this-&gt;arrPageMax = $masterData-&gt;getMasterData(&quot;mtb_page_max&quot;);
   }

   /**
    * Page のプロセス.
    *
    * @return void
    */

    function process() {
        // 認証可否の判定
        $objSess = new SC_Session();
        SC_Utils_Ex::sfIsSuccess($objSess);

        // モードチェック
        if(!isset($_POST[&#039;mode&#039;])) {
            $_POST[&#039;mode&#039;] = &quot;&quot;;
        } elseif($_POST[&#039;mode&#039;] == &#039;delete&#039;) {
            if(SC_Utils_Ex::sfIsInt($_POST[&#039;contact_id&#039;])) {
                $objQuery = new SC_Query();
                $where = &quot;contact_id = ?&quot;;
                $sqlval[&#039;del_flg&#039;] = &#039;1&#039;;
                $objQuery-&gt;update(&quot;dtb_contact&quot;, $sqlval, $where, array($_POST[&#039;contact_id&#039;]));
            }
        }

        // 表示順の指定
        $order = &quot;create_date DESC&quot;;
        // 読み込む列とテーブルの指定
        $col = &quot;*&quot;;
        $from = &quot;dtb_contact&quot;;
        $where = &quot;del_flg = 0&quot;;
        $objQuery = new SC_Query();
        // 行数の取得
        $linemax = $objQuery-&gt;count($from, $where);
        $this-&gt;tpl_linemax = $linemax;    // 何件が該当しました。表示用

        // ページ送り用
        if(is_numeric($_POST[&#039;search_page_max&#039;])) {
            $page_max = $_POST[&#039;search_page_max&#039;];
        } else {
            $page_max = SEARCH_PMAX;
        }

        // ページ送りの取得
        $this-&gt;arrHidden[&#039;search_pageno&#039;] =
            isset($_POST[&#039;search_pageno&#039;]) ? $_POST[&#039;search_pageno&#039;] : &quot;&quot;;
        $objNavi = new SC_PageNavi($this-&gt;arrHidden[&#039;search_pageno&#039;],
                                   $linemax, $page_max,
                                   &quot;fnNaviSearchPage&quot;, NAVI_PMAX);
        $startno = $objNavi-&gt;start_row;
        $this-&gt;arrPagenavi = $objNavi-&gt;arrPagenavi;

        // 取得範囲の指定(開始行番号、行数のセット)
        $objQuery-&gt;setlimitoffset($page_max, $startno);
        // 表示順序
        $objQuery-&gt;setorder($order);
        // 検索結果の取得
        $this-&gt;arrResults = $objQuery-&gt;select($col, $from, $where);

        $objView = new SC_AdminView();
        $objView-&gt;assignobj($this);
        $objView-&gt;display(MAIN_FRAME);
    }
}
?&gt;
}}

contact.tpl
表示用テンプレ。これも丸ごと書き換える。

#highlight(linenumber,html){{
&lt;!--★★メインコンテンツ★★--&gt;
&lt;table width=&quot;878&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr valign=&quot;top&quot;&gt;
        &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/navi_bg.gif&quot; height=&quot;443&quot;&gt;
            &lt;!-- サブナビ --&gt;
            &lt;!--{include file=$tpl_subnavi}--&gt;
        &lt;/td&gt;
        &lt;td class=&quot;mainbg&quot;&gt;
            &lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
            &lt;!--メインエリア--&gt;
                &lt;tr&gt;
                    &lt;td align=&quot;center&quot;&gt;
&lt;!--★★メインコンテンツ★★--&gt;                        

&lt;!--{if count($arrErr) == 0 }--&gt;

&lt;!--★★検索結果一覧★★--&gt;
&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&lt;!--{$smarty.server.PHP_SELF|escape}--&gt;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;search&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;contact_id&quot; value=&quot;&quot;&gt;        
&lt;!--{foreach key=key item=item from=$arrHidden}--&gt;
&lt;input type=&quot;hidden&quot; name=&quot;&lt;!--{$key}--&gt;&quot; value=&quot;&lt;!--{$item|escape}--&gt;&quot;&gt;
&lt;!--{/foreach}--&gt;
&lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/search_line.jpg&quot; width=&quot;737&quot; height=&quot;12&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr bgcolor=&quot;cbcbcb&quot;&gt;
        &lt;td&gt;
            &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/search_left.gif&quot; width=&quot;19&quot; height=&quot;22&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                    &lt;td&gt;
                        &lt;!--検索結果--&gt;
                        &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                            &lt;tr&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_top.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_top_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_top.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_middle.gif&quot; width=&quot;22&quot; height=&quot;12&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td bgcolor=&quot;#393a48&quot; class=&quot;white10&quot;&gt;検索結果一覧　&lt;span class=&quot;reselt&quot;&gt;&lt;!--検索結果数--&gt;&lt;!--{$tpl_linemax}--&gt;件&lt;/span&gt;&amp;nbsp;が該当しました。&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;22&quot; height=&quot;8&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_bottom.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_bottom_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_bottom.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                        &lt;/table&gt;
                        &lt;!--検索結果--&gt;
                    &lt;/td&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;8&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/td&gt;
        &lt;td align=&quot;right&quot;&gt;
            &lt;!--{include file=$tpl_pager}--&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;&lt;td bgcolor=&quot;cbcbcb&quot; colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr&gt;
        &lt;td bgcolor=&quot;#f0f0f0&quot; align=&quot;center&quot;&gt;
            &lt;!--{if count($arrResults) &gt; 0}--&gt;        
            &lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;tr&gt;&lt;td height=&quot;12&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td bgcolor=&quot;#cccccc&quot;&gt;
                        &lt;!--検索結果表示テーブル--&gt;
                        &lt;table class=&quot;fs12&quot; width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; summary=&quot; &quot; bgcolor=&quot;#cccccc&quot;&gt;
                            &lt;tr align=&quot;center&quot; bgcolor=&quot;#636469&quot; STYLE=&quot;color:#ffffff;&quot;&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;状況&lt;/td&gt;
                                &lt;td&gt;名前&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;内容&lt;/td&gt;
                                &lt;td&gt;メールアドレス&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;受信日時&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;住所&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;操作&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr align=&quot;center&quot; bgcolor=&quot;#636469&quot; STYLE=&quot;color:#ffffff;&quot;&gt;
                                &lt;td&gt;会員ID&lt;/td&gt;
                                &lt;td&gt;TEL&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;!--{foreach from=$arrResults key=k item=v}--&gt;
                            &lt;tr bgcolor=&quot;#ffffff&quot;&gt;
                                &lt;td align=&quot;center&quot; rowspan=&quot;2&quot;
                                    &lt;a href   = &quot;./contact_detail.php?contact_id=&lt;!--{ $v.contact_id }--&gt;&quot;&gt;
                                    &lt;!--{ if $v.status == 0 }--&gt;
                                    &lt;span STYLE=&quot;color:red; font-weight:bold;&quot;&gt;未読&lt;/span&gt;
                                    &lt;!--{ elseif $v.status == 1 }--&gt;
                                        既読
                                         &lt;!--{ elseif $v.status == 2 }--&gt;
                                        対応中
                                         &lt;!--{ elseif $v.status == 3 }--&gt;
                                        対応済
                                         &lt;!--{ /if }--&gt;
                                    &lt;/a&gt;
                                &lt;/td&gt;
                                &lt;td&gt;&lt;!--{ $v.name }--&gt; &lt;!--{ $v.name_f }--&gt; 様&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;
                                    &lt;a href   = &quot;./contact_detail.php?contact_id=&lt;!--{ $v.contact_id }--&gt;&quot;&gt;
                                        &lt;!--{ $v.message|truncate:30}--&gt;
                                    &lt;/a&gt;
                                &lt;/td&gt;
                                &lt;td&gt;&lt;!--{mailto address=$v.email encode=&quot;javascript&quot;}--&gt;&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;&lt;!--{ $v.create_date|sfDispDBDate}--&gt;&lt;/td&gt;
                                &lt;td rowspan=&quot;2&quot;&gt;〒&lt;!--{ $v.zip01 }--&gt;-&lt;!--{ $v.zip02 }--&gt;&lt;br&gt;&lt;!--{$arrPref[$v.pref]}--&gt;&lt;!--{ $v.addr01 }--&gt;&lt;/td&gt;
                                &lt;td align=&quot;center&quot;&gt;
                                    &lt;span class=&quot;icon_mail&quot;&gt;
                                    &lt;a href = &quot;./contact_reply.php?contact_id=&lt;!--{ $v.contact_id }--&gt;&quot;&gt;
                                        返信
                                         &lt;/a&gt;
                                    &lt;/span&gt;
                                &lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr bgcolor=&quot;#ffffff&quot;&gt;
                                &lt;td align=&quot;right&quot;&gt;&lt;!--{ if $v.customer_id }--&gt;&lt;!--{ $v.customer_id }--&gt;&lt;!--{ else }--&gt;非会員&lt;!--{ /if }--&gt;&lt;/td&gt;
                                &lt;td&gt;&lt;!--{ $v.tel01 }--&gt;-&lt;!--{ $v.tel02 }--&gt;-&lt;!--{ $v.tel03 }--&gt;&lt;/td&gt;
                                &lt;td align=&quot;center&quot;&gt;
                                    &lt;span class=&quot;icon_delete&quot;&gt;
                                    &lt;a href   = &quot;&lt;!--{$smarty.server.PHP_SELF|escape}--&gt;&quot;
                                        onclick= &quot;fnModeSubmit(&#039;delete&#039;, &#039;contact_id&#039;, &lt;!--{ $v.contact_id }--&gt;);
                                        return false;&quot;&gt;
                                        削除
                                         &lt;/a&gt;
                                    &lt;/span&gt;
                                &lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;!--{ /foreach }--&gt;
                        &lt;/table&gt;
                        &lt;!--検索結果表示テーブル--&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;

            &lt;!--{/if}--&gt;

        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;        
&lt;!--★★検索結果一覧★★--&gt;        
&lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr&gt;&lt;td bgcolor=&quot;cbcbcb&quot; colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr bgcolor=&quot;cbcbcb&quot;&gt;
        &lt;td&gt;
            &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/search_left.gif&quot; width=&quot;19&quot; height=&quot;22&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;8&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/td&gt;
        &lt;td align=&quot;right&quot;&gt;
            &lt;!--{include file=$tpl_pager}--&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;&lt;td bgcolor=&quot;cbcbcb&quot; colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;!--{/if}--&gt;
                
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;!--メインエリア--&gt;
            &lt;/table&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
}}

subnavi.tpl
contact.tplと同じディレクトリにあるsubnavi.tplの
左ナビに「お問合わせ管理」を追加。

#highlight(linenumber,html){{
&lt;table width=&quot;141&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot; id=&quot;menu_navi&quot;&gt;
    &lt;!--ナビ--&gt;
    &lt;tr&gt;&lt;td class=&lt;!--{if $tpl_subno != &#039;index&#039;}--&gt;&quot;navi&quot;&lt;!--{else}--&gt;&quot;navi-on&quot;&lt;!--{/if}--&gt;&gt;&lt;a href=&quot;./index.php&quot; onMouseOver=&quot;naviStyleChange(&#039;index&#039;, &#039;#a5a5a5&#039;)&quot; &lt;!--{if $tpl_subno != &#039;index&#039;}--&gt;onMouseOut=&quot;naviStyleChange(&#039;index&#039;, &#039;#636469&#039;)&quot;&lt;!--{/if}--&gt; id=&quot;index&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/icon.jpg&quot; width=&quot;15&quot; height=&quot;9&quot; alt=&quot;&quot; border=&quot;0&quot;&gt;&lt;span class=&quot;navi_text&quot;&gt;顧客マスタ&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/navi_line.gif&quot; width=&quot;140&quot; height=&quot;2&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;!--以下を追加--&gt;
    &lt;tr&gt;&lt;td class=&lt;!--{if $tpl_subno != &#039;contact&#039;}--&gt;&quot;navi&quot;&lt;!--{else}--&gt;&quot;navi-on&quot;&lt;!--{/if}--&gt;&gt;&lt;a href=&quot;./contact.php&quot; onMouseOver=&quot;naviStyleChange(&#039;contact&#039;, &#039;#a5a5a5&#039;)&quot; &lt;!--{if $tpl_subno != &#039;contact&#039;}--&gt;onMouseOut=&quot;naviStyleChange(&#039;contact&#039;, &#039;#636469&#039;)&quot;&lt;!--{/if}--&gt; id=&quot;contact&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/icon.jpg&quot; width=&quot;15&quot; height=&quot;9&quot; alt=&quot;&quot; border=&quot;0&quot;&gt;&lt;span class=&quot;navi_text&quot;&gt;お問い合わせ管理&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/navi_line.gif&quot; width=&quot;140&quot; height=&quot;2&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;!--ここまで--&gt;
    &lt;!--ナビ--&gt;
&lt;/table&gt;
}}

----
4.お問合わせ詳細表示
詳細表示できるようにさらに実装する。

以下のファイルを新規作成する。
 /html/admin/customer/contact_detail.php
 /data/class_extends/page_extends/admin/customer/LC_Page_Admin_Customer_Contact_Detail_Ex.php
 /data/class/pages/admin/customer/LC_Page_Admin_Customer_Contact_Detail.php
 /data/Smarty/templates/default/admin/customer/contact_detail.tpl

作業の流れは、お問合わせ管理画面を作っていったときと同様。

 /html/admin/customer/contact_detail.php
 /data/class_extends/page_extends/admin/customer/LC_Page_Admin_Customer_Contact_Detail_Ex.php

上記の2つは、contact.phpやLC_Page_Admin_Customer_Contact_Ex.phpの時と同じようにクラス名や、
インクルードするファイル名などを変更。

LC_Page_Admin_Customer_Contact_Detail.php
highlight(linenumber,php){{
&lt;?php
require_once(CLASS_PATH . &quot;pages/LC_Page.php&quot;);

class LC_Page_Admin_Customer_Contact_Detail extends LC_Page {

   /**
    * Page を初期化する.
    *
    * @return void
    */
   function init() {
       parent::init();
       $this-&gt;tpl_mainpage = &#039;customer/contact_detail.tpl&#039;;
       $this-&gt;tpl_mainno = &#039;customer&#039;;
       $this-&gt;tpl_subnavi = &#039;customer/subnavi.tpl&#039;;
       $this-&gt;tpl_subno = &#039;contact&#039;;
       $this-&gt;tpl_pager = TEMPLATE_DIR . &#039;admin/pager.tpl&#039;;
       $this-&gt;tpl_subtitle = &#039;お問い合わせ詳細&#039;;

       $masterData = new SC_DB_MasterData_Ex();
       $this-&gt;arrPref = $masterData-&gt;getMasterData(&quot;mtb_pref&quot;, array(&quot;pref_id&quot;, &quot;pref_name&quot;, &quot;rank&quot;));
   }

   /**
    * Page のプロセス.
    *
    * @return void
    */
   function process() {

        // 認証可否の判定
        $objSess = new SC_Session();
        SC_Utils_Ex::sfIsSuccess($objSess);

        $this-&gt;objQuery = new SC_Query();
        $this-&gt;objConn = new SC_DBConn();

        //----　問合せ編集情報取得
        if(isset($_GET[&quot;contact_id&quot;]) &amp;&amp; is_numeric($_GET[&quot;contact_id&quot;])) {
            $contact_id = $_GET[&quot;contact_id&quot;];
        } elseif(isset($_POST[&quot;contact_id&quot;]) &amp;&amp; is_numeric($_POST[&quot;contact_id&quot;])) {
            $contact_id = $_POST[&quot;contact_id&quot;];
        }

        if($contact_id) {
            //--　問合せデータ取得
            $sql = &quot;SELECT * FROM dtb_contact WHERE del_flg = 0 AND contact_id = ?&quot;;
            $result = $this-&gt;objConn-&gt;getAll($sql, array($contact_id));
            $this-&gt;list_data = $result[0];
            //既読に変更
            if($this-&gt;list_data[&quot;status&quot;] == 0 &amp;&amp; !isset($_POST[&quot;status&quot;])) {    
                $this-&gt;list_data[&quot;status&quot;] = 1;
                $this-&gt;lfRegiserData(array(&quot;status&quot;=&gt;1),array(array(&quot;column&quot;=&gt;&quot;status&quot;)));
            } elseif($_POST[&quot;mode&quot;] == &quot;confirm&quot;) {
                //-- 入力データの変換
                $arrRegisterColumn = array(array(  &quot;column&quot; =&gt; &quot;status&quot;, &quot;convert&quot; =&gt; &quot;n&quot; ),
                                           array(  &quot;column&quot; =&gt; &quot;del_flg&quot;, &quot;convert&quot; =&gt; &quot;n&quot;),
                                          );
                $this-&gt;arrForm = $_POST;
                $this-&gt;arrForm = $this-&gt;lfConvertParam($this-&gt;arrForm, $arrRegisterColumn);
                //-- 入力チェック
                $this-&gt;arrErr = $this-&gt;lfErrorCheck($this-&gt;arrForm);
                //-- 入力エラー発生？
                if ($this-&gt;arrErr) {
                    foreach($this-&gt;arrForm as $key =&gt; $val) {
                        $this-&gt;list_data[ $key ] = $val;
                    }
                } else {
                    $this-&gt;list_data[&quot;status&quot;] = $this-&gt;arrForm[&quot;status&quot;];
                    $this-&gt;lfRegiserData(array(&quot;status&quot;=&gt;$this-&gt;arrForm[&quot;status&quot;]),array(array(&quot;column&quot;=&gt;&quot;status&quot;)));
                }
            }
            //問合せ履歴情報の取得
            $this-&gt;arrContactHistory = $this-&gt;lfContactHistory($this-&gt;list_data[&#039;customer_id&#039;]);
        } else {
            $this-&gt;list_data = array();
        }

        //----　ページ表示
        $objView = new SC_AdminView();
        $objView-&gt;assignobj($this);
        $objView-&gt;display(MAIN_FRAME);
   }

   /**
    * デストラクタ.
    *
    * @return void
    */
    function destroy() {
        parent::destroy();
    }

 
    // 編集登録
    function lfRegiserData($array, $arrRegisterColumn) {

        foreach ($arrRegisterColumn as $data) {
            if($array[$data[&quot;column&quot;]] != &quot;&quot;) {
                $arrRegist[$data[&quot;column&quot;]] = $array[$data[&quot;column&quot;]];
            } else {
                unset($arrRegist[$data[&quot;column&quot;]]);
            }
        }

        //-- 編集登録実行
        $this-&gt;objQuery-&gt;update(&quot;dtb_contact&quot;, $arrRegist, &quot;contact_id = ?&quot;,array($this-&gt;list_data[&quot;contact_id&quot;]));
    }

 
    //----　取得文字列の変換
    function lfConvertParam($array, $arrRegisterColumn) {
        /*
         *    文字列の変換
         *    K :  「半角(ﾊﾝｶｸ)片仮名」を「全角片仮名」に変換
         *    C :  「全角ひら仮名」を「全角かた仮名」に変換
         *    V :  濁点付きの文字を一文字に変換。&quot;K&quot;,&quot;H&quot;と共に使用します
         *    n :  「全角」数字を「半角(ﾊﾝｶｸ)」に変換
         *  a :  全角英数字を半角英数字に変換する
         */
        // カラム名とコンバート情報
        foreach ($arrRegisterColumn as $data) {
            $arrConvList[ $data[&quot;column&quot;] ] = $data[&quot;convert&quot;];
        }
        // 文字変換
        foreach ($arrConvList as $key =&gt; $val) {
            // POSTされてきた値のみ変換する。
            if(strlen(($array[$key])) &gt; 0) {
                $array[$key] = mb_convert_kana($array[$key] ,$val);
            }
        }
        return $array;
    }

    //---- 入力エラーチェック
    function lfErrorCheck($array) {

        $objErr = new SC_CheckError($array);

        $objErr-&gt;doFunc(array(&quot;対応状態&quot;, &#039;status&#039;), array(&quot;EXIST_CHECK&quot;));
        return $objErr-&gt;arrErr;

   }

    //問合せ履歴情報の取得
    function lfContactHistory($customer_id){
        $this-&gt;tpl_pageno = $_POST[&#039;search_pageno&#039;];
        $this-&gt;edit_customer_id = $customer_id;

        // ページ送りの処理
        $page_max = SEARCH_PMAX;
        //問合せ履歴の件数取得
        $this-&gt;tpl_linemax = $this-&gt;objQuery-&gt;count(&quot;dtb_contact&quot;,&quot;customer_id=? AND del_flg = 0 &quot;, array($customer_id));
        $linemax = $this-&gt;tpl_linemax;

        // ページ送りの取得
        $objNavi = new SC_PageNavi($_POST[&#039;search_pageno&#039;], $linemax, $page_max, &quot;fnNaviSearchPage2&quot;, NAVI_PMAX);
        $this-&gt;arrPagenavi = $objNavi-&gt;arrPagenavi;
        $this-&gt;arrPagenavi[&#039;mode&#039;] = &#039;&#039;;
        $startno = $objNavi-&gt;start_row;

        // 取得範囲の指定(開始行番号、行数のセット)
        $this-&gt;objQuery-&gt;setlimitoffset($page_max, $startno);
        // 表示順序
        $order = &quot;contact_id DESC&quot;;
        $this-&gt;objQuery-&gt;setorder($order);
        //問合せ履歴情報の取得
        $arrContactHistory = $this-&gt;objQuery-&gt;select(&quot;*&quot;, &quot;dtb_contact&quot;, &quot;customer_id=? AND del_flg = 0 &quot;, array($customer_id));
        return $arrContactHistory;
   }
}
?&gt;
}}

/data/Smarty/templates/default/admin/customer/contact_detail.tpl
highlight(linenumber,php){{
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--

    function fnReturn() {
        document.form_search.action = &#039;./contact.php&#039;;
        document.form_search.submit();
        return false;
    }

//--&gt;
&lt;/script&gt;

&lt;!--★★メインコンテンツ★★--&gt;
&lt;table width=&quot;878&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;

&lt;form name=&quot;form2&quot; id=&quot;form2&quot; method=&quot;post&quot; action=&quot;&lt;!--{$smarty.server.PHP_SELF|escape}--&gt;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;confirm&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;contact_id&quot; value=&quot;&lt;!--{$list_data.contact_id|escape}--&gt;&quot;&gt;

    &lt;tr valign=&quot;top&quot;&gt;
        &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/navi_bg.gif&quot; height=&quot;402&quot;&gt;
            &lt;!--▼SUB NAVI--&gt;
            &lt;!--{include file=$tpl_subnavi}--&gt;
            &lt;!--▲SUB NAVI--&gt;
        &lt;/td&gt;
        &lt;td class=&quot;mainbg&quot;&gt;
            &lt;!--▼登録テーブルここから--&gt;
            &lt;table width=&quot;737&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;!--メインエリア--&gt;
                &lt;tr&gt;
                    &lt;td align=&quot;center&quot;&gt;
                        &lt;table width=&quot;706&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                            &lt;tr&gt;&lt;td height=&quot;14&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/main_top.jpg&quot; width=&quot;706&quot; height=&quot;14&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/main_left.jpg&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;14&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td bgcolor=&quot;#cccccc&quot;&gt;
                                    &lt;table width=&quot;678&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                                        &lt;tr&gt;
                                            &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/contents_title_top.gif&quot; width=&quot;678&quot; height=&quot;7&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/contents_title_left_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/contents_title_left.gif&quot; width=&quot;22&quot; height=&quot;12&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#636469&quot; width=&quot;638&quot; class=&quot;fs14n&quot;&gt;&lt;span class=&quot;white&quot;&gt;&lt;!--コンテンツタイトル--&gt;問合せ詳細&lt;/span&gt;&lt;/td&gt;
                                            &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/contents_title_right_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;18&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/contents_title_bottom.gif&quot; width=&quot;678&quot; height=&quot;7&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/main_bar.jpg&quot; width=&quot;678&quot; height=&quot;10&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                    &lt;/table&gt;

                                    &lt;table width=&quot;678&quot; border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;8&quot; summary=&quot; &quot;&gt;

                                        &lt;tr class=&quot;fs12n&quot;&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;対応状況&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; width=&quot;&quot; align=&quot;center&quot;&gt;
                                                &lt;select name=&quot;status&quot; id=&quot;status&quot;&gt;
                                                    &lt;option value=&quot;1&quot; &lt;!--{if $list_data.status eq 1}--&gt;selected=&quot;selected&quot;&lt;!--{/if}--&gt; &gt;既読&lt;/option&gt;
                                                    &lt;option value=&quot;2&quot; &lt;!--{if $list_data.status eq 2}--&gt;selected=&quot;selected&quot;&lt;!--{/if}--&gt; &gt;対応中&lt;/option&gt;
                                                    &lt;option value=&quot;3&quot; &lt;!--{if $list_data.status eq 3}--&gt;selected=&quot;selected&quot;&lt;!--{/if}--&gt; &gt;対応済&lt;/option&gt;
                                                &lt;/select&gt;
                                                &lt;input type=&quot;submit&quot; alt=&quot;変更する&quot; name=&quot;subm&quot; value=&quot;変更する&quot;&gt;
                                            &lt;/td&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;顧客ID&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; width=&quot;&quot; align=&quot;center&quot;&gt;
                                            &lt;!--{if $list_data.customer_id}--&gt;
                                                &lt;!--{$list_data.customer_id|escape}--&gt;
                                            &lt;!--{else}--&gt;
                                                非会員
                                            &lt;!--{/if}--&gt;
                                            &lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr class=&quot;fs12n&quot;&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;お名前&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; width=&quot;&quot;&gt;
                                                &lt;!--{$list_data.name|escape}--&gt;&amp;nbsp;&lt;!--{$list_data.name_f|escape}--&gt;&amp;nbsp;様
                                            &lt;/td&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;電話番号&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; width=&quot;&quot;&gt;&lt;!--{$list_data.tel01|escape}--&gt;-&lt;!--{$list_data.tel02|escape}--&gt;-&lt;!--{$list_data.tel03|escape}--&gt;
                                            &lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr class=&quot;fs12&quot;&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;ご住所&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; colspan=&quot;3&quot;&gt;
                                                〒 &lt;!--{$list_data.zip01|escape}--&gt; - &lt;!--{$list_data.zip02|escape}--&gt;
                                                &lt;!--{$arrPref[$list_data.pref]}--&gt;&lt;!--{$list_data.addr01|escape}--&gt;
                                            &lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr class=&quot;fs12n&quot;&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;100&quot;&gt;メールアドレス&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; colspan=&quot;3&quot;&gt;&lt;!--{$list_data.email|escape}--&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr class=&quot;fs12n&quot;&gt;
                                            &lt;td bgcolor=&quot;#f2f1ec&quot; width=&quot;&quot; align=&quot;center&quot; colspan=&quot;4&quot;&gt;問い合わせ内容&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td bgcolor=&quot;#ffffff&quot; width=&quot;&quot; class=&quot;fs10n&quot; colspan=&quot;4&quot;&gt;&lt;span class=&quot;red12&quot;&gt;&lt;!--{$arrErr.note}--&gt;&lt;/span&gt;
                                                &lt;!--{$list_data.message|escape|nl2br}--&gt;
                                            &lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr class=&quot;fs12n&quot;&gt;
                                        &lt;/tr&gt;
                                    &lt;/table&gt;
                                    &lt;table width=&quot;678&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                                        &lt;tr&gt;
                                            &lt;td bgcolor=&quot;#cccccc&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                            &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/tbl_top.gif&quot; width=&quot;676&quot; height=&quot;7&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#cccccc&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td bgcolor=&quot;#cccccc&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;10&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                            &lt;td bgcolor=&quot;#e9e7de&quot; align=&quot;center&quot;&gt;
                                                &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                                                    &lt;tr&gt;
                                                        &lt;td&gt;
                                                            &lt;!--▼検索結果へ戻る--&gt;
                                                            &lt;a href=&quot;./contact.php&quot; onmouseover=&quot;chgImg(&#039;&lt;!--{$TPL_DIR}--&gt;img/contents/btn_search_back_on.jpg&#039;,&#039;back&#039;);&quot; onmouseout=&quot;chgImg(&#039;&lt;!--{$TPL_DIR}--&gt;img/contents/btn_search_back.jpg&#039;,&#039;back&#039;);&quot; onclick=&quot;return fnReturn();&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/btn_search_back.jpg&quot; width=&quot;123&quot; height=&quot;24&quot; alt=&quot;検索画面に戻る&quot; border=&quot;0&quot; name=&quot;back&quot;&gt;&lt;/a&gt;
                                                            &lt;!--▲検索結果へ戻る--&gt;
                                                        &lt;/td&gt;
                                                    &lt;/tr&gt;
                                                &lt;/table&gt;
                                            &lt;/td&gt;
                                            &lt;td bgcolor=&quot;#cccccc&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;10&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                        &lt;tr&gt;
                                            &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/tbl_bottom.gif&quot; width=&quot;678&quot; height=&quot;8&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                        &lt;/tr&gt;
                                    &lt;/table&gt;

                                &lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/main_right.jpg&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;14&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td colspan=&quot;3&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/main_bottom.jpg&quot; width=&quot;706&quot; height=&quot;14&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;&lt;td height=&quot;30&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
                        &lt;/table&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;!--メインエリア--&gt;
            &lt;/table&gt;
            &lt;!--▲登録テーブルここまで--&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/form&gt;
&lt;/table&gt;
&lt;!--★★メインコンテンツ★★--&gt;

&lt;!--★★問い合わせ履歴一覧★★--&gt;
&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&lt;!--{$smarty.server.PHP_SELF|escape}--&gt;?contact_id=&lt;!--{$list_data.contact_id}--&gt;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;mode&quot; value=&quot;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;contact_id&quot; value=&quot;&lt;!--{$list_data.contact_id}--&gt;&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;search_pageno&quot; value=&quot;&lt;!--{$tpl_pageno}--&gt;&quot;&gt;

&lt;table width=&quot;878&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/search_line.jpg&quot; width=&quot;878&quot; height=&quot;12&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr bgcolor=&quot;cbcbcb&quot;&gt;
        &lt;td&gt;
            &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/search_left.gif&quot; width=&quot;19&quot; height=&quot;22&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                    &lt;td&gt;
                    &lt;!--問い合わせ履歴一覧--&gt;
                        &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                            &lt;tr&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_top.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_top_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_top.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_middle.gif&quot; width=&quot;22&quot; height=&quot;12&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td bgcolor=&quot;#393a48&quot; class=&quot;white10&quot;&gt;問合せ履歴一覧　&lt;span class=&quot;reselt&quot;&gt;&lt;!--問合せ履歴一覧--&gt;&lt;!--{$tpl_linemax}--&gt;件&lt;/span&gt;&amp;nbsp;が該当しました。&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;22&quot; height=&quot;8&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;tr&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_left_bottom.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td background=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_bottom_bg.gif&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                                &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/contents/reselt_right_bottom.gif&quot; width=&quot;22&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                        &lt;/table&gt;
                        &lt;!--問合せ履歴一覧--&gt;
                    &lt;/td&gt;
                    &lt;td&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;8&quot; height=&quot;1&quot; alt=&quot;&quot;&gt;&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/td&gt;
        &lt;td align=&quot;right&quot;&gt;
            &lt;!--{include file=$tpl_pager}--&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;&lt;td bgcolor=&quot;cbcbcb&quot; colspan=&quot;2&quot;&gt;&lt;img src=&quot;&lt;!--{$TPL_DIR}--&gt;img/common/_.gif&quot; width=&quot;1&quot; height=&quot;5&quot; alt=&quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;table width=&quot;878&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
    &lt;tr&gt;
        &lt;td bgcolor=&quot;#f0f0f0&quot; align=&quot;center&quot;&gt;
            &lt;table width=&quot;840&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; summary=&quot; &quot;&gt;
                &lt;tr&gt;&lt;td height=&quot;12&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;
                    &lt;!--{if $tpl_linemax &gt; 0}--&gt;
                    &lt;td bgcolor=&quot;#cccccc&quot;&gt;
                    &lt;!--問合せ履歴一覧表示テーブル--&gt;
                        &lt;table width=&quot;840&quot; border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot; &quot;&gt;
                            &lt;tr bgcolor=&quot;#636469&quot; align=&quot;center&quot; class=&quot;fs10n&quot;&gt;
                                &lt;td width=&quot;160&quot;&gt;&lt;span class=&quot;white&quot;&gt;日付&lt;/span&gt;&lt;/td&gt;
                                &lt;td width=&quot;140&quot;&gt;&lt;span class=&quot;white&quot;&gt;問合せ番号&lt;/span&gt;&lt;/td&gt;
                                &lt;td width=&quot;140&quot;&gt;&lt;span class=&quot;white&quot;&gt;内容&lt;/span&gt;&lt;/td&gt;
                                &lt;td width=&quot;140&quot;&gt;&lt;span class=&quot;white&quot;&gt;対応状況&lt;/span&gt;&lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;!--{section name=cnt loop=$arrContactHistory}--&gt;
                            &lt;tr bgcolor=&quot;#ffffff&quot; align=&quot;center&quot; class=&quot;fs12&quot;&gt;
                                &lt;td width=&quot;&quot;&gt;&lt;!--{$arrContactHistory[cnt].create_date|sfDispDBDate}--&gt;&lt;/td&gt;
                                &lt;td width=&quot;&quot;&gt;&lt;a href=&quot;contact_detail.php?contact_id=&lt;!--{$arrContactHistory[cnt].contact_id}--&gt;&quot;  &gt;&lt;!--{$arrContactHistory[cnt].contact_id}--&gt;&lt;/a&gt;&lt;/td&gt;
                                &lt;td width=&quot;&quot;&gt;&lt;!--{$arrContactHistory[cnt].message|truncate:40}--&gt;&lt;/td&gt;
                                &lt;td width=&quot;&quot;&gt;
                                    &lt;!--{if $arrContactHistory[cnt].status eq 1}--&gt;
                                        既読
                                    &lt;!--{elseif $arrContactHistory[cnt].status eq 2}--&gt;
                                        対応中
                                    &lt;!--{elseif $arrContactHistory[cnt].status eq 3}--&gt;
                                        対応済
                                    &lt;!--{else}--&gt;
                                        未読
                                    &lt;!--{ /if }--&gt;
                                &lt;/td&gt;
                            &lt;/tr&gt;
                            &lt;!--{/section}--&gt;
                        &lt;/table&gt;
                        &lt;!--問合せ履歴一覧表示テーブル--&gt;
                    &lt;/td&gt;
                    &lt;!--{else}--&gt;
                    &lt;td align=&quot;center&quot; class=&quot;fs12&quot;&gt;問合せ履歴はありません。&lt;/td&gt;
                    &lt;!--{/if}--&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;        
&lt;!--★★検索結果一覧★★--&gt;
}}


配信されるメールのテンプレート場所

  [DocumentRoot]/html/eccube/data/Smarty/templates/default/mail_templates    </description>
    <dc:date>2009-05-19T18:28:27+09:00</dc:date>
  </item>
    <item rdf:about="http://www28.atwiki.jp/lucier/pages/37.html">
    <title>[EC-CUBE]お問い合わせメールを管理画面から返信できるようにする</title>
    <link>http://www28.atwiki.jp/lucier/pages/37.html</link>
    <description>
      先に作成した管理画面でのお問合わせ機能だけだと閲覧のみなので、管理画面からメールを返信できるようにカスタマイズする.

※これが大変だったんだった。
　サイトどおりにやってもうまくいかない。ホント。
----

-データベースの編集
お問合わせ管理画面からメールを扱えるようにするため、EC-CUBE上で送信されているメールの情報を格納しているテーブルを編集します。

* dtb_mail_history
デフォルトでは「order_id」が「NOT_NULL」すなわち、お買い物データがないものは、エラーとなってしまいますので、この制限をはずします。
また、送信先のメールアドレスを保存するために、「email」カラムを「text」型で追加します。
* mtb_mail_template
管理画面から、 

 システム設定＞マスタデータ管理＞mtb_mail_template

と進んで、

 ID:5
 値:お問合わせ返信

を追加する。

* mtb_mail_tpl_path
も同様に、 

 ID:5
 値:mail_tenplates/contact_re_mail.tpl

を追加。


-ファイルを作る
order系のファイルを複製して以下のファイルを作る。
下記ファイル以外にも編集しなきゃいけないクラスがあったりする。

 /html/admin/customer/mail.php 
 /html/admin/customer/mail_confirm.php 
 /html/admin/customer/mail_view.php 
 /data/Smarty/templates/default/admin/customer/mail.tpl 
 /data/Smarty/templates/default/admin/customer/mail_confirm.tpl 
 /data/Smarty/templates/default/admin/customer/mail_view.tpl 
 /data/Smarty/templates/default/mail_template/contact_re_mail.tpl 
 /data/class/pages/admin/customer/LC_Page_Admin_Contact_Mail.php 
 /data/class/pages/admin/customer/LC_Page_Admin_Contact_MailView.php


クラスの編集
/data/class/helper/SC_Helper_Mail.php

以下のメソッドを追加

#highlight(linenumber,php){{
    /***
     * 2009.04.27 追加
     * @author i-enter y-nakajima
     * 返信メール送信メソッド
     * @param $contact_id, $template_id, $subject = &quot;&quot;, $header = &quot;&quot;, $footer = &quot;&quot;, $send = true
     **/     
     function sfSendContactMail($contact_id, $template_id, $subject = &quot;&quot;, $header = &quot;&quot;, $footer = &quot;&quot;, $send_flg = true) {
         $objPage = new LC_Page();
         $objSiteInfo = new SC_SiteInfo();
         $arrInfo = $objSiteInfo-&gt;data;
         $objPage-&gt;arrInfo = $arrInfo;
         
         $objQuery = new SC_Query();
         
         if($subject == &quot;&quot; &amp;&amp; $header == &quot;&quot; &amp;&amp; $footer == &quot;&quot;){
         	 
         	 // メールテンプレート情報の取得
         	 $where = &quot;template_id = ?&quot;;
         	 $arrRet = $objQuery-&gt;select(&quot;subject, header, footer&quot;, &quot;dtb_mailtemplate&quot;, $where, array(&#039;1&#039;));
         	 $objPage-&gt;tpl_header = $arrRet[0][&#039;header&#039;];
         	 $objPage-&gt;tpl_footer = $arrRet[0][&#039;footer&#039;];
         	 $tmp_subject = $arrRet[0][&#039;subject&#039;];
         	 
         } else {
         	 $objPage-&gt;tpl_header = $header;
         	 $objPage-&gt;tpl_footer = $footer;
         	 $tmp_subject = $subject;
         }
         
         // 問い合わせ情報の取得
         $where = &quot;contact_id = ?&quot;;
         $arrRet = $objQuery-&gt;select(&quot;*&quot;, &quot;dtb_contact&quot;, $where, array($contact_id));
         
         $objPage-&gt;arrContact = $arrRet[0];
        
         $objMailView = new SC_SiteView();
         // メール本文の取得
         $objMailView-&gt;assignobj($objPage);
         $body = $objMailView-&gt;fetch($this-&gt;arrMAILTPLPATH[$template_id]);

         // メール送信処理
         $objSendMail = new SC_SendMail_Ex();
         $bcc = $arrInfo[&#039;email01&#039;];
         $from = $arrInfo[&#039;email03&#039;];
         $error = $arrInfo[&#039;email04&#039;];
         
         $tosubject = $this-&gt;sfMakeSubject($objQuery, $objMailView, $objPage, $tmp_subject);
         
         $objSendMail-&gt;setItem(&#039;&#039;, $tosubject, $body, $from, $arrInfo[&#039;shop_name&#039;], $from, $error, $error, $bcc);
         $objSendMail-&gt;setTo($arrRet[0][&#039;email&#039;] , $arrRet[0][&#039;name&#039;] . &#039; &#039; . $arrRet[0][&#039;name_f&#039;] . &#039; 様&#039;);

         // 送信フラグ:trueの場合はTXTメール送信を実行する
         if($send_flg){
         	 if($objSendMail-&gt;sendMail()){
         	 	 $this-&gt;sfSaveMailHistory2($arrRet[0][&#039;email&#039;], $template_id, $tosubject, $body);
         	 }
         }
         
         return $objSendMail;
     }
     
     /***
     * 2009.04.27 追加
     * @author i-enter y-nakajima
     * メール配信履歴への登録
     * @param $email, $template_id, $subject, $body
     **/
     function sfSaveMailHistory2($email, $template_id, $subject, $body) {
     	$sqlval[&#039;subject&#039;] = $subject;
     	$sqlval[&#039;email&#039;] = $email;
     	$sqlval[&#039;template_id&#039;] = $template_id;
     	$sqlval[&#039;send_date&#039;] = &quot;Now()&quot;;
     	
     	if(!isset($_SESSION[&#039;member_id&#039;])) $_SESSION[&#039;member_id&#039;] = &quot;&quot;;
     	if($_SESSION[&#039;member_id&#039;] != &quot;&quot;) {
     		$sqlval[&#039;creator_id&#039;] = $_SESSION[&#039;member_id&#039;];
     	} else {
     		$sqlval[&#039;creator_id&#039;] = &#039;0&#039;;
     	}
     	$sqlval[&#039;mail_body&#039;] = $body;
     	
     	$objQuery = new SC_Query();
     	$objQuery-&gt;insert(&quot;dtb_mail_history&quot;, $sqlval);
     }

}}

次に以下のファイルを編集。
 /data/class/pages/admin/customer/LC_Page_Admin_Contact_Mail.php

#highlight(kinenumber, php){{
&lt;?php
require_once(CLASS_PATH . &quot;pages/LC_Page.php&quot;);

/**
 * お問い合わせメール管理 のページクラス.
 */
class LC_Page_Admin_Contact_Mail extends LC_Page {
	
    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $this-&gt;tpl_mainpage = &#039;customer/mail.tpl&#039;;
        $this-&gt;tpl_subnavi = &#039;customer/subnavi.tpl&#039;;
        $this-&gt;tpl_mainno = &#039;customer&#039;;
        $this-&gt;tpl_subno = &#039;contact&#039;;
        $this-&gt;tpl_subtitle = &#039;お問合わせ返信&#039;;

        $masterData = new SC_DB_MasterData_Ex();
        $this-&gt;arrMAILTEMPLATE = $masterData-&gt;getMasterData(&quot;mtb_mail_template&quot;);

    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {

        $objView = new SC_AdminView();
        $objSess = new SC_Session();
        SC_Utils_Ex::sfIsSuccess($objSess);

        if(SC_Utils_Ex::sfIsInt($_GET[&#039;contact_id&#039;])){
        	$this-&gt;tpl_contact_id = $_GET[&#039;contact_id&#039;];
        }elseif(SC_Utils_Ex::sfIsInt($_POST[&#039;contact_id&#039;])){
    		$this-&gt;tpl_contact_id = $_POST[&#039;contact_id&#039;];
        }
        // パラメータ管理クラス
        $objFormParam = new SC_FormParam();
        // パラメータ情報の初期化
        $this-&gt;lfInitParam($objFormParam);

        $objMail = new SC_Helper_Mail_Ex();

        switch($_POST[&#039;mode&#039;]) {
        case &#039;pre_edit&#039;:
            break;
        case &#039;return&#039;:
            // POST値の取得
            $objFormParam-&gt;setParam($_POST);
            break;
        case &#039;send&#039;:
            // POST値の取得
            $objFormParam-&gt;setParam($_POST);
            // 入力値の変換
            $objFormParam-&gt;convParam();
            $this-&gt;arrErr = $objFormParam-&gt;checkError();
            // メールの送信
            if (count($this-&gt;arrErr) == 0) {
                // 問合せ返信メール
                $objSendMail = $objMail-&gt;sfSendContactMail($this-&gt;tpl_contact_id, $_POST[&#039;template_id&#039;], $_POST[&#039;subject&#039;], $_POST[&#039;header&#039;], $_POST[&#039;footer&#039;]);
            }
            
            $this-&gt;sendRedirect($this-&gt;getLocation(&quot;./contact.php&quot;), true);
            exit;
            break;
        case &#039;confirm&#039;:
            // POST値の取得
            $objFormParam-&gt;setParam($_POST);
            // 入力値の変換
            $objFormParam-&gt;convParam();
            // 入力値の引き継ぎ
            $this-&gt;arrHidden = $objFormParam-&gt;getHashArray();
            $this-&gt;arrErr = $objFormParam-&gt;checkError();
            // メールの送信
            if (count($this-&gt;arrErr) == 0) {
                // 問合せ返信メール(送信なし)
                $objSendMail = $objMail-&gt;sfSendContactMail($this-&gt;tpl_contact_id, $_POST[&#039;template_id&#039;], $_POST[&#039;subject&#039;], $_POST[&#039;header&#039;], $_POST[&#039;footer&#039;], false);
                // 確認ページの表示
                $this-&gt;tpl_subject = $_POST[&#039;subject&#039;];
                $this-&gt;tpl_body = mb_convert_encoding( $objSendMail-&gt;body, CHAR_CODE, &quot;auto&quot; );
                $this-&gt;tpl_to = $objSendMail-&gt;arrRecip[&quot;To&quot;];
                $this-&gt;tpl_mainpage = &#039;customer/mail_confirm.tpl&#039;;
                $this-&gt;arrHidden[&#039;contact_id&#039;] = $this-&gt;tpl_contact_id;

                $objView-&gt;assignobj($this);
                $objView-&gt;display(MAIN_FRAME);

                exit;
            }
            break;
        case &#039;change&#039;:
            // POST値の取得
            $objFormParam-&gt;setValue(&#039;template_id&#039;, $_POST[&#039;template_id&#039;]);
            if(SC_Utils_Ex::sfIsInt($_POST[&#039;template_id&#039;])) {
                $objQuery = new SC_Query();
                $where = &quot;template_id = ?&quot;;
                $arrRet = $objQuery-&gt;select(&quot;subject, header, footer&quot;, &quot;dtb_mailtemplate&quot;, $where, array($_POST[&#039;template_id&#039;]));
                $objFormParam-&gt;setParam($arrRet[0]);
            }
            break;
        }

        $objQuery = new SC_Query();
        $where = &quot;contact_id = ?&quot;;
        $arrRet = $objQuery-&gt;select(&quot;*&quot;, &quot;dtb_contact&quot;, $where, array($this-&gt;tpl_contact_id));
        $col = &quot;send_date, subject, template_id, send_id&quot;;
        $where = &quot;email = ?&quot;;
        $objQuery-&gt;setorder(&quot;send_date DESC&quot;);
        $this-&gt;arrMailHistory = $objQuery-&gt;select($col, &quot;dtb_mail_history&quot;, $where, array($arrRet[0][&#039;email&#039;]));

        $this-&gt;arrForm = $objFormParam-&gt;getFormParamList();
        $objView-&gt;assignobj($this);
        $objView-&gt;display(MAIN_FRAME);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }


    /* パラメータ情報の初期化 */
    function lfInitParam(&amp;$objFormParam) {

        $objFormParam-&gt;addParam(&quot;テンプレート&quot;, &quot;template_id&quot;, INT_LEN, &quot;n&quot;, array(&quot;EXIST_CHECK&quot;, &quot;MAX_LENGTH_CHECK&quot;, &quot;NUM_CHECK&quot;));
        $objFormParam-&gt;addParam(&quot;メールタイトル&quot;, &quot;subject&quot;, STEXT_LEN, &quot;KVa&quot;,  array(&quot;EXIST_CHECK&quot;, &quot;MAX_LENGTH_CHECK&quot;, &quot;SPTAB_CHECK&quot;));
        $objFormParam-&gt;addParam(&quot;ヘッダー&quot;, &quot;header&quot;, LTEXT_LEN, &quot;KVa&quot;, array(&quot;EXIST_CHECK&quot;, &quot;MAX_LENGTH_CHECK&quot;, &quot;SPTAB_CHECK&quot;));
        $objFormParam-&gt;addParam(&quot;フッター&quot;, &quot;footer&quot;, LTEXT_LEN, &quot;KVa&quot;, array(&quot;EXIST_CHECK&quot;, &quot;MAX_LENGTH_CHECK&quot;, &quot;SPTAB_CHECK&quot;));
    }
}
?&gt;

}}

次はこれをorderのをコピーして編集。
/data/class/pages/admin/customer/LC_Page_Admin_Contact_MailView.php
#highlight(linenumber,php){{
&lt;?php
require_once(CLASS_PATH . &quot;pages/LC_Page.php&quot;);

/**
 * お問合わせメール確認 のページクラス.
 */
class LC_Page_Admin_Contact_MailView extends LC_Page {

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $this-&gt;tpl_mainpage = &#039;customer/mail_view.tpl&#039;;
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        $objView = new SC_AdminView();
        $objSess = new SC_Session();

        // 認証可否の判定
        SC_Utils_Ex::sfIsSuccess($objSess);

        if(SC_Utils_Ex::sfIsInt($_GET[&#039;send_id&#039;])) {
            $objQuery = new SC_Query();
            $col = &quot;subject, mail_body&quot;;
            $where = &quot;send_id = ?&quot;;
            $arrRet = $objQuery-&gt;select($col, &quot;dtb_mail_history&quot;, $where, array($_GET[&#039;send_id&#039;]));
            $this-&gt;tpl_subject = $arrRet[0][&#039;subject&#039;];
            $this-&gt;tpl_body = $arrRet[0][&#039;mail_body&#039;];
        }

        $objView-&gt;assignobj($this);
        $objView-&gt;display($this-&gt;tpl_mainpage);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}
?&gt;}}

-テンプレートの編集

/data/Smarty/templates/default/adin/customer/mail.tpl
の以下を変更

Line 28
 28. &lt;input type=&quot;hidden&quot; name=&quot;order_id&quot; value=&quot;&lt;!--{$tpl_order_id}--&gt;&quot;&gt;
↓↓↓↓
 28. &lt;input type=&quot;hidden&quot; name=&quot;order_id&quot; value=&quot;&lt;!--{$tpl_contact_id}--&gt;&quot;&gt;

Line142
 142. &lt;input type=&quot;button&quot; name=&quot;back&quot; value=&quot;検索結果へ戻る&quot; onclick=&quot;fnChangeAction(&#039;&lt;!--{$smarty.const.URL_SEARCH_ORDER}--&gt;&#039;); fnModeSubmit(&#039;search&#039;,&#039;&#039;,&#039;&#039;); return false;&quot; /&gt; 
↓↓↓↓
 142. &lt;input type=&quot;button&quot; name=&quot;back&quot; value=&quot;検索結果へ戻る&quot; onclick=&quot;fnChangeAction(&#039;contact.php&#039;); fnModeSubmit(&#039;&#039;,&#039;&#039;,&#039;&#039;); return false;&quot; /&gt;


/data/Smarty/templates/default/adin/customer/contact_re_mail.tpl
を新規作成。

#highlight(linenumber,php){{
お問合せ内容が挿入されます。
&lt;!--{$tpl_header}--&gt;
 
----------------------------------------------
 
■お問合せ日時：&lt;!--{$arrContact.create_date}--&gt;
 
■お問い合わせ内容
&lt;!--{$arrContact.message}--&gt;
 
----------------------------------------------
 
&lt;!--{$tpl_footer}--&gt;
}}

----

カスタマイズ結果はこんな感じです。

&amp;ref(mail.JPG)
&amp;ref(mail2.JPG)
&amp;ref(mail_view.JPG)    </description>
    <dc:date>2009-05-19T16:13:19+09:00</dc:date>
  </item>
  </rdf:RDF>

