バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

機能要望 > フロント機能 > 商品検索で商品コードを検索出来るようにしたい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mizuvan
投稿日時: 2014/12/5 15:54
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
商品検索で商品コードを検索出来るようにしたい。
下記ページを参考に商品検索で商品コードを検索できるようにとチャレンジしてみました。

http://php.programmingpapa.com/eccube/eccube%e3%81%a7%e5%95%86%e5%93%81%e6%a4%9c%e7%b4%a2%e3%82%92%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%9e%e3%82%a4%e3%82%ba/


ところが、
data/class/SC_Product.php

    /**
     * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する.
     *
     * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります.
     *
     * @param  SC_Query $objQuery SC_Query インスタンス
     * @param  array    $arrVal   検索パラメーターの配列
     * @return array    対象商品ID数
     */
    public function findProductCount(&$objQuery, $arrVal = array())
    {
        $table = 'dtb_products AS alldtl LEFT JOIN dtb_products_class as pcdtl ON alldtl.product_id = pcdtl.product_id';


data/class/pages/products/LC_Page_Products_List.php

        // 商品名をwhere文に
        $name = $arrSearchData['name'];
        $name = str_replace(',', '', $name);
        // 全角スペースを半角スペースに変換
        $name = str_replace(' ', ' ', $name);
        // スペースでキーワードを分割
        $names = preg_split('/ +/', $name);
        // 分割したキーワードを一つずつwhere文に追加
        foreach ($names as $val) {
            if (strlen($val) > 0) {
                $searchCondition['where']    .= ' AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ?) ';
                $searchCondition['arrval'][]  = "%$val%";
                $searchCondition['arrval'][]  = "%$val%";
            }
        }


表示は、システムエラーとなりエラーログには下記のよううな内容が記録されていました。

[/products/list.php] Fatal error(E_PARSE): syntax error, unexpected 'public' (T_PUBLIC) on [//data/class/SC_Product.php(887)] from 180.49.152.162
customer_id =
[/products/list.php] Fatal error(E_PARSE): syntax error, unexpected 'public' (T_PUBLIC) on [//data/class/SC_Product.php(887)] from 180.49.152.162
customer_id =

SC_Product.phpの887行目

public function lfGetProductId( $product_code )
{

//インスタンス生成
$col = "dtb_products_class.product_id"; //カラム
$from = "dtb_products_class INNER JOIN dtb_products ON dtb_products_class.product_id = dtb_products.product_id";
$where = "dtb_products_class.product_code = ? AND dtb_products_class.del_flg = 0 "; 
$arrWhereVal = array($product_code);
$res = $objQuery->get($col, $from, $where,$arrWhereVal);

echo $res;

}


[/products/list.php] Warning(E_WARNING): Missing argument 2 for LC_Page_Products_List::doDefault(), called in /c/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php on line 61 and defined on [//data/class/pages/products/LC_Page_Products_List.php(515)]

LC_Page_Products_List.phpの515行目

    public function doDefault(&$objProduct, &$objFormParam)
    {
        //商品一覧の表示処理
        $strnavi            = $this->objNavi->strnavi;
        // 表示文字列
        $this->tpl_strnavi  = empty($strnavi) ? ' ' : $strnavi;

        // 規格1クラス名
        $this->tpl_class_name1  = $objProduct->className1;

        // 規格2クラス名
        $this->tpl_class_name2  = $objProduct->className2;

        // 規格1
        $this->arrClassCat1     = $objProduct->classCats1;

        // 規格1が設定されている
        $this->tpl_classcat_find1 = $objProduct->classCat1_find;
        // 規格2が設定されている
        $this->tpl_classcat_find2 = $objProduct->classCat2_find;

        $this->tpl_stock_find       = $objProduct->stock_find;
        $this->tpl_product_class_id = $objProduct->product_class_id;
        $this->tpl_product_type     = $objProduct->product_type;

        // 商品ステータスを取得
        $this->productStatus = $this->arrProducts['productStatus'];
        unset($this->arrProducts['productStatus']);
        $this->tpl_javascript .= 'eccube.productsClassCategories = ' . SC_Utils_Ex::jsonEncode($objProduct->classCategories) . ';';
        if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_PC) {
            //onloadスクリプトを設定. 在庫ありの商品のみ出力する
            foreach ($this->arrProducts as $arrProduct) {
                if ($arrProduct['stock_unlimited_max'] || $arrProduct['stock_max'] > 0) {
                    $js_fnOnLoad .= "fnSetClassCategories(document.product_form{$arrProduct['product_id']});";
                }
            }
        }


この場合、どの部分が間違っているのかお分りになる方はいらっしゃいますでしょうか


記入漏れを追記↓
EC-CUBEバージョン:2.13.2
PHP情報:5.3.28
DB情報:MySQL 5.6.13-log
casa
投稿日時: 2014/12/5 17:53
対応状況: −−−
長老
登録日: 2011/10/3
居住地:
投稿: 210
Re: 商品検索で商品コードを検索出来るようにしたい。
mizuvanさん、こんばんわ。

2つ目の「data/class/pages/products/LC_Page_Products_List.php」は、修正前のコードを記載して頂いているようです。

3つ目の「SC_Product.phpの887行目」は、記載頂いた関数の前の関数の中括弧が閉じられていないのではないでしょうか。
syntax error とエラーが出ているので基本的な構文の記述誤りなどを調べて下さい。
また、「$objQuery」が突然出てきますが、インスタンスが生成されていません。
インスタンス生成というコメントの辺りに、元々記述があったのではないでしょうか。

4つ目の「LC_Page_Products_List.phpの515行目」は、doDefaultを呼んでいる箇所で引数が1つしか指定されていないようです。

以上、ご確認ください。
なお、EC-CUBEのバージョンなど、最低限必要な情報もご記載ください。
mizuvan
投稿日時: 2014/12/5 19:28
対応状況: 保留
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 商品検索で商品コードを検索出来るようにしたい。
ありがとうございます!

2つ目のコードは修正前でした失礼いたしました・・

3つめのシンタクエラーは判明しましてエラーは無くなりました。

「$objQuery」が突然出てくる件は、カスタマイズしている部分でわからずに追記しているものです。デフォルトにはありません。よって、まだよくわかりません

4つ目の doDefault の部分ですがここはデフォルトでカスタマイズされていないのです・・・「1つしか指定されていない」ということが知識の乏しい私にはまだわかりませんでした。

現時点で4つ目のエラーだけとなりましたが、デフォルトのままにも関わらず何か他で影響が出ているのでしょうか??

ひとまず保留にします
mizuvan
投稿日時: 2014/12/5 19:28
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 商品検索で商品コードを検索出来るようにしたい。
ありがとうございます!

2つ目のコードは修正前でした失礼いたしました・・

3つめのシンタクエラーは判明しましてエラーは無くなりました。

「$objQuery」が突然出てくる件は、カスタマイズしている部分でわからずに追記しているものです。デフォルトにはありません。よって、まだよくわかりません

4つ目の doDefault の部分ですがここはデフォルトでカスタマイズされていないのです・・・「1つしか指定されていない」ということが知識の乏しい私にはまだわかりませんでした。

現時点で4つ目のエラーだけとなりましたが、デフォルトのままにも関わらず何か他で影響が出ているのでしょうか??

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
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.