規格関連を調べる用があったので、ついでにやってみました。
こんな感じです。
例のごとく、配置場所やスタイルはご自分の好みに合わせて変えてください。
1.data/class/pages/products/LC_Page_Products_Detail.php の action() 内に以下のコードを挿入。
$product_id 定義以降であればどこに配置しても良いですが、私は113行目付近(規格選択セレクトボックスの作成の後)に配置しました。
// 商品規格情報の取得 $this->arrProductsClassList = $this->lfGetProductsClass($product_id);
2.data/Smarty/templates/default/products/detail.tpl の任意の場所に以下のコードを挿入。(2011/11/27 に一部修正)
<!--{* 規格テーブル *}--> <!--{if $arrProductsClassList|@count > 1}--> <table style="width:auto;"> <tr> <th>規格名</th> <th>価格</th> </tr> <!--{section name=i loop=$arrProductsClassList}--> <tr> <td><!--{$arrProductsClassList[i].classcategory_name1|h}--> <!--{if $arrProductsClassList[i].classcategory_name2 != ''}--> : <!--{$arrProductsClassList[i].classcategory_name2|h}--> <!--{/if}--> </td> <td> <!--{$arrProductsClassList[i].price02|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円 </td> </tr> <!--{/section}--> </table> <!--{/if}-->
情報ありがとうございます!
すみません、一つ確認したいのですが、
LC_Page_Products_Detail.php
のaction()の一番最後に、
$this->arrProductsClassList = $this->lfGetProductsClass($product_id);
を入力しました。
data/Smarty/templates/default/products/detail.tpl
も同様に行い、サーバーのプログラムを更新すると、任意の商品を選択後「カートへ」を行うと、商品詳細のままで遷移しません。
LC_Page_Products_Detail.php
を更新前に戻すと直るのですが、何か心当たりはありますか?
こんにちは。
まだ上記カスタマイズを施したサイトが残っていたので見てみましたが、
カートへ進めないという現象は確認できませんでした。
コードを見ていただくとわかりますが、
定義済みの関数 lfGetProductsClass を呼び出して、
未使用の変数 $this->arrProductsClassList に代入しているだけなので、
問題は発生しにくいと思うのですが。
他のカスタマイズを実装されている場合や、
$this->arrProductsClassList の定義場所によっては、
問題が起こる可能性もあると思います。
例えば、$this->arrProductsClassList の定義を、
113行目付近(規格選択セレクトボックスの作成の後)に記述してみるとどうですか?
それでもうまくいかない場合は、ちょっとわかりません。
すいません。
fukap 様
情報ありがとうございます(_ _)
本日、原因が特定できて、無事に一覧を表示したまま「カート」に進めるようになりました!
その原因は、現在ec-cube開発コミュニティーでも質問を流している「規格」を増やす際に、私が流れを把握するために記述した文法がどうも悪さをしていたようです。
単純に > が抜けていたというだけなんですが・・・
よく今まで動いていたなぁと思います。
ご迷惑おかけしました。
はじめまして!
記事を参考にそのまま導入したものなのですが、規格の利用が規格1だけだった場合、その規格1の登録名だけが重複されるようです。
上記の画面で言うと、抹茶:抹茶 980円 のような形になります。
でちゃんと条件を与えれば出来ると思っていましたが、自分が疎いせいか、難しくてできませんでした・・・。
お手数ですが、教えて頂けますとありがたいです!
すいません、コードを挿入したのですが、囲っていませんでした!
~でちゃんと条件を与えれば・・・の所に下のコードが入ります!
ご指摘ありがとうございます。
仰る通り、規格1のみ設定した場合は重複して表示され、見づらくなっていますね。
ちょっとdata/Smarty/templates/default/products/detail.tplのコードを変えてみましたので、
適用してみてもらえますか?
fukap様
なりました!
おかげですっきり致しました!
ちょっとした修正でできたんですね、自分もこうのを事前に理解して、聞くだけではなく、修正コードまで提示できるように勉強いたします!
ありがとうございました!
無事解決したようで良かったです。
配列は中身を出力しながら試していくと、いろいろわかってきます。
例えば、
という感じでテンプレにコードを書くと出力されます。
既にご存知かもしれませんが、ご参考まで。
基礎的な事は知らないに等しかったので、こういう便利な知恵は助かります!
今後も記事を見続けて勉強させていただこうと思っています!
ありがとうございました!
2.11.4でも試してみましたが、問題なく表示されました。
ピンバック: EC-CUBEで商品規格一覧表を表示する方法 | モンキーレンチ
ピンバック: ECCUBEの小技:商品詳細ページに商品規格一覧を表示 | 戯れ問答
いきなりですみませんが、質問させて下さい。
この表は商品詳細ページのみにしか対応できないのでしょうか?
可能であれば、商品一覧ページにも記載出来たらと思います。
勝手を言って申し訳ありませんが、ご回答お待ちしております。
しゅんさん、こんにちは。
商品一覧ページでもカートボタンは付いていますから、
今回のようなテーブル表示は可能なはずです。
ただ、商品一覧ページ用にコードは書き換える必要があるはずです。
早々のお返事ありがとうございます。
data/class/pages/products/LC_Page_Products_list.php
のaction()内に入れるコードを書き換える必要があるということでしょうか?
action()内にproduct_idが定義されていなかったので悩んでいるところです。
list.tplは書き換えの必要はないのかなと思っているのですが…
本記事では、商品規格情報の取得のためのコードを、LC_Page_Products_Detail.php に挿入していますから、
同様に、LC_Page_Products_List.php の action メソッド内も何らかのコード挿入が必要だと思います。
ちょっと具体的なコード提供まではできませんので、ご了承ください。
ご丁寧にありがとうございます。
いろいろと触ってみようと思います!