フォノクラフト株式会社:作業メモや備忘録など » Smarty http://121.50.42.205/note 作業メモや備忘録など... Fri, 05 Jul 2013 05:17:27 +0000 ja hourly 1 http://wordpress.org/?v=3.1.3 [ec-cube] 通常価格と販売価格が違う場合は「○○%OFF」の表示する http://121.50.42.205/note/ec-cube-%e9%80%9a%e5%b8%b8%e4%be%a1%e6%a0%bc%e3%81%a8%e8%b2%a9%e5%a3%b2%e4%be%a1%e6%a0%bc%e3%81%8c%e9%81%95%e3%81%86%e5%a0%b4%e5%90%88%e3%81%af%e3%80%8c%e2%97%8b%e2%97%8boff%e3%80%8d%e3%81%ae_1597 http://121.50.42.205/note/ec-cube-%e9%80%9a%e5%b8%b8%e4%be%a1%e6%a0%bc%e3%81%a8%e8%b2%a9%e5%a3%b2%e4%be%a1%e6%a0%bc%e3%81%8c%e9%81%95%e3%81%86%e5%a0%b4%e5%90%88%e3%81%af%e3%80%8c%e2%97%8b%e2%97%8boff%e3%80%8d%e3%81%ae_1597#comments Tue, 08 Jan 2013 10:09:22 +0000 admin http://phono.co.jp/note/?p=1597 通常価格と販売価格が違う場合は「○○%OFF」の表示する

毎度のことながらコアファイルはイジらずにテンプレートだけで処理します。

基本的になロジックは

■販売価格と通常価格が同じ金額であれば、
 通常価格は表示せず、販売価格だけの表示になります。

■販売価格と通常価格が違う金額であれば、
 打ち消し線を入れた通常価格と「○○%OFF」を表示させます。
 ついでに、販売価格も赤字のボールド文字にします。

「○○%OFF」の表記は
100 – (販売価格 ÷ 通常価格 × 100) =○○%OFF』(※小数点以下は四捨五入で切り上げ)
という計算で自動で出しています。

やってみる

/data/Smarty/templates/default/products/detail.tpl
の価格表示部分だけ抜粋します。

<!--{if $arrProduct.price01_min == $arrProduct.price02_min}-->

  <!--{if $arrProduct.price01_max > 0}-->
    <tr>
      <td style="white-space: nowrap;width:1%;">販売価格:&nbsp;&nbsp;</td>
      <td>
          <!-- 販売価格 -->
            <!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
                <!--{$arrProduct.price02_min|number_format}-->円 (税込<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円)
            <!--{else}-->
                <!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円
            <!--{/if}-->
          <!-- /販売価格 -->
      </td>
    </tr>
  <!--{/if}-->

<!--{else}-->

    <tr>
      <td style="white-space: nowrap;width:1%;line-height: 180%;vertical-align:top;">通常価格&nbsp;&nbsp;</td>
      <td style="line-height: 180%;">

            <!--{php}-->
            //OFF値表示の計算
            $arrProduct = $this->get_template_vars('arrProduct');
            $OffPrice1 = "" . 100-($arrProduct[price02_min]/$arrProduct[price01_min]*100) . "";
            $OffPrice2 = "" . 100-($arrProduct[price02_max]/$arrProduct[price01_max]*100) . "";
            $this->assign('OffPrice1',$OffPrice1);
            $this->assign('OffPrice2',$OffPrice2);
            <!--{/php}-->

            <!-- 通常価格 -->
              <!--{if $arrProduct.price01_min == $arrProduct.price01_max}-->
                  <s><!--{$arrProduct.price01_min|number_format}--></s>円 
                  <span style="color:#993300;font-weight:bold;">▼<!--{$OffPrice1|round:0}-->% OFF</span>
              <!--{else}-->
                  <s><!--{$arrProduct.price01_min|number_format}-->〜<!--{$arrProduct.price01_max|number_format}--></s>円<br />
                  <span style="color:#993300;font-weight:bold;">▼Max<!--{$OffPrice2|round:0}-->% OFF</span>
              <!--{/if}-->
            <!-- /通常価格 -->
      </td>
    </tr>
    
    <!--{if $arrProduct.price01_max > 0}-->
      <tr>
        <td style="white-space: nowrap;width:1%;">販売価格:&nbsp;&nbsp;</td>
        <td>
            <!-- 販売価格 -->
            
              <!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
                  <span style="color:#993300;font-weight:bold;font-size:12px;"><!--{$arrProduct.price02_min|number_format}-->円</span> (税込<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円)
              <!--{else}-->
                  <span style="color:#993300;font-weight:bold;font-size:12px;"><!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円</span>
              <!--{/if}-->
            
            <!-- /販売価格 -->
        </td>
      </tr>
    <!--{/if}-->

