月: 2008年12月

【EC-CUBE】入力欄の許可タグ

入力欄の許可タグ・・・

許可されてる種類が異様に少ない・・・

<li>は許可されて、<ol>とか<ul>入ってないって、どういうこと!?
<span>ないってどういうこと!?
<th>はあかんのか!?

・・・・・追加。

DBのmtb_allowed_tagに、追加したいタグのそれぞれ開始タグと終了タグを登録する。
PhpMyAdminでDBにアクセスして、mtb_allowed_tagを探してデータ編集。
IDとRANKは、データの一番後ろから連番で追加していくこと。

インストールのときから、増やしときたい場合は、インストールのところのプログラムをイジイジ。(とりあえず、今は、先にインストールされたEC-CUBEのカスタマイズのハナシなんで、こっちのハナシは一旦無視。)

登録できたら、/data/cache/の中の「mtb_allowed_tag.php」削除して、一応管理画面もログアウトしてから再ログイン。

これで、タグ許可の入力エリアに入力できるタグの種類が増えた♪

【EC-CUBE】ヘッダーにトップページだけメインビジュアルをででんと表示する

トップページに大きくメインビジュアルを表示させる場合(ホラ、あれよ、アレ。メインビジュアルどど~ん、ってやつよ。フラッシュとか。)site_main.tplやtop.tplにいれるとカラムの影響を受けてしまうので、header.tplへトップページの場合のみエリアを表示させる変更を入れることにする。

該当出力ページが、サイトのトップページ(/index.php)だったら、<div id=”mainvisual”></div>を表示。
それ以外だったら、この部分には何も表示しない。

<!–{if $smarty.server.PHP_SELF == “/index.php”}–>
<div id=”mainvisual”>(この中にフラッシュのソース他コンテンツを入れる)</div>
<!–{else}–><!–[if}–>

以上だす。

【EC-CUBE】携帯用詳細コメントを追加する

データベースに携帯用コメントカラムを追加し、商品登録時に、携帯用には別の詳細説明を登録し、PCサイトの説明と別にする。

  • データベースにカラム(フィールド)追加
  • 商品登録のPHPスクリプト追加
  • 管理画面の商品登録・確認テンプレートを修正
  • モバイル用詳細テンプレートを修正

その1)データベースへのカラム追加

phpMyAdminでDBへアクセスし、dtb_productsの最後へ1カラム追加。

カラム名「comment7」
データ型「text」

※残りのフィールドは先のデータを参照。

その2)商品登録PHPの修正。

/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Product_Ex.php

/data/class/pages/admin/products/LC_Page_Admin_Products_Product.phpからlfRegistProduct関数 (=商品登録関数)をコピー(L387~L493:ver.2.3.2の場合)し、LC_Page_Admin_Products_Product_Ex.phpの「デストラクタ」の下(L68:ver.2.3.2の場合※最後の「}」の手前へ。)へ貼り付け。
ソースを一部編集する。

貼り付けたソースのL78あたりにcomment7(=携帯用コメント)を追加。

 “comment4”, “comment5”, “comment6”, “comment7”, “main_list_comment”,

L97あたりにも1行追加。

$sqlval[‘comment7’] = $arrList[‘comment7’];

LC_Page_Admin_Products_Product.phpからLC_Page_Admin_Products_Product_Ex.phpへ、lfErrorCheck関数もコピー。(L546~L609:ver.2.3.2の場合)
lfRegistProduct関数の下に貼り付け。

貼り付けたソースのL183あたり
$objErr->doFunc(array(“詳細-メインコメント”, “main_comment”, $this->arrAllowedTag), array(“HTML_TAG_CHECK”));
の下に2行追加。

$objErr->doFunc(array(“携帯用詳細コメント”, “comment7”, LLTEXT_LEN), array(“SPTAB_CHECK”, “MAX_LENGTH_CHECK”));
$objErr->doFunc(array(“携帯用詳細コメント”, “comment7”, $this->arrAllowedTag), array(“HTML_TAG_CHECK”));

その3)MySql用にデータの読み込みコードを追加

これをやらないと、再編集するときに、登録画面に以前に登録したデータが読み込まれない;

/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php (L304あたり:ver.2.3.3の場合)

「T1.comment6,」の下に1行追加し、「T1.comment7,」。

その4)データ登録用ADMINテンプレートの編集。

商品登録画面のテンプレートへ携帯用情報登録フォームのコード追加。

/data/Smarty/templates/default/admin/products/product.tpl (L243あたり、詳細-メインコメントのTD中へ。)

 <br><br>
 <div class=”center”>
  <input type=”button” name=”btn” onclick=”selectAll(‘category_id’); lfDispSwitch(‘mobile_detail’);” value=”モバイル専用詳細コメント表示/非表示”>
 </div>
 <div id=”mobile_detail” style=”<!–{if !$arrForm.comment7}–>display:none<!–{/if}–>”>
  <p>
  PCと携帯で異なる詳細コメントを表示する際には以下のフォームに携帯サイト用のコメントを入力して下さい。<br />
  入力されなかった場合は、PCサイトと同じ詳細コメント↑を表示します。<br />
  </p>
  <textarea name=”comment7″ id=”comment7″ value=”<!–{$arrForm.comment7|escape}–>” maxlength=”<!–{$smarty.const.LLTEXT_LEN}–>” style=”<!–{if $arrErr.comment7 != “”}–>background-color: <!–{$smarty.const.ERR_COLOR}–><!–{/if}–>”  cols=”60″ rows=”8″ class=”area60″><!–{$arrForm.comment7|escape}–></textarea><br /><span class=”red”> (上限<!–{$smarty.const.LLTEXT_LEN}–>文字)</span>

