画像だけをリスト表示する機能が欲しい。
どうするかちょっと悩んだけど、スタイルの切り替えが一番楽かな。
ただし、スタイルを切り替えただけだとページ送りした際に元に戻ってしまうので、sessionとの併用が必要。
流れてとしては、
- 表示切替をクリックしたら、javascripでスタイル切り替え、Ajaxでsession処理
- 該当ページにアクセスしたときに、sessionチェックしてスタイル切り替える
さて、予定通りいくかな?
以下は実際に記述した内容。
HTML部分
まず、表示切替用のリンクを設ける。
テンプレートファイル
/Smarty/templates/作成したテンプレート名/products/list.tpl
を修正するして、切り替え用のリンクを設置。
表示件数の隣に
<a id="disp_switch_img" href="#disp_switch_img">画像のみ</a> <a id="disp_switch_list" href="#disp_switch_list">リスト表示</a>
javascript部分
切り替えスイッチがクリックされたときに、該当部分のスタイル名を変更
cmn.jsを作成し、読み込むように。
$(function() { displayWindow(); displayList(); }); function displayWindow(){ $("#disp_switch_img").live('click',function(event){ event.preventDefault(); $(".list_area").attr('class','list_window'); }) } function displayList(){ $("#disp_switch_list").live('click',function(event){ event.preventDefault(); $(".list_window").attr('class','list_area clearfix'); }) }
CSS部分
画像のみ表示用のスタイルを準備。
他、微調整
common.cssに以下を追加
.list_window .listcomment, .list_window .detail_btn, .list_window .cart_area {display:none;} .list_window{ width: 150px; height:250px; float:left; margin-left:20px; } .list_window div.listphoto { float:none; } #two_maincolumn_right .list_window div.listrightbloc , #two_maincolumn_left .list_window div.listrightbloc { float:none; width:100%; } .list_window div.listrightbloc ul.status_icon { margin-bottom:0; }
contents.cssを微調整
clear:bothを追加。
.pagenumber_area { clear:both; padding-bottom: 10px; background: url("../img/background/line_dot_01.gif") repeat-x bottom ; }
これで表示の切り替えができた。
注意点としては、商品名がとても長かったりするとレイアウトが崩れる。
その場合は、.list_windowのheightを調整すると回避できる。
もっとうまくCSSを記述できればいいのだけど、今回はこのくらいで。
次はsessionを利用して、表示状態を保持できるようにする。