バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > URLに商品コードを表示させたい 2.13系

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mizuvan
投稿日時: 2014/11/28 12:40
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
URLに商品コードを表示させたい 2.13系
過去のログを参考に

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=13947&forum=10


下記のようにカスタマイズしてみました。


data/class/SC_Product.php

一番下に追記

//インスタンス生成
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;

}



data/class/pages/products/LC_Page_Products_Detail.php

public function action()内

//URLに商品コード
$objURLs = new SC_Product_Ex();

$this->ppcode = $objURLs->lfGetProductId( $_GET[ "product_code" ] );

if ( $_GET[ "product_code" ] )
{


$abcd=lfGetProductId( $_GET[ "product_code" ] );
echo $abcd;	

}


結果ページはシステムエラーとなり
引用:

Fatal error(E_PARSE): syntax error, unexpected 'public' (T_PUBLIC) on [/**/data/class/SC_Product.php(884)]

このようなエラーとなりました。884行目を示すのがちょうど追加した$objURLs〜ではじまる部分で

追記場所は、data/class/SC_Product.php

    /**
     * 商品規格詳細の SQL を取得する.
     *
     * MEMO: 2.4系 vw_product_classに相当(?)するイメージ
     *
     * @param  string $where 商品詳細の WHERE 句
     * @return string 商品規格詳細の SQL
     */
    public function prdclsSQL($where = '')
    {

  〜省略〜

    }

    public function getProductDispConditions($tablename = null)
    {
        $tablename = ($tablename) ? $tablename . '.' : null;

        return $tablename . 'del_flg = 0 AND ' . $tablename . 'status = 1 ';
    }
}

最下位のこのすぐ下です。


簡単に出来るものと思い試しましたがこのようなエラーとなってしまいました。このエラーから追記した内容の記述がカッコが足りないか多いかというような感じだということはわかるのですが、どの部分が間違っているかがわかりませんでした。

どなたかアドバイスいただけませんか
SEEDinc
投稿日時: 2014/11/28 14:21
対応状況: −−−
半人前
登録日: 2014/10/3
居住地: 東京都千代田区
投稿: 21
Re: URLに商品コードを表示させたい 2.13系
mizuvan様

data/class/pages/products/LC_Page_Products_Detail.phpで

$abcd=lfGetProductId( $_GET[ "product_code" ] );
としているところを

$abcd=$objURLs->lfGetProductId( $_GET[ "product_code" ] );

とするといかがでしょうか?
mizuvan
投稿日時: 2014/11/28 14:40
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: URLに商品コードを表示させたい 2.13系
ありがとうございます!

修正しましたところ

変わらずシステムエラーとなり
引用:
Warning(E_WARNING): Missing argument 2 for LC_Page_Products_List::doDefault(), called in /**/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(504)]




それぞれのエラー箇所61行目です。こちらはカテゴリー表示で切り換える為カスタマイズしているものです。
data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
/* カテゴリー分岐用追加 */
    public function doDefault($objProduct) {
        parent::doDefault($objProduct);
        
        // ルートカテゴリを取得。
        $db = new SC_Helper_DB_Ex();
        $this->rootCategory = $db->sfGetFirstCat($this->arrForm['category_id']);
    }

}


data/class/pages/products/LC_Page_Products_List.php(504)

    /*
     * お気に入り商品登録
     * @return void
     */
    public function lfRegistFavoriteProduct($favorite_product_id, $customer_id)
    {
        // ログイン中のユーザが商品をお気に入りにいれる処理
        if (!SC_Helper_DB_Ex::sfIsRecord('dtb_products', 'product_id', $favorite_product_id, 'del_flg = 0 AND status = 1')) {
            SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);

            return false;
        } else {
            $objQuery =& SC_Query_Ex::getSingletonInstance();
            $exists = $objQuery->exists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($customer_id, $favorite_product_id));

            if (!$exists) {
                $sqlval['customer_id'] = $customer_id;
                $sqlval['product_id'] = $favorite_product_id;
                $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
                $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; //ここが504行目
SEEDinc
投稿日時: 2014/11/28 16:04
対応状況: −−−
半人前
登録日: 2014/10/3
居住地: 東京都千代田区
投稿: 21
Re: URLに商品コードを表示させたい 2.13系
mizuvan様

LC_Page_Products_List_Ex.phpの

public function doDefault($objProduct) {
parent::doDefault($objProduct);


public function doDefault($objProduct,&$objFormParam) {
parent::doDefault($objProduct,$objFormParam);

と第2引数をつけると今回のエラーが解消されないでしょうか?

mizuvan
投稿日時: 2014/11/28 16:42
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: URLに商品コードを表示させたい 2.13系
教えていただいたLC_Page_Products_List_Ex.phpへのカスタマイズ後ですが、同じエラーとなりました。

引用:
Warning(E_WARNING): Missing argument 2 for LC_Page_Products_List::doDefault(), called in /***/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(504)]


いろいろとカスタマイズはしてあるものですから、他のところが影響しているかもしれません。すいません。

yasai
投稿日時: 2014/11/28 16:54
対応状況: −−−
常連
登録日: 2014/10/21
居住地:
投稿: 65
Re: URLに商品コードを表示させたい 2.13系
LC_Page_Products_List.phpのdoDefaultはどうなっていますか?
mizuvan
投稿日時: 2014/11/28 17:17
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: URLに商品コードを表示させたい 2.13系
この辺りはデフォルトです。

doDefaultの記述があるところを抜粋してみました。


            default:
                $this->doDefault($objProduct, $objFormParam);
                break;



    /**
     *
     * @param  type $objProduct
     * @return void
     */
    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']});";
                }
            }
        }

        //カート処理
        $target_product_id = intval($this->arrForm['product_id']);
        if ($target_product_id > 0) {
            // 商品IDの正当性チェック
            if (!SC_Utils_Ex::sfIsInt($this->arrForm['product_id'])
                || !SC_Helper_DB_Ex::sfIsRecord('dtb_products', 'product_id', $this->arrForm['product_id'], 'del_flg = 0 AND status = 1')) {
                SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
            }

            // 入力内容のチェック
            $arrErr = $this->lfCheckError($objFormParam);
            if (empty($arrErr)) {
                $this->lfAddCart($this->arrForm);

                // 開いているカテゴリーツリーを維持するためのパラメーター
                $arrQueryString = array(
                    'category_id' => $this->arrForm['category_id'],
                );

                SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
                SC_Response_Ex::actionExit();
            }
            $js_fnOnLoad .= $this->lfSetSelectedData($this->arrProducts, $this->arrForm, $arrErr, $target_product_id);
        } else {
            // カート「戻るボタン」用に保持
            $netURL = new Net_URL();
            //該当メソッドが無いため、$_SESSIONに直接セット
            $_SESSION['cart_referer_url'] = $netURL->getURL();
        }

        $this->tpl_javascript   .= 'function fnOnLoad() {' . $js_fnOnLoad . '}';
        $this->tpl_onload       .= 'fnOnLoad(); ';
    }
}
SEEDinc
投稿日時: 2014/11/28 17:33
対応状況: −−−
半人前
登録日: 2014/10/3
居住地: 東京都千代田区
投稿: 21
Re: URLに商品コードを表示させたい 2.13系
すみません、先ほどの書き込みで、
第1引数にも&をつけて、下記の様にしてもダメでしょうか?

public function doDefault(&$objProduct,&$objFormParam) {
parent::doDefault($objProduct,$objFormParam);

配列の引数あたりでエラーが出ている気がするので・・。
mizuvan
投稿日時: 2014/11/28 18:12
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: URLに商品コードを表示させたい 2.13系
ありがとうございます!

再度教えていただいた方法もエラーでした。

内容は若干変わりました。

Fatal error(E_ERROR): Call to undefined method SC_Product_Ex::lfGetProductId() on [/****/data/class/pages/products/LC_Page_Products_Detail.php(145)] customer_id =



        // 在庫が無い場合は、OnLoadしない。(javascriptエラー防止)
        if ($this->tpl_stock_find) {
            // 規格選択セレクトボックスの作成
            $this->js_lnOnload .= $this->lfMakeSelect(); // ←145行目



一応、はじめに教えていただいた

$abcd=$objURLs->lfGetProductId( $_GET[ "product_code" ] );


の変更をしたままと戻した場合を試しましたがエラー内容は同じです。


今見てて思ったのですが、過去ログにある

data/class/pages/products/LC_Page_Products_Detail.php

で $this->ppcode  や $abcd とありますが、これがその後どのように使われているか不思議でした。

今回カスタマイズしている以外のところでまだカスタマイズが足りない部分があったらすみません・・

flealog
投稿日時: 2014/11/28 23:58
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: URLに商品コードを表示させたい 2.13系
横槍すみません。
商品コードが数字でしたら、標準でもCSV登録で指定することで商品コードをIDにすることができますよ!


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.