質問 > フロント機能 > 対象商品による支払方法選択 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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.」は、「何円〜何円までの場合選択できる条件」をどう利用するのかちょっと謎かな。 ソース的に同じような位置で取捨を行なうという意味なら、それでも良い気はします。
|
osamusi |
投稿日時: 2009/11/2 13:46
対応状況: −−−
|
長老 登録日: 2008/11/5 居住地: 投稿: 204 |
Re: 対象商品による支払方法選択 1の方が処理的には綺麗ですよね。
カスタマイズもそれほど対したものではないので、1が良いと思います。
|
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]」を示していて、「数」が「数字」を示しているとするならば、前者の解釈が正しいと思います。 後者は誤っています。
|
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 の構文ではこんな感じだと思います。
> またカートの中の商品にこれが一つでも含まれていると表示できないというようなこともできるでしょうか? 可能です。 私ならば、Smarty では処理せず、PHP 側で foreach で回すと思います。 ただし、処理する場所(画面)によって、保持している情報(変数)が異なりますので、改めて取得する必要があるケースも想定されると思います。
|
FLY |
投稿日時: 2009/11/4 13:00
対応状況: −−−
|
半人前 登録日: 2009/10/18 居住地: 投稿: 26 |
Re: 対象商品による支払方法選択 ありがとうございます。
こちら試したところ表示非表示させることができました。 ここからは素人で見ただけの解釈ですが、、 foreachで回すとありましたが、 $arrItem = $objCartSess->getCartList(); とした場合
みたいな書き方なのでしょうか? 違うとは思うんですが、、 何卒よろしくお願いいたします。 |
seasoft |
投稿日時: 2009/11/4 13:07
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 対象商品による支払方法選択 なんとなくの流れとしては、そんな感じだと思います。
一般的なアルゴリズムとしては、else 分岐せずに、foreach より前で定義した変数をケースによって上書きするように組むことになると思います。(分かりにくい説明で申し訳ございません。)
|
FLY |
投稿日時: 2009/11/6 8:52
対応状況: −−−
|
半人前 登録日: 2009/10/18 居住地: 投稿: 26 |
Re: 対象商品による支払方法選択 すみません。
いろいろやってみたのですが、進みませんでした。
上記書いてみたんですが、エラーが出てしまいます。 Call to a member function on a non-object 〜 エラーの意味が分かりませんが、行数はこの追加した部分を指していました。 ちなみにLC_Page_Shopping_Payment.php内、346行目あたりに追加しました。
ここがお支払方法の表示に関わる部分かと思ったのですが、どうでしょうか? すみませんがよろしくお願いいたします。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |