フォノクラフト株式会社:作業メモや備忘録など » EC-CUBE 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] スマートフォンからのアクセスでPC用のページを表示させる http://121.50.42.205/note/ec-cube-%e3%82%b9%e3%83%9e%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%b3%e3%81%8b%e3%82%89%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%a7pc%e7%94%a8%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8_1409 http://121.50.42.205/note/ec-cube-%e3%82%b9%e3%83%9e%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%b3%e3%81%8b%e3%82%89%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%a7pc%e7%94%a8%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8_1409#comments Wed, 09 May 2012 02:58:37 +0000 admin http://phono.co.jp/note/?p=1409

あまり使い勝手の良くないスマホ専用画面

ブログに関してはスマホ専用サイトは見やすくて歓迎できるのですが、
ECサイトに関してはスマホ専用画面は使いづらい気がするので。

この辺りは個人的な見解の域を出ませんが、実装するなら下記の方法で可能。

ついでにガラケーからのアクセスは出来ない様にもしています。

対象

EC-CUBEバージョン

2.11.4

対象ファイル

/data/class/SC_Display.php

変更箇所

下記の3箇所を変更します。
(※ガラケーからのアクセスを許可する場合は(2)をスルーしてください。)

(1)109行目付近

$this->setView(new SC_SmartphoneView_Ex());
を↓
$this->setView(new SC_SiteView_Ex());
に変更

 

(2)143行目付近

return DEVICE_TYPE_MOBILE;
を↓
echo '
	<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>aconavi</title>
	<body>
	<center>
	<h1>○○○○</h1>
	</center>
	<hr/>
	<p>携帯電話からのアクセスは<br />Scope(スコープ)、Opera(オペラ)、jig(ジグ)等のフルブラウザをご使用ください。</p>
	<center>
	<p>[<a href="http://○○○○.co.jp/" target="_blank">http://○○○○.co.jp/</a>]</p>
	</center>
	<p>※フルブラウザとはパソコン向けに作られたWebサイトをそのまま閲覧できる、携帯電話など向けのWebブラウザです。</p>
	<hr/>
	<center>
	<p>Copyright &copy; 2005-2012<br />○○○○ All rights reserved. </p>
	</center>
	</body>
	</html>
';
exit;
に変更
(※『○○○○』の部分は任意に変更してください)

 

(3)145行目付近

return DEVICE_TYPE_SMARTPHONE;
を↓
return DEVICE_TYPE_PC; 
に変更

 

ダウンロード

バージョンが同じならこちらからダウンロードして /data/class/SC_Display.php に上書きしても大丈夫かと。

]]>
http://121.50.42.205/note/ec-cube-%e3%82%b9%e3%83%9e%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%b3%e3%81%8b%e3%82%89%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%a7pc%e7%94%a8%e3%81%ae%e3%83%9a%e3%83%bc%e3%82%b8_1409/feed 0
[ec-cube] 商品一覧を商品ID昇順に変更する http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e4%b8%80%e8%a6%a7%e3%82%92%e5%95%86%e5%93%81id%e6%98%87%e9%a0%86%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b_1399 http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e4%b8%80%e8%a6%a7%e3%82%92%e5%95%86%e5%93%81id%e6%98%87%e9%a0%86%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b_1399#comments Tue, 08 May 2012 02:27:14 +0000 admin http://phono.co.jp/note/?p=1399 対象

対象バージョン

EC-CUBE 2.11.4

対象ファイル

/data/class/pages/products/LC_Page_Products_List.php

副作用

管理画面『商品管理>商品並び替え』が正常に機能しなくなります。

変更箇所

変更前

275行目付近「lfGetProductsList」メソッド内の「default:」に注目。

$order = <<< __EOS__
                    (
                        SELECT
                             T3.rank
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY T3.rank DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC
                    ,(
                        SELECT
                            T2.rank
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY T3.rank DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC
                    ,product_id
__EOS__;

変更後

『T3.rank』を『product_id』で置換するだけ

$order = <<< __EOS__
                    (
                        SELECT
                             product_id
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY product_id DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC
                    ,(
                        SELECT
                            T2.rank
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY product_id DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC
                    ,product_id
__EOS__;
]]>
http://121.50.42.205/note/ec-cube-%e5%95%86%e5%93%81%e4%b8%80%e8%a6%a7%e3%82%92%e5%95%86%e5%93%81id%e6%98%87%e9%a0%86%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b_1399/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] ページ詳細設定から追加した新規ページのURLの「/user_data/」を排除する http://121.50.42.205/note/ec-cube-url%e3%81%ae%e3%80%8cuser_data%e3%80%8d%e3%82%92%e6%8e%92%e9%99%a4%e3%81%99%e3%82%8b_1297 http://121.50.42.205/note/ec-cube-url%e3%81%ae%e3%80%8cuser_data%e3%80%8d%e3%82%92%e6%8e%92%e9%99%a4%e3%81%99%e3%82%8b_1297#comments Sat, 28 Apr 2012 04:24:01 +0000 admin http://phono.co.jp/note/?p=1297 EC-CUBEの管理画面『デザイン管理 > PC > ページ詳細設定』で新規追加したページのURLを.htaccessで操作する。

1.「/user_data/」ディレクトリ排除

URLの「/user_data/」ディレクトリを排除するだけなら

.htaccessの記述

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9\-\_\.]+).php user_data/$1.php [L]

結果例

 http://○○○○.co.jp/user_data/test.php
 ↓
 http://○○○○.co.jp/test.php

2.任意のディレクトリ直下にあるように見せかける

URLの「/user_data/」ディレクトリを排除しつつ拡張子.phpを「/」に変えて、
任意のディレクトリ直下にある様に見せかける

.htaccessの記述

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9\-\_\.]+)/ user_data/$1.php [L]

結果例

 http://○○○○.co.jp/user_data/test.php
 ↓
 http://○○○○.co.jp/test/

ご注意

任意のディレクトリ直下にある様に見せかける場合には、
/products/、/cart/ 、/contact/ 、/abouts/、/order/、/guide/ 、/admin/ 等、
あらかじめ予約されているディレクトリ名は使わない様にしましょう。

また、正規表現で『 [a-z0-9\-\_\.] 』としていますが、
これはファイル名に「半角英数字」の他に「ハイフン(-)」「アンダーバー(_)」「ドット(.)」も認識する、
という事を意味しています。

]]>
http://121.50.42.205/note/ec-cube-url%e3%81%ae%e3%80%8cuser_data%e3%80%8d%e3%82%92%e6%8e%92%e9%99%a4%e3%81%99%e3%82%8b_1297/feed 0