確認画面は、携帯用コメントを入力した場合のみ表示されるようにコードを追加。

/data/Smarty/templates/default/admin/products/confirm.tpl (L183あたり、詳細-メインコメントの/TRの後ろへ。)

<!–{if $arrForm.comment7}–>
<tr>
 <td bgcolor=”#f2f1ec” width=”160″ class=”fs12n”>モバイル詳細コメント</td>
 <td bgcolor=”#ffffff” width=”557″ class=”fs12n”>
 <!–{$arrForm.comment7|nl2br}–>
 </td>
</tr>
<!–{/if}–>

その5)モバイルサイトの表示テンプレートを編集。

/data/Smarty/templates/default/mobile/products/detail.tpl (L39あたり。詳細メインコメントの表示を変更。)

<!–{$arrProduct.main_comment|nl2br}–>

↓下記に変更。

<!–{if !$arrProduct.comment7}–><!–{$arrProduct.main_comment|nl2br}–><!–{else}–><!–{$arrProduct.comment7|nl2br}–><!–{/if}–>

携帯専用のコメントがある場合は、それを表示し、ない場合は、PC用のコメントを共用で表示する。

参考:http://www.eccube-school.jp/products/detail40.html
※DBがポスグレの場合は、上記手順と少し違うため、こちらのサイトを参照のこと。

【EC-CUBE】お問い合わせの項目を追加する(お問い合わせタイトルの選択追加)

EC-CUBEのお問い合わせでお問い合わせ内容の区分によってタイトルを選択する仕様を追加。

同様の応用で項目の追加もできる。(多分タイトル追加よりは少し簡単)

  • お問い合わせフォームでタイトル(お問い合わせカテゴリー)を選択してもらい、
  • 受付確認メールのタイトルにそのお問い合わせタイトルを表示し、
  • メールの中にもタイトルを表記する
  • タイトルは必須チェックはかけない。(かけてもいいけどとりあえず要らない;)

という処理でやってみる。

その1)お問い合わせフォームのテンプレートに選択フィールドを追加。

/data/Smarty/templates/default/contact/index.tpl (L37あたり:ver.2.3.2)

<tr>
<th>タイトル</th>
<td><select name=”contacttitle” value=”<!–{$contacttitle|default:$arrData.contacttitle|escape}–>” style=”<!–{$arrErr.contacttitle|sfGetErrorColor}–>”>
<option value=””>タイトルを選択</option>
<option label=”●●に関するお問い合わせ” value=”●●に関するお問い合わせ”>●●に関するお問い合わせ</option>
<option label=”▲▲に関するお問い合わせ” value=”▲▲に関するお問い合わせ”>▲▲に関するお問い合わせ</option>
<option label=”その他のお問い合わせ” value=”その他のお問い合わせ”>その他のお問い合わせ</option>
</select></td>
</tr>

/data/Smarty/templates/default/contact/confirm.tpl (L38あたり)

<tr>
<th>タイトル</th>
<td><!–{$arrForm.contacttitle|escape}–></td>
</tr>

その2)メールのテンプレートの本文中にも項目を追加。(※本文中には不要な場合は省略)

/data/Smarty/templates/default/mail_templates/contact_mail.tpl (L41あたり)

■タイトル:<!–{$arrForm.contacttitle}–>

その3)LC_Page_Contact.phpのコードの修正・追加

/data/class/pages/contact/LC_Page_Contact.php

(L79あたり)コード追加。

array( “column” => “contacttitle”, “convert” => “aKV” ),

(L258あたり)コード追加。(お客様送信メール用のタイトルをセット)

$fromMail_title = $objPage->arrForm[‘contacttitle’];

(L261あたり)同じコード追加。(自分送信メール用のタイトルをセット)

$fromMail_title = $objPage->arrForm[‘contacttitle’];

(L263あたり)コード変更。

$subject = $helperMail->sfMakeSubject($objQuery, $objMailText, $this, “お問い合わせがありました。”);

これを↓

$subject = $helperMail->sfMakeSubject($objQuery, $objMailText, $this, $fromMail_title);

(L276あたり)コード変更。

$subject = $helperMail->sfMakeSubject($objQuery, $objMailText, $this, “お問い合わせを受け付けました。”);

これを↓

$subject = $helperMail->sfMakeSubject($objQuery, $objMailText, $this, $fromMail_title);

その他)

/data/Smarty/templates/default/contact/mail_title.tpl

L24あたり。
→【 】内へショップネームが入るようになっている。その後上記のタイトルが入ります。変更が必要であればここも変える。但し、これはサイト全体の設定になるため、注文メールなども同様の設定になるので注意。