バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 対象商品による支払方法選択

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
FLY
投稿日時: 2009/11/2 5:11
対応状況: −−−
半人前
登録日: 2009/10/18
居住地:
投稿: 26
対象商品による支払方法選択
お世話になります。

代金引換対象商品を購入した場合に、支払方法で代金引換を選択できるようにしたいと考えています。

考えた方法として、

1.商品登録時に、newなどのチェックに代金引換を追加し、このチェックが入った商品のみを購入した場合(単品・複数)支払方法で代金引換を選択できるようにする。

2.支払方法設定で、何円〜何円までの場合選択できる条件がありますが、これを利用する。(代金引換商品をカテゴリーにして、該当カテゴリーの商品が入っていない、他のカテゴリー商品が入っている場合、選択不可みたいにする)

方法はいろいろあると思うんですが、どういう方法が簡単にできそうなのか教えていただけたらと思っています。

v2.4.1
PHP 4.2
mySQL 4
seasoft
投稿日時: 2009/11/2 9:42
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 対象商品による支払方法選択
どちらでも良さそうな(さほど工数は変わらない)気はします。

「2.」は、「何円〜何円までの場合選択できる条件」をどう利用するのかちょっと謎かな。
ソース的に同じような位置で取捨を行なうという意味なら、それでも良い気はします。


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

osamusi
投稿日時: 2009/11/2 13:46
対応状況: −−−
長老
登録日: 2008/11/5
居住地:
投稿: 204
Re: 対象商品による支払方法選択
1の方が処理的には綺麗ですよね。
カスタマイズもそれほど対したものではないので、1が良いと思います。