<!--{/if}-->
]]>
http://121.50.42.205/note/ec-cube-%e9%80%9a%e5%b8%b8%e4%be%a1%e6%a0%bc%e3%81%a8%e8%b2%a9%e5%a3%b2%e4%be%a1%e6%a0%bc%e3%81%8c%e9%81%95%e3%81%86%e5%a0%b4%e5%90%88%e3%81%af%e3%80%8c%e2%97%8b%e2%97%8boff%e3%80%8d%e3%81%ae_1597/feed 0
[ec-cube] 商品詳細の説明文『詳細-メインコメント』を外部ファイル化する http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e8%aa%ac%e6%98%8e%e6%96%87%e3%80%8e%e8%a9%b3%e7%b4%b0-%e3%83%a1%e3%82%a4%e3%83%b3%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e3%80%8f%e3%82%92%e5%a4%96_1436 http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e8%aa%ac%e6%98%8e%e6%96%87%e3%80%8e%e8%a9%b3%e7%b4%b0-%e3%83%a1%e3%82%a4%e3%83%b3%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e3%80%8f%e3%82%92%e5%a4%96_1436#comments Sat, 12 May 2012 03:03:51 +0000 admin http://phono.co.jp/note/?p=1436 なにがしかの理由で同じ商品が多く存在する場合には、商品の説明文を外部ファイル化してインクルードしてしまうのが得策。

やってみる

まずは
/data/Smarty/templates/default/products/detail.tpl

<!--{$arrProduct.main_comment|nl2br_html}-->

を↓

<!--{eval var=$arrProduct.main_comment}-->

に置き換える。

次にインクルードするファイルを用意して右図のように『詳細-メインコメント』に下記をペースト。
(※ このサンプルでは /user_data/packages/default/html/ に test.php というファイルを作成しています)

<!--{php}-->
include "../user_data/packages/default/html/test.php";
<!--{/php}-->
]]>
http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e8%aa%ac%e6%98%8e%e6%96%87%e3%80%8e%e8%a9%b3%e7%b4%b0-%e3%83%a1%e3%82%a4%e3%83%b3%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e3%80%8f%e3%82%92%e5%a4%96_1436/feed 0
[ec-cube] 商品詳細のサブ情報を1〜5番目それぞれでデザインを変える。 http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e3%82%b5%e3%83%96%e6%83%85%e5%a0%b1%e3%82%921%e3%80%9c5%e3%81%9d%e3%82%8c%e3%81%9e%e3%82%8c%e3%81%a7%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3_1383 http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e3%82%b5%e3%83%96%e6%83%85%e5%a0%b1%e3%82%921%e3%80%9c5%e3%81%9d%e3%82%8c%e3%81%9e%e3%82%8c%e3%81%a7%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3_1383#comments Mon, 07 May 2012 11:56:27 +0000 admin http://phono.co.jp/note/?p=1383

参考迄に商品詳細の
『詳細-サブコメント(4)』
『詳細-サブコメント(5)』
の項目を使ってレイアウトを変えてみる。

対象ファイル

/data/Smarty/templates/default/products/detail.php

サンプルソース

何番目のサブ情報かを知る手立てとして $smarty.section.cnt.index+1 を使っています。
以下、殴り書きのメモでごめんなさい。

	  <!--▼サブコメント-->
    <!--{section name=cnt loop=$smarty.const.PRODUCTSUB_MAX}-->

        <!--{assign var=key value="sub_title`$smarty.section.cnt.index+1`"}-->

            <div class="sub_area clearfix">
                <!--▼サブ画像-->
                <!--{assign var=ckey value="sub_comment`$smarty.section.cnt.index+1`"}-->
                <!--{assign var=key value="sub_image`$smarty.section.cnt.index+1`"}-->
                <!--{assign var=lkey value="sub_large_image`$smarty.section.cnt.index+1`"}-->
                <!--{assign var=tkey value="sub_title`$smarty.section.cnt.index+1`"}-->
                
                <!--{if $arrProduct[$key]|strlen >= 1}-->
                    <div class="subtext">
                        <!--サブタイトル-->
                        <h5><!--{$arrProduct[$tkey]|h}--></h5>
                        <!-- サブテキスト -->
                        <!--{$arrProduct[$ckey]|nl2br_html}-->
                    </div>
                    <div class="subphotoimg">
                        <img src="/resize_image.php?image=<!--{$arrProduct[$lkey]|h}-->&amp;width=140&amp;height=1200" /><br />
                    </div>
                <!--{else}-->
			<!--{if $arrProduct[$ckey] != ""}-->
				<!--{if $smarty.section.cnt.index+1 == "4"}-->
					<h5 class="title_detail">4番目のタイトル</h5>
					<p>
					<!-- 4番目のサブテキスト -->
					<!--{$arrProduct[$ckey]|nl2br_html}-->
					</p>
				<!--{/if}-->
				<!--{if $smarty.section.cnt.index+1 == "5"}-->
					<h5 class="title_detail">5番目のタイトル</h5>
					<p>
					<!-- 5番目のサブテキスト -->
					<!--{$arrProduct[$ckey]|nl2br_html}-->
					</p>
				<!--{/if}-->
			<!--{/if}-->
                <!--{/if}-->
                <!--▲サブ画像-->
            </div>

    <!--{/section}-->
    <!--▲サブコメント-->

]]>
http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e8%a9%b3%e7%b4%b0%e3%81%ae%e3%82%b5%e3%83%96%e6%83%85%e5%a0%b1%e3%82%921%e3%80%9c5%e3%81%9d%e3%82%8c%e3%81%9e%e3%82%8c%e3%81%a7%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3_1383/feed 0
[ec-cube] $_GET, $_POST , $_SESSION の値を表示 http://121.50.42.205/note/ec-cube-_get-_post-_session-%e3%81%ae%e5%80%a4%e3%82%92%e8%a1%a8%e7%a4%ba_1373 http://121.50.42.205/note/ec-cube-_get-_post-_session-%e3%81%ae%e5%80%a4%e3%82%92%e8%a1%a8%e7%a4%ba_1373#comments Wed, 02 May 2012 07:21:04 +0000 admin http://phono.co.jp/note/?p=1373 $_GET, $_POST , $_SESSION の値を表示させる

いろんなやり方がありますが、テンプレートファイル(.tpl)に記述してみるやり方で。

/data/Smarty/templates/default/site_main.tpl の一番下あたりに下記をコピペします。

<div style="background:#ffffcc;padding:10px;text-align:left;">
<h3>【$_GET, $_POST , $_SESSION】</h3>
<!--{php}-->
var_dump($_SERVER, $_GET, $_POST , $_SESSION);
<!--{/php}-->
</div>
]]>
http://121.50.42.205/note/ec-cube-_get-_post-_session-%e3%81%ae%e5%80%a4%e3%82%92%e8%a1%a8%e7%a4%ba_1373/feed 0
[ec-cube] カンマ区切りで入力されている文字列を分解して表示する http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%b3%e3%83%9e%e5%8c%ba%e5%88%87%e3%82%8a%e3%81%a7%e5%85%a5%e5%8a%9b%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e5%88%86%e8%a7%a3%e3%81%97_1344 http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%b3%e3%83%9e%e5%8c%ba%e5%88%87%e3%82%8a%e3%81%a7%e5%85%a5%e5%8a%9b%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e5%88%86%e8%a7%a3%e3%81%97_1344#comments Wed, 02 May 2012 03:19:02 +0000 admin http://phono.co.jp/note/?p=1344

カンマ区切りで入力されている値を展開

今回はカンマ区切りで入力されている『検索ワード』を展開してみます。

本来はclassファイルで定義してテンプレート側で展開するのが筋ですが、面倒なのでテンプレートファイルでphpを実行出来る様にして対応してみます。

対象ファイル

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

まずはこのソースを list.tpl のループ内に貼付けて確認してみましょう。
(<!–★商品名★–>の下あたりがいいかな。)

<h2>キーワード</h2>
<h3>カンマで分解する前</h3>
<!--{$arrProduct.comment3}--><br />

<h3>カンマで分解した後</h3>
<!--{php}-->
$arrProduct = $this->get_template_vars('arrProduct');
list($kw01,$kw02,$kw03,$kw04,$kw05)=explode(",", $arrProduct[comment3] );
$this->assign('kw01',$kw01);
$this->assign('kw02',$kw02);
$this->assign('kw03',$kw03);
$this->assign('kw04',$kw04);
$this->assign('kw05',$kw05);
<!--{/php}-->
<b>キーワード1</b>:<!--{$kw01}--><br />
<b>キーワード2</b>:<!--{$kw02}--><br />
<b>キーワード3</b>:<!--{$kw03}--><br />
<b>キーワード4</b>:<!--{$kw04}--><br />
<b>キーワード5</b>:<!--{$kw05}--><br />

解説的な。

展開するのはこれ(『検索キーワード』=comment3)

<!--{$arrProduct.comment3}-->

カンマ区切りで分解する処理を入れる

<!--{php}-->
//まずは、テンプレート内で使うphpにSmarty変数をセット出来る様にする
$arrProduct = $this->get_template_vars('arrProduct');

//一応、表示されるか確認
print_r($arrProduct[comment3]);

//カンマで区切りで分解し変数にいれます
list($kw01,$kw02,$kw03,$kw04,$kw05)=explode(",", $arrProduct[comment3] );

//分解出来た所で、Smarty変数に割り当てます
$this->assign('kw01',$kw01);
$this->assign('kw02',$kw02);
$this->assign('kw03',$kw03);
$this->assign('kw04',$kw04);
$this->assign('kw05',$kw05);
//$this->assign('kw○○○○',$kw○○○○); ←キーワードが多い場合はどんどん追記していく。
<!--{/php}-->

表示する

<b>キーワード1</b>:<!--{$kw01}-->;<br />
<b>キーワード2</b>:<!--{$kw02}-->;<br />
<b>キーワード3</b>:<!--{$kw03}-->;<br />
<b>キーワード4</b>:<!--{$kw04}-->;<br />
<b>キーワード5</b>:<!--{$kw05}-->;<br />
]]>
http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%b3%e3%83%9e%e5%8c%ba%e5%88%87%e3%82%8a%e3%81%a7%e5%85%a5%e5%8a%9b%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e5%88%86%e8%a7%a3%e3%81%97_1344/feed 0
[ec-cube] 検索のプルダウンを固定にする http://121.50.42.205/note/ec-cube-%e6%a4%9c%e7%b4%a2%e3%81%ae%e3%83%97%e3%83%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%82%92%e5%9b%ba%e5%ae%9a%e3%81%ab%e3%81%99%e3%82%8b_1334 http://121.50.42.205/note/ec-cube-%e6%a4%9c%e7%b4%a2%e3%81%ae%e3%83%97%e3%83%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%82%92%e5%9b%ba%e5%ae%9a%e3%81%ab%e3%81%99%e3%82%8b_1334#comments Mon, 30 Apr 2012 00:54:05 +0000 admin http://phono.co.jp/note/?p=1334

テンプレート(.tpl)ファイルで簡単に対応します。

特定のカテゴリを検索プルダウンから排除する際に有用。
selected状態を維持することも忘れてはいけません。

対象ファイル

/htdocs/data/Smarty/templates/default/frontparts/bloc/search_products.tpl

サンプルソース

変更前

<option label="すべての商品" value="">全ての商品</option>
<!--{html_options options=$arrCatList selected=$category_id}-->

変更後

