配送先ごとに個別送料を表示する。…の続き。 | φ(..)メモとして残しておこう…

配送先ごとに個別送料を表示する。…の続き。

配送先ごとに個別の送料を計算するってことは、それも表示したほうがいいので、表示することに。

/data/Smarty/templates/default/shopping/confirm.tpl

を弄って、表示できるようにしなきゃ…。

…と、その前に'SC_CartSession.php'のお届け先ごとに送料を計算する処理でデータをセッションに書き込む。

$_SESSION['multi_deliv'][$loop]['deliv_fee'] = $deliv_fee;

こんな感じかな。


でもって、'confirm.tpl'に戻って

<tr>
<th scope="row">電話番号
<td><!--{$shippingItem.shipping_tel01}-->-<!--{$shippingItem.shipping_tel02}-->-<!--{$shippingItem.shipping_tel03}-->
</tr>

の下辺りに以下を追加。

--------------------------------------------------------

<!--{assign var="name" value=$smarty.foreach.shippingItem.iteration-1}-->
<!--{if $is_multiple}-->
<tr>
<th scope="row">個別送料</th>
<td><!--{$smarty.session.multi_deliv.$name.deliv_fee}-->円</td>
</tr>
<!--{/if}-->

--------------------------------------------------------

<!--{assign var="name" value=$smarty.foreach.shippingItem.iteration-1}-->

"name"という変数の中にforeachで繰り返されるshippingItemの現在のループ回数を入れる。

トータルのカウント->count($shippingItem)を取る場合は
{$shippingItem|@count}
…まあ、それはおいといて。

今回の場合は、
$loop = 0;
foreach($a as $b){

処理;
echo $loop;
$loop++;

}

みたいな感じで、現在のループ回数を取得。

「-1」しているのは、0からではなく1から始まるから。
なんでだろ?



<!--{$smarty.session.multi_deliv.$name.deliv_fee}-->

要するに、phpでいうところの
echo $_SESSION['multi_deliv'][$name]['deliv_fee'];






Smartyについてですが…
{assign} | Smarty
(注)
テンプレート内で変数に代入するというのは、これは本来はPHP側でやったほうがうまく処理できることでしょう。自己責任のもとで使いましょう。

だそうです。
個人的にそう思います。

つか、Smartyはテンプレートエンジンなのでロジックを書くなとかなんとか色々言われてるけど、PHP自体Smartyみたいな使い方をする埋め込みコードなんで、正直smartyなんていらな(ry