----------------
株式会社サンクユーは東京都品川区のWEB制作会社です。
サンクユーのEC-CUBE構築、カスタマイズ・サービス
お問合せ先:info@thank-u.net
(有償対応のみ

FLY
投稿日時: 2009/11/4 4:49
対応状況: −−−
半人前
登録日: 2009/10/18
居住地:
投稿: 26
Re: 対象商品による支払方法選択
ご回答ありがとうございます。

1.商品登録時に、newなどのチェックに代金引換を追加し、このチェックが入った商品のみを購入した場合(単品・複数)支払方法で代金引換を選択できるようにする。

こちらの方法で、ステータスに新しく代金引換を追加しました。

代金引換にチェックがついていない商品が含まれているとお支払方法で代金引換を選べないようにしたいと思っています。
というのも、代金引換商品以外の商品が一つでも入っているとあまりよくないということでこうしようと思っています。

まずこのチェックがついてるかついていないかで表示非表示するところをしらべていましたが、商品詳細ページのアイコン表示部分で

<!--アイコン-->
<!--{if count($arrProduct.product_flag) > 0}-->
<ul class="status_icon">
<!--{section name=flg loop=$arrProduct.product_flag|count_characters}-->
<!--{if $arrProduct.product_flag[flg] == "1"}-->
<li>
<!--{assign var=key value="`$smarty.section.flg.iteration`"}-->
<img src="<!--{$TPL_DIR}--><!--{$arrSTATUS_IMAGE[$key]}-->" alt="<!--{$arrSTATUS[$key]}-->" id="icon<!--{$key}-->" />
</li>
<!--{/if}-->
<!--{/section}-->
</ul>
<!--{/if}-->

こう書かれていますが、これはどういう判定方法なのでしょうか?

$arrProduct.product_flag
はステータスの数のことだと思うのですが、

<!--{if $arrProduct.product_flag[flg] == "1"}-->
というのはこのステータスの数が1のときを指すのでしょうか?
それともflgという値に0と1と入っていてそれが1のときを指すのでしょうか?

また、お支払方法を見ると

<!--{assign var=key value="payment_id"}-->
<!--{if $arrErr[$key] != ""}-->
<p class="attention"><!--{$arrErr[$key]}--></p>
<!--{/if}-->
<table cellpadding="0" cellspacing="1" summary="お支払方法選択">
<tr>
<th class="centertd">選択</th>
<th colspan="<!--{if $img_show == false}-->2<!--{else}-->3<!--{/if}-->">お支払方法</th>
</tr>
<!--{section name=cnt loop=$arrPayment}-->
<tr>
<td class="centertd"><input type="radio" id="pay_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->" onclick="fnModeSubmit('payment', '', '');" value="<!--{$arrPayment[cnt].payment_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" <!--{$arrPayment[cnt].payment_id|sfGetChecked:$arrForm[$key].value}--> />
</td>
<td>
<label for="pay_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrPayment[cnt].payment_method|escape}--><!--{if $arrPayment[cnt].note != ""}--><!--{/if}--></label>
</td>
<!--{if $arrPayment[cnt].payment_image != ""}-->
<td>
<img src="<!--{$smarty.const.IMAGE_SAVE_URL}--><!--{$arrPayment[cnt].payment_image}-->" />
</td>
<!--{elseif $img_show == true}-->

<!--{/if}-->
</tr>
<!--{/section}-->
</table>

とループ処理になっていて、管理画面で代金引換を追加しているときここをどう表示非表示させればよいか考えています。

まるごとifとelseを使って代金引換にチェックが入っていない商品があるかないかを判定すればよいのでしょうか?
ただ、その場合代金引換は3つ目の支払方法になりますが、ループを$i<3とかでループを回避することもできるのでしょうか?

何卒よろしくお願いいたします。
seasoft
投稿日時: 2009/11/4 9:34
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 対象商品による支払方法選択
> こう書かれていますが、これはどういう判定方法なのでしょうか?

1つ目の if は、商品ステータスの情報を保持しているかの判定だと思います。

2つ目の if は、「flg + 1」番目の商品フラグが立っている(1か否か)の判定だと思います。


> $arrProduct.product_flag
> はステータスの数のことだと思うのですが、

うろ覚えですが、「0 or 1」の集合で出来ている文字列だったと思います。

ex. 01001


> <!--{if $arrProduct.product_flag[flg] == "1"}-->
> というのはこのステータスの数が1のときを指すのでしょうか?
> それともflgという値に0と1と入っていてそれが1のときを指すのでしょうか?

前者の解釈で言う「この」が、「$arrProduct.product_flag[flg]」を示していて、「数」が「数字」を示しているとするならば、前者の解釈が正しいと思います。

後者は誤っています。


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

FLY
投稿日時: 2009/11/4 10:12
対応状況: −−−
半人前
登録日: 2009/10/18
居住地:
投稿: 26
Re: 対象商品による支払方法選択
ありがとうございます。

初心者では難しい内容なんですね。。

ただ、データベースを見ると確かに01001などのように並んでいました。
恐らくこの並びがステータスの順番に並んでいて、1になってるところがチェックのついてる箇所を表しているかとおもいました。

ちなみに、こちらの環境だと7つステータスがあるので、
1100110
と並んでいるんですが、
この6番目の数字が0の場合の判定を行うということはできるのでしょうか?

またカートの中の商品にこれが一つでも含まれていると表示できないというようなこともできるでしょうか?

また、過去ログからカートの商品の取得を
$arrItem = $objCartSess->getCartList();
のように書けばできるのかなと思いました。
これをLC_Page_Shopping_Payment.phpに書き込んでみたのですが、
そこからステータスの部分を読み込みには
$arrProduct.product_flag[flg]
でできるのでしょうか?

すみませんが引き続きよろしくお願いいたします。
seasoft
投稿日時: 2009/11/4 10:43
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 対象商品による支払方法選択
> ちなみに、こちらの環境だと7つステータスがあるので、
> 1100110
> と並んでいるんですが、
> この6番目の数字が0の場合の判定を行うということはできるのでしょうか?

未検証ですが、Smarty の構文ではこんな感じだと思います。


<!--{if $arrProduct.product_flag[5] == "1"}-->
    真
<!--{else}-->
    偽
<!--{/if}-->



> またカートの中の商品にこれが一つでも含まれていると表示できないというようなこともできるでしょうか?

可能です。

私ならば、Smarty では処理せず、PHP 側で foreach で回すと思います。

ただし、処理する場所(画面)によって、保持している情報(変数)が異なりますので、改めて取得する必要があるケースも想定されると思います。


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

FLY
投稿日時: 2009/11/4 13:00
対応状況: −−−
半人前
登録日: 2009/10/18
居住地:
投稿: 26
Re: 対象商品による支払方法選択
ありがとうございます。

<!--{if $arrProduct.product_flag[5] == "1"}-->
    真
<!--{else}-->
    偽
<!--{/if}-->


こちら試したところ表示非表示させることができました。


ここからは素人で見ただけの解釈ですが、、

foreachで回すとありましたが、

$arrItem = $objCartSess->getCartList();

とした場合


foreach($arrItem as $data【任意の変数?】) {

if ($data['product_flag[5]'] == 1) {

} else {

}

}


みたいな書き方なのでしょうか?
違うとは思うんですが、、

何卒よろしくお願いいたします。
seasoft
投稿日時: 2009/11/4 13:07
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 対象商品による支払方法選択
なんとなくの流れとしては、そんな感じだと思います。

一般的なアルゴリズムとしては、else 分岐せずに、foreach より前で定義した変数をケースによって上書きするように組むことになると思います。(分かりにくい説明で申し訳ございません。)


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

FLY
投稿日時: 2009/11/6 8:52
対応状況: −−−
半人前
登録日: 2009/10/18
居住地:
投稿: 26
Re: 対象商品による支払方法選択
すみません。

いろいろやってみたのですが、進みませんでした。

$arrData = $objCartSess->getCartList();
	
		foreach ($arrData as $item) {
	
			if ($item['product_flag[5]'] == 1) {
		
				array_pop($arrPayment);
				$arrPayment[] = $data;
		
			} else {
			
			$arrPayment[] = $data;
		
		}


上記書いてみたんですが、エラーが出てしまいます。

Call to a member function on a non-object 〜

エラーの意味が分かりませんが、行数はこの追加した部分を指していました。

ちなみにLC_Page_Shopping_Payment.php内、346行目あたりに追加しました。

function lfGetPayment($total_pretax) {
        $objQuery = new SC_Query();
        $objQuery->setorder("rank DESC");
        //削除されていない支払方法を取得
        $arrRet = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image", "dtb_payment", "del_flg = 0 AND deliv_id IN (SELECT deliv_id FROM dtb_deliv WHERE del_flg = 0) ");
        //利用条件から支払可能方法を判定
        foreach($arrRet as $data) {
            //下限と上限が設定されている
            if($data['rule'] > 0 && $data['upper_rule'] > 0) {
                if($data['rule'] <= $total_pretax && $data['upper_rule'] >= $total_pretax) {
                    $arrPayment[] = $data;
                }
            //下限のみ設定されている
            } elseif($data['rule'] > 0) {
                if($data['rule'] <= $total_pretax) {
                    $arrPayment[] = $data;
                }
            //上限のみ設定されている
            } elseif($data['upper_rule'] > 0) {
                if($data['upper_rule'] >= $total_pretax) {
                    $arrPayment[] = $data;
                }
            //設定なし
            } else {
                $arrPayment[] = $data;
            }
        }
		
		// 購入商品情報取得追加
		/*
		$arrData = $objCartSess->getCartList();
	
		foreach ($arrData as $item) {
	
			if ($item['product_flag[5]'] == 1) {
		
				array_pop($arrPayment);
				$arrPayment[] = $data;
		
			} else {
			
			$arrPayment[] = $data;
		
		}
		*/
	
	}
		
        return $arrPayment;
		
    }


ここがお支払方法の表示に関わる部分かと思ったのですが、どうでしょうか?

すみませんがよろしくお願いいたします。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,117名です
総投稿数は110,039件です

投稿数ランキング

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