<option label="すべての商品" value="">全ての商品</option>
<option<!--{if $category_id[0]==1}--> selected="selected"<!--{/if}--> label="カテゴリ1" value="1">カテゴリ1</option>
<option<!--{if $category_id[0]==2}--> selected="selected"<!--{/if}--> label="カテゴリ2" value="2">カテゴリ2</option>
<option<!--{if $category_id[0]==3}--> selected="selected"<!--{/if}--> label="カテゴリ3" value="3">カテゴリ3</option>
<option<!--{if $category_id[0]==4}--> selected="selected"<!--{/if}--> label="カテゴリ4" value="4">カテゴリ4</option>
<option<!--{if $category_id[0]==5}--> selected="selected"<!--{/if}--> label="カテゴリ5" value="5">カテゴリ5</option>
<option<!--{if $category_id[0]==6}--> selected="selected"<!--{/if}--> label="カテゴリ6" value="6">カテゴリ6</option>
]]>
http://121.50.42.205/note/ec-cube-%e6%a4%9c%e7%b4%a2%e3%81%ae%e3%83%97%e3%83%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%82%92%e5%9b%ba%e5%ae%9a%e3%81%ab%e3%81%99%e3%82%8b_1334/feed 0
[ec-cube] 一覧の表示件数切り換えをテキストリンクに変更する http://121.50.42.205/note/ec-cube-%e4%b8%80%e8%a6%a7%e3%81%ae%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e5%88%87%e3%82%8a%e6%8f%9b%e3%81%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%aa%e3%83%b3%e3%82%af%e3%81%ab%e5%a4%89_1319 http://121.50.42.205/note/ec-cube-%e4%b8%80%e8%a6%a7%e3%81%ae%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e5%88%87%e3%82%8a%e6%8f%9b%e3%81%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%aa%e3%83%b3%e3%82%af%e3%81%ab%e5%a4%89_1319#comments Sun, 29 Apr 2012 22:26:21 +0000 admin http://phono.co.jp/note/?p=1319

使い勝手の向上を目指します。

表示件数の選択が<select>タグなのが使いにくいので<a>タグに変更してみます。

変更後はonclickでrel属性を使う様にしていますが、name属性等でもよいかと思います。

対象ファイル

/htdocs/data/Smarty/templates/default/products/list.php

サンプルソース

変更前

                <select name="disp_number" onchange="javascript:fnChangeDispNumber(this.value);">
                    <!--{foreach from=$arrPRODUCTLISTMAX item="dispnum" key="num"}-->
                        <!--{if $num == $disp_number}-->
                            <option value="<!--{$num}-->" selected="selected" ><!--{$dispnum}--></option>
                        <!--{else}-->
                            <option value="<!--{$num}-->" ><!--{$dispnum}--></option>
                        <!--{/if}-->
                    <!--{/foreach}-->
                </select>

変更後


                    <!--{foreach from=$arrPRODUCTLISTMAX item="dispnum" key="num"}-->
                        <!--{if $num == $disp_number}-->
                            <b><!--{$dispnum}--></b>
                        <!--{else}-->
                            <a href="#" rel="<!--{$num}-->" value="<!--{$num}-->" onclick="javascript:fnChangeDispNumber(this.rel);"><!--{$dispnum}--></a>
                        <!--{/if}-->
                    <!--{/foreach}-->

]]>
http://121.50.42.205/note/ec-cube-%e4%b8%80%e8%a6%a7%e3%81%ae%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e5%88%87%e3%82%8a%e6%8f%9b%e3%81%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%aa%e3%83%b3%e3%82%af%e3%81%ab%e5%a4%89_1319/feed 0
[ec-cube] カテゴリ毎に表示を切り替える http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e6%af%8e%e3%81%ab%e8%a1%a8%e7%a4%ba%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%82%8b_1284 http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e6%af%8e%e3%81%ab%e8%a1%a8%e7%a4%ba%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%82%8b_1284#comments Tue, 24 Apr 2012 08:53:02 +0000 admin http://phono.co.jp/note/?p=1284 /htdocs/data/Smarty/templates/default/products/list.tpl あたりで下記を。

分岐例(1)

<!--{if $arrSearchData.category_id == 1}-->
カテゴリ1の場合に表示する内容
<!--{elseif $arrSearchData.category_id == 2}-->
カテゴリ2の場合に表示する内容
<!--{elseif $arrSearchData.category_id == 3}-->
カテゴリ3の場合に表示する内容
<!--{elseif $arrSearchData.category_id == 4}-->
カテゴリ4の場合に表示する内容
<!--{elseif $arrSearchData.category_id == 5}-->
カテゴリ5の場合に表示する内容
<!--{elseif $arrSearchData.category_id == 6}-->
カテゴリ6の場合に表示する内容
<!--{else}-->
<!--{/if}-->

分岐例(2)

<!--{if $arrSearchData.category_id == 1}-->
カテゴリ1の場合に表示する内容
<!--{/if}-->
]]>
http://121.50.42.205/note/ec-cube-%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e6%af%8e%e3%81%ab%e8%a1%a8%e7%a4%ba%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%82%8b_1284/feed 0
[ec-cube] PCからの会員登録フォームに携帯メアドを追加する http://121.50.42.205/note/ec-cube-pc%e3%81%8b%e3%82%89%e3%81%ae%e4%bc%9a%e5%93%a1%e7%99%bb%e9%8c%b2%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ab%e6%90%ba%e5%b8%af%e3%83%a1%e3%82%a2%e3%83%89%e3%82%92%e8%bf%bd%e5%8a%a0_1090 http://121.50.42.205/note/ec-cube-pc%e3%81%8b%e3%82%89%e3%81%ae%e4%bc%9a%e5%93%a1%e7%99%bb%e9%8c%b2%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ab%e6%90%ba%e5%b8%af%e3%83%a1%e3%82%a2%e3%83%89%e3%82%92%e8%bf%bd%e5%8a%a0_1090#comments Mon, 27 Feb 2012 13:31:24 +0000 admin http://phono.co.jp/note/?p=1090

EC-CUBEのバージョンは2.11.4です。

Classに追加

/data/class/helper/SC_Helper_Customer.php

400行目付近、黄色背景の2行を追加する

        if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE){
            $objFormParam->addParam("FAX番号1", 'fax01', TEL_ITEM_LEN, 'n', array("SPTAB_CHECK"));
            $objFormParam->addParam("FAX番号2", 'fax02', TEL_ITEM_LEN, 'n', array("SPTAB_CHECK"));
            $objFormParam->addParam("FAX番号3", 'fax03', TEL_ITEM_LEN, 'n', array("SPTAB_CHECK"));
            $objFormParam->addParam('メールアドレス', 'email', null, 'a', array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK"));
            $objFormParam->addParam('携帯メールアドレス', 'email_mobile', null, 'a', array("NO_SPTAB", "MOBILE_EMAIL_CHECK", "SPTAB_CHECK" ,"MOBILE_EMAIL_CHECK"));// ←これを追加

            if(!$isAdmin) {
                $objFormParam->addParam("パスワード(確認)", 'password02', STEXT_LEN, 'a', array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"), "", false);
                $objFormParam->addParam('メールアドレス(確認)', "email02", null, 'a', array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK"), "", false);
            }
        } else {
                $objFormParam->addParam('携帯メールアドレス', 'email_mobile', null, 'a', array("NO_SPTAB", "MOBILE_EMAIL_CHECK", "SPTAB_CHECK" ,"MOBILE_EMAIL_CHECK"));// ←これを追加
            if (!$is_mypage) {
                $objFormParam->addParam('メールアドレス', 'email', null, 'a', array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MOBILE_EMAIL_CHECK"));
            }
        }

テンプレートも少し手を加える

入力画面:/data/Smarty/templates/default/frontparts/form_personal_input.tpl

黄色背景の行を追加、または削除する

<!–{if $emailMobile}–>の括りを削除して「携帯メールアドレス」の箇所が表示出来る様にする

    <!--{if $emailMobile}-->
        <tr>
            <th>携帯メールアドレス</th>
            <td>
                <!--{assign var=key1 value="`$prefix`email_mobile"}-->
                <!--{assign var=key2 value="`$prefix`email_mobile02"}-->
                <!--{if $arrErr[$key1] || $arrErr[$key2]}-->
                <div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
                <!--{/if}-->
                <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1]|h}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->; ime-mode: disabled;" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" class="box300 top" /><br />
                <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2]|h}-->" style="<!--{$arrErr[$key1]|cat:$arrErr[$key2]|sfGetErrorColor}-->; ime-mode: disabled;" maxlength="<!--{$smarty.const.MTEXT_LEN}-->" class="box300" /><br />
                <span class="attention mini">確認のため2度入力してください。</span>
            </td>
        </tr>
    <!--{/if}-->

確認画面:/data/Smarty/templates/default/entry/confirm.tpl

以下を適当な箇所に追加する

<tr>
	<th>携帯メールアドレス</th>
	<td>
		<!--{if strlen($arrForm.email_mobile) > 0}-->
		<a href="<!--{$arrForm.email_mobile|escape:'hex'}-->"><!--{$arrForm.email_mobile|escape:'hexentity'}--></a>
		<!--{else}-->
		(未登録)
		<!--{/if}-->
	</td>
</tr> 

出来たかどうか確認

会員登録フォームに出て来たら実際に登録してみて、DBを直接の覗くか、MYページの情報変更画面からも確認できる。

]]>
http://121.50.42.205/note/ec-cube-pc%e3%81%8b%e3%82%89%e3%81%ae%e4%bc%9a%e5%93%a1%e7%99%bb%e9%8c%b2%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ab%e6%90%ba%e5%b8%af%e3%83%a1%e3%82%a2%e3%83%89%e3%82%92%e8%bf%bd%e5%8a%a0_1090/feed 0
[ec-cube] 2.11系で.tplファイルを直接呼び出す http://121.50.42.205/note/ec-cube-2-11%e7%b3%bb%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%83%91%e3%82%b9%e4%b8%80%e8%a6%a7_1064 http://121.50.42.205/note/ec-cube-2-11%e7%b3%bb%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%83%91%e3%82%b9%e4%b8%80%e8%a6%a7_1064#comments Thu, 23 Feb 2012 14:44:34 +0000 admin http://phono.co.jp/note/?p=1064

.tplファイルからブロックを直接呼び出す

右図のように新規作成したブロックをテンプレートファイル(○○○○.tpl)から直接呼び出す場合も以下の様なコードを使う。

EC-CUBEのバージョンは2.11.4です。

<!--{include_php file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/recommend_pc.tpl"}-->

参考:パス関連のSmartyタグ一覧

EC-CUBEはVer2.11以降は内部構造も変更があり、それに共なってSmartyタグも幾つか変更されている。

<!--{$TPL_URLPATH}-->
/html/user_data/packages/default/

<!--{$smarty.const.USER_TEMPLATE_REALDIR}-->
html/user_data/packages/

<!--{$smarty.const.TOP_URLPATH}-->
/html/

<!--{$smarty.const.ROOT_URLPATH}-->
/html/

<!--{$smarty.const.HTML_REALDIR}-->
/html/

<!--{$smarty.const.HTTPS_URL}-->
https:/ /ドメイン

<!--{$smarty.const.P_DETAIL_URLPATH}-->
/html/products/detail.php?product_id=

<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->
/html/upload/save_image/

<!--{$smarty.const.DATA_REALDIR}-->
/data/

<!--{$smarty.const.CLASS_REALDIR}-->
/data/class/

<!--{$smarty.const.CLASS_EX_REALDIR}-->
/data/class_extends/

<!--{$smarty.const.TEMPLATE_REALDIR}-->
/data/Smarty/templates/default/

<!--{$smarty.const.TEMPLATE_ADMIN_REALDIR}-->
data/Smarty/templates/admin/

<!--{$smarty.const.TEMPLATE_TEMP_REALDIR}-->
html/upload/temp_template/

<!--{$smarty.const.GRAPH_URLPATH}-->
/html/upload/graph_image/

<!--{$smarty.const.IMAGE_TEMP_URLPATH}-->
/html/upload/temp_image/

<!--{$smarty.const.CART_URLPATH}-->
/html/cart/

<!--{$smarty.const.ADMIN_LOGIN_URLPATH}-->
/html/shopmng/

<!--{$smarty.const.ADMIN_SYSTEM_URLPATH}-->
/html/shopmng/system/

<!--{$smarty.const.ADMIN_PRODUCTS_URLPATH}-->
/html/shopmng/products/

<!--{$smarty.const.ADMIN_ORDER_URLPATH}-->
/html/shopmng/order/

<!--{$smarty.const.MOBILE_IMAGE_URLPATH}-->
/html/upload/mobile_image/

<!--{$smarty.const.MOBILE_TOP_URLPATH}-->
/html/

<!--{$smarty.const.MOBILE_CART_URLPATH}-->
/html/cart/

<!--{$smarty.const.MOBILE_P_DETAIL_URLPATH}-->
/html/products/detail.php?product_id=
]]>
http://121.50.42.205/note/ec-cube-2-11%e7%b3%bb%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%83%91%e3%82%b9%e4%b8%80%e8%a6%a7_1064/feed 0