バージョン選択

フォーラム

メニュー

オンライン状況

45 人のユーザが現在オンラインです。 (27 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 45
もっと...

サイト内検索

質問 > フロント機能 > 商品検索ブロックの複合検索

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
by0448
投稿日時: 2013/5/22 12:01
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
商品検索ブロックの複合検索
いつもお世話いただいております。

商品検索ブロックで特定のカテゴリのみ数種類設置し、それに対して複合検索機能を追加しました。

しかし、2ページ目から検索結果を引き継がなくなってしまったのですが、こちらにはどういったカスタマイズを施せばよいのでしょうか。

以下が検索ブロックのコードです。


search_products.tpl

            <form name="search_form" id="search_form" method="get" action="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php">
            <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
            <dl class="formlist">
                <dt>条件を指定して検索</dt>
                <dd><input type="hidden" name="mode" value="search" />
                <select name="category_id[]" class="select_sarch">
                <option label="色の選択" value="">色の選択</option>
                <!--{foreach key=key item=dd from=$arrCatList}-->
		<!--{if $key ==303 or $key==298}-->
		<option label="<!--{$dd}-->" value="<!--{$key}-->" <!--{if $category_id[0]==$key}-->selected<!--{/if}-->><!--{$dd}--></option>
		<!--{/if}-->
		<!--{/foreach}-->
                </select>
                </dd>
                <dd>
                <select name="category_id[]" class="select_sarch">
                <option label="形の選択" value="">形の選択</option>
                <!--{foreach key=key item=dd from=$arrCatList}-->
		<!--{if $key ==912 or $key==185 or $key==184 }-->
		<option label="<!--{$dd}-->" value="<!--{$key}-->" <!--{if $category_id[0]==$key}-->selected<!--{/if}-->><!--{$dd}--></option>
		<!--{/if}-->
		<!--{/foreach}-->
                </select>                
                </dd>
                <dd>
                <select name="category_id[]" class="select_sarch">
                <option label="サイズの選択" value="">サイズの選択</option>
                <!--{foreach key=key item=dd from=$arrCatList}-->
		<!--{if $key ==353 or $key==305}-->
		<option label="<!--{$dd}-->" value="<!--{$key}-->" <!--{if $category_id[0]==$key}-->selected<!--{/if}-->><!--{$dd}--></option>
		<!--{/if}-->
		<!--{/foreach}-->
                </select>
                </dd>
            </dl>

            <dl class="formlist">
                <dt>商品名を入力</dt>
                <dd><input type="text" name="name" class="box140" maxlength="50" value="<!--{$smarty.get.name|h}-->" /></dd>
            </dl>
            <p class="btn"><input type="image" onmouseover="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_bloc_search_on.jpg',this)" onmouseout="chgImgImageSubmit('<!--{$TPL_URLPATH}-->img/button/btn_bloc_search.jpg',this)" src="<!--{$TPL_URLPATH}-->img/button/btn_bloc_search.jpg" alt="検索" name="search" /></p>
            </form>






こういった場合、どのように変更すればよいのか、ご教授の程、よろしくお願いいたします。


―環境―――――――――――――
EC-CUBE 2.11.2
MySQL 5.1.34-log
PHP 5.2.17
――――――――――――――――
bratech
投稿日時: 2013/5/22 18:50
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 商品検索ブロックの複合検索
ざっくりと見させて頂いた感じですと
category_idが配列で渡されるようになっていますので
おそらく配列で受け取っても検索が行えるようにカスタマイズされているのだと推測します。

であれば、list.tplの


        <!--{* ▼検索条件 *}-->
        <input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->


この部分のcategory_idも配列で渡すようにすれば良いのではないでしょうか?


ロジック部分についてはカスタマイズされているのでお分かりかもしれませんが、この辺りを変更するかたちでしょうか。

LC_Page_Products_List.php

        //表示条件の取得
        $this->arrSearchData = array(
            'category_id'   => $this->lfGetCategoryId(intval($this->arrForm['category_id'])),
            'maker_id'      => intval($this->arrForm['maker_id']),
            'name'          => $this->arrForm['name']
        );


ご参考になれば幸いです。


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

by0448
投稿日時: 2013/5/23 10:47
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 商品検索ブロックの複合検索
bratech 様

ご返答ありがとうございます。

ご助言の通り、以下のような変更を施しました。



		if(is_array($_GET['category_id'])){
			$arrCategory_id = array();
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][0])) array_push($arrCategory_id, $_GET['category_id'][0]);
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][1])) array_push($arrCategory_id, $_GET['category_id'][1]);
			if(preg_match("/^[0-9]+$/" , $_GET['category_id'][2])) array_push($arrCategory_id, $_GET['category_id'][2]);
			$this->arrSearchData = array(
				'category_id'   => $arrCategory_id
			);
		}else{
			$this->arrSearchData = array(
				'category_id'   => $this->lfGetCategoryId(intval($this->arrForm['category_id'])),
				'maker_id'      => intval($this->arrForm['maker_id']),
				'name'          => $this->arrForm['name']
			);
		}




