【EC-CUBE】カートの商品表示順の降・昇順を入れ替えて表示する
/data/Smarty/templates/default/cart/index.tpl
の下記の記述(Ver.2.3Rc1の場合、L71)に
<!–{section name=cnt loop=$arrProductsClass}–>
↓このように「step=-1」を追加。
<!–{section name=cnt loop=$arrProductsClass step=-1}–>
これだけ。
タグ: EC-CUBE
/data/Smarty/templates/default/cart/index.tpl
の下記の記述(Ver.2.3Rc1の場合、L71)に
<!–{section name=cnt loop=$arrProductsClass}–>
↓このように「step=-1」を追加。
<!–{section name=cnt loop=$arrProductsClass step=-1}–>
これだけ。
ロジックは、あるから、テンプレの変更で対応できる。
1)/data/Smarty/templates/default/mobile/shopping/deliv_date.tpl
の33~35行目を
<!–{if $tpl_login == 1}–>
<!–<input type=”hidden” name=”point_check” value=”2″>–>
<!–{/if}–>
↓このように変更。
<!–{if $tpl_login == 1}–>
■ポイント利用<br />
現在の所持ポイントは「<!–{$tpl_user_point|default:0}–> pt」です。<br />
所持ポイント以上のポイントはご利用いただけません。<br />
<input type=”hidden” name=”point_check” value=”1″ />
<input type=”text” name=”use_point” istyle=”4″ />
<!–{/if}–>
2)/data/Smarty/templates/default/mobile/shopping/confirm.tpl
の72行目に以下を挿入。
【購入金額】<br>
商品合計:<!–{$tpl_total_pretax|number_format}–><br>
送料:<!–{$arrData.deliv_fee|number_format}–><br>
<!–{if $arrData.charge > 0}–>手数料:<!–{$arrData.charge|number_format}–><br><!–{/if}–>
(ここへコードを追加。)
合計:<!–{$arrData.payment_total|number_format}–><br>
(内消費税:<!–{$arrData.tax|number_format}–>)<br>
↓このように。
【購入金額】<br>
商品合計:<!–{$tpl_total_pretax|number_format}–><br>
送料:<!–{$arrData.deliv_fee|number_format}–><br>
<!–{if $arrData.charge > 0}–>手数料:<!–{$arrData.charge|number_format}–><br><!–{/if}–>
<!–{assign var=discount value=`$arrData.use_point*$smarty.const.POINT_VALUE`}–>-<!–{$discount|number_format|default:0}–>円
合計:<!–{$arrData.payment_total|number_format}–><br>
(内消費税:<!–{$arrData.tax|number_format}–>)<br>
ページのQRコードを動的に生成させる場合などに、現在のページそのもののURLを取得してテンプレートへ出力するには、PHPでURLを取得して、変数を定義しておく→tplファイルで、その変数を表示、というやり方も使える。
要は、
https://bton.papalabs.net/?p=355
https://bton.papalabs.net/?p=358
↑この記事の複合技。
先の記事は、EC-CUBEでプロダクトやカテゴリの変数を情報として使う前提でコードを組んでいるので、その他のページには使えない。でも、こちらのやり方であれば、その他のシステムにも応用が利く。但し、一覧ページの場合は、そのページそのものというのは、一覧のページということになるから、「一覧ページで各商品ページのURLをQRコードで表示したい」という場合は、先のやり方を使う。
1)現在のページURLを取得するPHPコードを保存する。
下記のコードを「urlget.php」という名称で作成し、EC-CUBEのルートディレクトリへ保存。(別に変えてもかまわない。)
<?php
$thisURL=’http://’.htmlspecialchars($HTTP_SERVER_VARS[‘HTTP_HOST’],ENT_QUOTES).htmlspecialchars($HTTP_SERVER_VARS[‘REQUEST_URI’],ENT_QUOTES);
define(’CONFIG_THIS_URL’,$thisURL);
?>
2)作成した「urlget.php」を読み込む。
/require.php
の適当な位置(Ver.2.3RC1の場合、L27とかが分かりやすい。)に
require_once($require_php_dir . “/urlget.php”);
と追記し、「urlget.php」を呼び出す。
3)テンプレートに表示用のコードを追加。
そのページそのもののQRコードを表示させたいテンプレートに、
<img src=”<!–{$smarty.const.SITE_URL}–>php/qr_img.php?d=<!–{$smarty.const.CONFIG_THIS_URL}–>&e=M&s=3&t=j”>
または、
<img src=”<!–{$smarty.const.URL_DIR}–>php/qr_img.php?d=<!–{$smarty.const.CONFIG_THIS_URL}–>&e=M&s=3&t=j”>
と記載する。(QRコード表示用のPHPへのパスの表示が変わるだけで結果は同じなので、どっちでもOK。)
qr_img.phpへのパスと格納ディレクトリに矛盾がないか確認のこと。(アップロードしたディレクトリ構造によって上記パスは変わる)
商品一覧ページの一覧上下に表示されているソートリンクを追加(または変更)して、降順・昇順の並べ替えボタンを作ることができる。
例えば、
「価格:高い順 安い順 新しい順 古い順」
に並べ替えというようなことが可能。
1)/data/class/pages/products/LC_Page_Products_List.php を編集。
//表示順序
switch($orderby) {
という記述を探します。(Ver.2.3RC1の場合、L387あたり。)
その下の、
「case ‘ ○○ ‘:」
という部分が、それぞれのソートのルールを決めている部分。
この中の、「$order =” ○○ “;」というところがソートの指定。ここに、ソートに使用したい項目を入れる。優先順も。降順にしたい場合は、項目の後に半角スペースを入れて、「disc」と記述。
仮に、価格降順(高いほうから安いほうへ)のソートルールを作るのであれば、
case ‘price’:
$col = “DISTINCT price02_min, product_id, product_code_min, product_code_max,”
. ” name, comment1, comment2, comment3,”
. ” main_list_comment, main_image, main_list_image,”
. ” price01_min, price01_max, price02_max,”
. ” stock_min, stock_max, stock_unlimited_min, stock_unlimited_max,”
. ” point_rate, sale_limit, sale_unlimited, deliv_date_id, deliv_fee,”
. ” status, product_flag, create_date, del_flg”;
$from = “vw_products_allclass AS T1”;
$order = “price02_min, product_id”;
break;
をコピーして、「case ‘price2’:」などとして、「$order = “price02_min, product_id”;」→「$order = “price02_min disc, product_id”;」とすればよい。
2)/data/Smarty/templates/default/list.tpl テンプレートにソーとリンクを追加表示させる。
L69行目以下の適当な場所/L188行目以下の適当な場所に表示リンクを追加(または修正)する。
先の例で、価格降順のリンクを追加する場合としたら、
<!–{if $orderby != ‘price2‘}–>
<a href=”javascript:fnModeSubmit(”, ‘orderby’, ‘price2‘)”>価格降順</a>
<!–{else}–>
<strong>価格降順</strong>
<!–{/if}–>
こういう形のコードを追加し、「価格順」という文字を「価格昇順」と変更すれば、価格のソートは、高いほうからも安いほうからも並べ替えできるようになる。
例として「お問い合わせ」のお客様情報入力欄に「会社名」欄を追加する
1)\data\class\pages\contact\LC_Page_Contact.php を修正。
2)\data\Smarty\templates\default\contact\index.tpl を修正。
会社名入力枠を「お名前」の前に追加する。 (Ver.2.3Rc1の場合、L37あたり)
<tr>
<th>会社名</th>
<td>
<input type=”text”
class=”box380″
name=”cname01″
value=”<!–{$cname01|default:$arrData.cname01|escape}–>”
maxlength=”<!–{$smarty.const.STEXT_LEN}–>”
style=”<!–{$arrErr.cname01|sfGetErrorColor}–>” />
</td>
</tr>
3)\data\Smarty\templates\default\contact\confirm.tpl
会社名表示枠を「お名前」の前に追加する。 (Ver.2.3Rc1の場合、L38あたり)
<tr>
<th>会社名</th>
<td><!–{$arrForm.cname01|escape}–></td>
</tr>
4)\data\Smarty\templates\default\mail_templates\contact_mail.tpl
会社名を「お名前」の前に追加。 (Ver.2.3Rc1の場合、L42あたり)
■会社名:<!–{$arrForm.cname01}–>