質問 > フロント機能 > 2.12系 お気に入り、表示順変更、検索ができない |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
acidorange |
投稿日時: 2015/2/10 9:42
対応状況: −−−
|
半人前 登録日: 2015/2/9 居住地: 投稿: 12 |
2.12系 お気に入り、表示順変更、検索ができない ------------------------------------------
EC-CUBEバージョン 2.12.6 PHPバージョン PHP 5.2.17 DBバージョン MySQL 5.5.38 ------------------------------------------ 現在、上記環境にて、カスタマイズを行っていますが、 ・お気に入りが効かない ・表示順/表示件数が変わらない ・商品検索がかからない など、多くの機能が働かない状態です。 どなたかのお知恵をお借りできれば幸いです。 |
IPLOGIC |
投稿日時: 2015/2/12 21:00
対応状況: −−−
|
一人前 登録日: 2014/12/8 居住地: 東京都 投稿: 96 |
Re: 2.12系 お気に入り、表示順変更、検索ができない acidorange 様
いくつか確認させていただきたいのですが、 >・お気に入りが効かない 商品詳細(カート投入画面)でのお気に入りボタンがそもそも押せない >・表示順/表示件数が変わらない 商品一覧(products/list.php)の並び替えリンクを押すと、POSTはされるが表示の仕方は変わらない >・商品検索がかからない 商品名を入力しても検索が0件になる ということでしょうか? 具体的な不具合の症状をお教え頂けますでしょうか。
|
acidorange |
投稿日時: 2015/2/12 21:50
対応状況: −−−
|
半人前 登録日: 2015/2/9 居住地: 投稿: 12 |
Re: 2.12系 お気に入り、表示順変更、検索ができない IPLOGIC様
ご返信ありがとうございます。 不具合の詳細な症状をお伝えいたします。 >・お気に入りが効かない ボタンを押下はできていますが、 画面表示では、何らの変化も起きない状態です。 システムエラー画面にも遷移致しません。 この機能に関しては、カスタマイズは一切おこなっていません。 >・表示順/表示件数が変わらない カスタマイズを入れている部分です。 ○○順を押下すると、POSTは行われ、LC_Page_Products_List.phpまで、 到達しておりますが、商品一覧は何らの変化も起きない状態です。 表示件数についても同様です。 挙動を見ている様子ですと、 ---------------------------- $this->arrForm['orderby']; ---------------------------- ここで、値が渡ってきていないように見受けられます。 >・商品検索がかからない カスタマイズを入れている部分です。 検索条件を入力し、検索ボタンを押下しますと、 検索ワードは一覧上部に表示されますが、 商品一覧はデフォルトの1200件以上の商品がヒットしてしまいます。 カテゴリの検索は働きます。 カスタマイズの仕様としては、 3種類以上の複数の条件での検索を意図しています。 何か思い当たる、カスタマイズの不手際などありましたら、 ご教授いただけましたら、幸いです。 |
yuh |
投稿日時: 2015/2/12 22:41
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 2.12系 お気に入り、表示順変更、検索ができない テンプレートの
<input type="hidden" name="orderby" value="<!--{$orderby|h}-->" /> を削除してませんか? |
acidorange |
投稿日時: 2015/2/12 22:47
対応状況: −−−
|
半人前 登録日: 2015/2/9 居住地: 投稿: 12 |
Re: 2.12系 お気に入り、表示順変更、検索ができない yuh様
ご返信ありがとうございます。 ご指摘の点は、どう考えても必要な箇所ですので、 まったく触っていません。 何かほかにお気づきの点ありますでしょうか? |
yuh |
投稿日時: 2015/2/12 22:53
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 2.12系 お気に入り、表示順変更、検索ができない orderbyは想像つきませんが、結構やらかしがちなミスとして
$searchCondition['where'] .= 〜〜〜〜 を $searchCondition['where'] = 〜〜〜〜 と書いてしまって条件が消えるというのは多いですね 実際詳細に調べるのであればソースが無いとどうしても想像でしか答えれないです・・・。 |
acidorange |
投稿日時: 2015/2/12 23:13
対応状況: −−−
|
半人前 登録日: 2015/2/9 居住地: 投稿: 12 |
Re: 2.12系 お気に入り、表示順変更、検索ができない yuh様
詳細にご覧いただきたいので、 ロジックを載せます。 whereの上書きでもないように見受けられますが...。 --------------------------------------------------- /** * 表示用検索条件の設定 * * @return array */ function lfGetSearchConditionDisp($arrSearchData) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrSearch = array('category' => '指定なし', 'maker' => '指定なし', 'name1' => '指定なし', 'name2' => '指定なし', 'name3' => '指定なし'); // カテゴリ検索条件 if ($arrSearchData['category_id'] > 0) { $arrSearch['category'] = $objQuery->get('category_name', 'dtb_category', 'category_id = ?', array($arrSearchData['category_id'])); } // メーカー検索条件 if (strlen($arrSearchData['maker_id']) > 0) { $arrSearch['maker'] = $objQuery->get('name', 'dtb_maker', 'maker_id = ?', array($arrSearchData['maker_id'])); } // 商品名検索条件 if (strlen($arrSearchData['name1']) > 0) { $arrSearch['name1'] = $arrSearchData['name1']; } if (strlen($arrSearchData['name2']) > 0) { $arrSearch['name2'] = $arrSearchData['name2']; } if (strlen($arrSearchData['name3']) > 0) { $arrSearch['name3'] = $arrSearchData['name3']; } return $arrSearch; } --------------------------------------------------- /** * 該当件数の取得 * * @return int */ function lfGetProductAllNum($searchCondition) { // 検索結果対象となる商品の数を取得 $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->setWhere($searchCondition['where_for_count']); $objProduct = new SC_Product_Ex(); return $objProduct->findProductCount($objQuery, $searchCondition['arrval']); } /** * 検索条件のwhere文とかを取得 * * @return array */ function lfGetSearchCondition($arrSearchData) { $searchCondition = array( 'where' => '', 'arrval' => array(), 'where_category' => '', 'arrvalCategory' => array() ); // カテゴリからのWHERE文字列取得 if ($arrSearchData['category_id'] != 0) { list($searchCondition['where_category'], $searchCondition['arrvalCategory']) = SC_Helper_DB_Ex::sfGetCatWhere($arrSearchData['category_id']); } // ▼対象商品IDの抽出 // 商品検索条件の作成(未削除、表示) $searchCondition['where'] = 'alldtl.del_flg = 0 AND alldtl.status = 1 '; if (strlen($searchCondition['where_category']) >= 1) { $searchCondition['where'] .= ' AND EXISTS (SELECT * FROM dtb_product_categories WHERE ' . $searchCondition['where_category'] . ' AND product_id = alldtl.product_id)'; $searchCondition['arrval'] = array_merge($searchCondition['arrval'], $searchCondition['arrvalCategory']); } // 条件1をwhere文に $name1 = $arrSearchData['name1']; $name1 = str_replace(',', '', $name1); // 全角スペースを半角スペースに変換 $name1 = str_replace(' ', ' ', $name1); // スペースでキーワードを分割 $names1 = preg_split('/ +/', $name1); // 分割したキーワードを一つずつwhere文に追加 foreach ($names1 as $val1) { if (strlen($val) > 0) { $searchCondition['where'] .= ' AND ( alldtl.条件1 ILIKE ? OR alldtl.comment3 ILIKE ?) '; $searchCondition['arrval'][] = "%$val1%"; $searchCondition['arrval'][] = "%$val1%"; } } // 条件2をwhere文に $name2 = $arrSearchData['name2']; $name2 = str_replace(',', '', $name2); // 全角スペースを半角スペースに変換 $name2 = str_replace(' ', ' ', $name2); // スペースでキーワードを分割 $names2 = preg_split('/ +/', $name2); // 分割したキーワードを一つずつwhere文に追加 foreach ($names2 as $val2) { if (strlen($val) > 0) { $searchCondition['where'] .= ' AND ( alldtl.条件2 ILIKE ? OR alldtl.comment3 ILIKE ?) '; $searchCondition['arrval'][] = "%$val2%"; $searchCondition['arrval'][] = "%$val2%"; } } // 条件3をwhere文に $name3 = $arrSearchData['name3']; $name3 = str_replace(',', '', $name3); // 全角スペースを半角スペースに変換 $name3 = str_replace(' ', ' ', $name3); // スペースでキーワードを分割 $names3 = preg_split('/ +/', $name3); // 分割したキーワードを一つずつwhere文に追加 foreach ($names3 as $val3) { if (strlen($val) > 0) { $searchCondition['where'] .= ' AND ( alldtl.条件3 ILIKE ? OR alldtl.comment3 ILIKE ?) '; $searchCondition['arrval'][] = "%$val3%"; $searchCondition['arrval'][] = "%$val3%"; } } // メーカーらのWHERE文字列取得 if ($arrSearchData['maker_id']) { $searchCondition['where'] .= ' AND alldtl.maker_id = ? '; $searchCondition['arrval'][] = $arrSearchData['maker_id']; } $searchCondition['where_for_count'] = $searchCondition['where']; // 在庫無し商品の非表示 if (NOSTOCK_HIDDEN) { $searchCondition['where'] .= ' AND EXISTS(SELECT * FROM dtb_products_class WHERE product_id = alldtl.product_id AND del_flg = 0 AND (stock >= 1 OR stock_unlimited = 1))'; $searchCondition['where_for_count'] .= ' AND EXISTS(SELECT * FROM dtb_products_class WHERE product_id = alldtl.product_id AND del_flg = 0 AND (stock >= 1 OR stock_unlimited = 1))'; } return $searchCondition; } --------------------------------------------------- いかがでしょうか...? |
yuh |
投稿日時: 2015/2/12 23:29
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 2.12系 お気に入り、表示順変更、検索ができない ぱっとわかる範囲で
キーワードでの検索自体はnameという名前ですが、書かれているのは name1なのでそもそも条件に引っかからなくなってます。 actionの $this->arrSearchData = array( 'category_id' => $this->lfGetCategoryId(intval($this->arrForm['category_id'])), 'maker_id' => intval($this->arrForm['maker_id']), 'name' => $this->arrForm['name'] ); の部分に name1 name2 name3 を追加してください。 その部分に追加してないので、 lfGetSearchConditionDisp($arrSearchData) に対してname1〜3が渡されずに処理が行われている為、うまく動いてないんだと思います。 |
acidorange |
投稿日時: 2015/2/12 23:55
対応状況: −−−
|
半人前 登録日: 2015/2/9 居住地: 投稿: 12 |
Re: 2.12系 お気に入り、表示順変更、検索ができない yuh様
ご指摘の点、修正し、 Smartyのfrontparts/search_productsも併せて修正したところ、 システムエラー画面に遷移致しました。 何か修正を取りこぼしている点、ありますでしょうか? 質問ばかりで申し訳ありません。 POSTはされているようです。 URL:〜mode=search&category_id=&name1=&name2=&name3=白 |
yuh |
投稿日時: 2015/2/13 0:13
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 2.12系 お気に入り、表示順変更、検索ができない エラーログをお願いします。
一応修正する部分はLC_Page_Products_Listの方だと思います |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |