バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 送料無料設定のカスタマイズについて

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
fukuhy
投稿日時: 2010/5/14 23:42
対応状況: −−−
新米
登録日: 2010/5/14
居住地:
投稿: 9
送料無料設定のカスタマイズについて
お世話になっております。
すでに運用が行われているサイトの修正になるのですが、
実はPHPに関しては初心者レベルの物です。

http://www28.atwiki.jp/lucier/pages/43.html

上記の情報を参考に商品ごとの送料無料設定の
カスタマイズを行いました。

商品管理画面でも「商品送料」の項目が追加され、
順調に進んでいると思っていたのですが、

--------------------------------------------
/data/class/SC_CartSession.php
Line348のgetAllProductsDelivFeeメソッドをコメントアウト。
--------------------------------------------

上記の「SC_CartSession.php」の修正後に
データをアップすると「現在のかごの中」のページが
真っ白になってしまいます。(修正前のファイルに戻すと表示されます)

しかしこのファイルの修正は該当箇所を削除するだけですので、
いくら私でもミスをしているとは思えません。

何か他のカスタム部分でミスをしているのか、
それともEC-CUBEのバーションなど根本的な部分で
不具合が起こっているのか見当がつかず困っております。

唯一、自信がない部分が最後の「SC_Helper_DB.php」の修正で
--------------------------------------------
ファイルの最後にメソッドを3つ追加。
--------------------------------------------

とあるのですが、文頭で申し上げました通り
PHPに関しては知識が浅いため、「最後」というのが

----------------
 ←ここなのか
}
 ←それともここなのか
?>
----------------
どちらをを指しているのかがわかりませんでした。


PHPの知識の浅い物がこのようなカスタマイズを行う事に
問題があるのは承知いたしておりますが、
仕事の都合上、どうしても行う必要がございました。

皆様のアドバイスだけが頼りとなります。
何卒、宜しくお願い致します。
----------------------
EC-CUBEバージョン 2.4.0
PHPバージョン PHP 5.1.6
DBバージョン MySQL 5.0.45
----------------------
seasoft
投稿日時: 2010/5/15 2:45
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7332
Re: 送料無料設定のカスタマイズについて
ざっと参照先の記事を読んだ印象ですと、前者かと思います。


・・・って、過去に私が EC-CUBEコミュニティ(eccube-comu) にコミットした内容をベースとして拡張した実装のようですね。

という事は、EC-CUBEコミュニティ(eccube-comu) を見ると、ある程度参考になる部分があるかもしれません。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

fukuhy
投稿日時: 2010/5/17 15:01
対応状況: −−−
新米
登録日: 2010/5/14
居住地:
投稿: 9
Re: 送料無料設定のカスタマイズについて
seasoft様、貴重なアドバイス有難うございました。
その後、何度ソースを書き換え直しても原因がわからず
状況は改善されませんでした。

まずは自分がこれまで過去に他のファイルを変更をした事による影響や、
EC-CUBEのバージョンの問題なのかを切り分ける為に、
全く新しいテスト環境を1から同サーバ上に作ってみました。
バージョンは最新の2.4.3です。(不具合修正ファイル対応済み)

全くのデフォルト状態で同じカスタマイズを行ってみましたが、
やはり状況は変わりませんでした。

PHPエラーを確認してみた所、
引用:

PHP Fatal error: Call to undefined method SC_Query::getMax() in /var/www/vhosts/-----.jp/httpdocs/2_4_3test/data/class/helper/SC_Helper_DB.php on line 1598, referer: http://www.-----.jp/2_4_3test/shop/products/list.php?category_id=1


引用:

引用:

PHP Warning: fopen(/var/www/vhosts/-----.jp/httpdocs/data/cache/mtb_pref.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: \xe8\xa8\xb1\xe5\x8f\xaf\xe3\x81\x8c\xe3\x81\x82\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93 in /var/www/vhosts/-----.jp/httpdocs/data/class/db/SC_DB_MasterData.php on line 279。


それらしい所は上記のようになっており、
最後のエラーの「SC_DB_MasterData.php」の279行目は

$handle = fopen($path, "w");

となっておりました。
ここが、真っ白の原因なのでしょうか。。。
このエラーの意味がわからず、行き詰まってしまいました。
他の方はあっさりと動作している方も多く見受けられますが、
サーバーの問題などもあり得るのでしょうか?

※補足でエラーの内容を追加いたしました。
fukuhy
投稿日時: 2010/5/18 0:53
対応状況: −−−
新米
登録日: 2010/5/14
居住地:
投稿: 9
Re: 送料無料設定のカスタマイズについて
送料無料設定につきましては、
おかげさまで何とか動作させる事ができましたのでご報告します。
アドバイスくださったseasoft様、有難うございました。

それでは私の動作までの流れを
以下に書き留めさせていただきます。

まず、送料無料設定のカスタマイズにおいて
http://www28.atwiki.jp/lucier/pages/43.html

上記を参考に修正してみましたが、
結果的に私の環境では、そのまま真似ても動作しませんでした。
EC-CUBEのバージョンを疑いましたが、
2.4.0 でも 2.4.3 でも状況は変わりませんでした。
「現在のカートの中」ページで真っ白になってしまうのです。

初めからやり直し、次は以下の順序で修正を行いました。

http://svn.ec-cube.net/open_trac/changeset/17970
http://svn.ec-cube.net/open_trac/changeset/17971
http://svn.ec-cube.net/open_trac/changeset/18114
http://seasoft.jp1.cx/ec/%E6%8B%A1%E5%BC%B5/%E5%95%86%E5%93%81%E9%80%81%E6%96%99%E3%82%92%E5%9F%BA%E6%9C%AC

上記の手順を践む事で、特定の商品に対し
送料を無料にする事ができました。
2.4.0 でも 2.4.3 でも同様に動作します。

ただ、送料無料を設定した商品と、していない商品を一緒にカートにいれると、
元々地域別で設定していた送料が加算されてしまいます。
送料無料の商品が一つでも含まれていれば、
その買い物の送料は全て無料にしたいのですが;
思い通りの動作まであと一歩です。。

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

上記のmojaxp様のアドバイスを参考に四苦八苦中です。
もう少しだけ、ヒントをいただければ幸いです。
宜しくお願いいたします。
fukuhy
投稿日時: 2010/5/18 19:28
対応状況: −−−
新米
登録日: 2010/5/14
居住地:
投稿: 9
Re: 送料無料設定のカスタマイズについて
引用:

送料無料を設定した商品と、していない商品を一緒にカートにいれると、
元々地域別で設定していた送料が加算されてしまいます。
送料無料の商品が一つでも含まれていれば、
その買い物の送料は全て無料にしたいのですが


上記につきまして、何とか(?)近い結果を出す事ができました。

本来は、どんな商品の組み合わせでもカートの中に
「送料0円」商品が1つでも含まれていれば、
その買い物の送料は全て無料にしたかったのですが、

#######################################################
カートに入っている商品を全てチェックし、
その中に送料を0円に設定している商品があれば→$arrData['deliv_fee'] = 0;
#######################################################

上記のような動作を実現させる為のプログラムの書き方がわからず、
今の私のPHPスキルでは乗り越える事ができませんでした。。。
そこで、代替案として思いついたのが「商品コード」を使った分岐です。

幸い、送料0円商品は一つしかなかったため、
その送料0円の商品コードがカートに含まれていれば
オール送料0円にするといった方法で試してみました。

参考にさせていただいたのは下記URLです。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4459&forum=10&viewmode=flat&order=ASC&start=10

結果的に以下の内容をsfTotalConfirm内に記述する事で
ようやく実現できました。
引用:

// 配送業者の送料が有効の場合
if (OPTION_DELIV_FEE == 1) {
// 都道府県、支払い方法から配送料金を加算する
$this->lfAddDelivFee($arrData);
// 商品コードに○○○○○が含まれていたら送料無料
for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "○○○○○"){
$abcount += 1;
}
}
if($abcount > 0)
{
$arrData['deliv_fee'] = 0;
}
}


今後、送料0円商品が増えるたびに修正するのは面倒ですが、
今はこれで乗り切りたいと思います。

これが可能なら、元々の希望動作も実現出来そうなのですが、
カートに入っている商品を全てチェックする際に、
「送料0円設定の商品」と「そうでない商品」を判別する
フラグのような物が何なのかがわかりませんでした。

もっともっと勉強しなければいけませんね。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は65,915名です
総投稿数は98,047件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2597
4
nanasess
2101
5
umebius
1717
6
yuh
1612
7
red
1422
8
h_tanaka
1038
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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