しかし、どうしてもページングとの連携がうまくいかないようです。
検索時は複合もきいてるんですが、商品の2ページ目に行くと、選択していたカテゴリが解除されてしまいます。

これは自分のやり方が間違っていたという事なのでしょうが、ここからどのような変更が望ましいでしょうか?


続いてご助言を頂けますよう、よろしくお願いいたします。



bratech
投稿日時: 2013/5/23 13:17
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 商品検索ブロックの複合検索
こんにちは。

1点確認させて頂きたいのですが


        <!--{* ▼検索条件 *}-->
        <input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->


こちらは何か変更されましたか?


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

by0448
投稿日時: 2013/5/23 13:29
対応状況: −−−
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 商品検索ブロックの複合検索
bratech 様

ご返答ありがとうございます。

list.tplは以下のようになっております。


    <form name="form1" id="form1" method="get" action="?">
        <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
        <input type="hidden" name="mode" value="<!--{$mode|h}-->" />
        <!--{* ▼検索条件 *}-->
        <input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->
        <!--{* ▼ページナビ関連 *}-->
        <input type="hidden" name="orderby" value="<!--{$orderby|h}-->" />
        <input type="hidden" name="disp_number" value="<!--{$disp_number|h}-->" />
        <input type="hidden" name="pageno" value="<!--{$tpl_pageno|h}-->" />
        <!--{* ▲ページナビ関連 *}-->
        <!--{* ▼注文関連 *}-->
        <input type="hidden" name="product_id" value="" />
        <input type="hidden" name="classcategory_id1" value="" />
        <input type="hidden" name="classcategory_id2" value="" />
        <input type="hidden" name="product_class_id" value="" />
        <input type="hidden" name="quantity" value="" />
        <!--{* ▲注文関連 *}-->
        <input type="hidden" name="rnd" value="<!--{$tpl_rnd|h}-->" />
    </form>




何か間違いがございましたら、ご指摘いただけますよう、よろしくお願いいたします。


bratech
投稿日時: 2013/5/23 13:40
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 商品検索ブロックの複合検索
ご連絡ありがとうございます。

それではこの部分のコードを


        <!--{* ▼検索条件 *}-->
        <input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->


このように変更されてみてはいかがでしょうか?


        <!--{* ▼検索条件 *}-->
<!--{if is_array($arrSearchData.category_id)}-->
<!--{foreach from=$arrSearchData.category_id item=item}-->
<input type="hidden" name="category_id[]" value="<!--{$item|h}-->" />
<!--{/foreach}-->
<!--{else}-->
<input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
<!--{/if}-->
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->


確認をとっていないのでどこか記述ミスがあるかもしれませんが・・・


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

by0448
投稿日時: 2013/5/23 13:51
対応状況: 解決済
長老
登録日: 2011/9/12
居住地: 横浜市
投稿: 186
Re: 商品検索ブロックの複合検索
bratech 様

ご返答ありがとうございました。


頂いたコードで希望通りの動きになりました。


ずっとどうすればいいかわからなかった問題点でしたが、やっと解決することができました。


感謝いたします。
ご親切にありがとうございました。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,631名です
総投稿数は109,880件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1634
8
red
1569
9
mcontact
1262
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.