質問 > フロント機能 > 商品詳細ページに同カテゴリの商品を一覧表示 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
SK5 |
投稿日時: 2009/9/22 18:50
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2009/9/22 居住地: 投稿: 7 |
商品詳細ページに同カテゴリの商品を一覧表示 2.4.1にてカスタマイズしております。
現在商品詳細ページにて、同カテゴリの商品を一覧で表示しようと思っているのですが、商品の一覧は無事に表示されたものの、同カテゴリでの絞込みが上手くできておりません。 下記のスレッドを参考にさせて頂いたのですが、 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=3945&forum=10 >>カテゴリの絞込み表示は、dtb_product_categoriesからもってきて >>それを参考に絞込み表示させることが出来ました! という部分で躓いてしまいます。 カテゴリで絞れず、すべての商品がドバッと一覧で表示されてしまう状態です。 $this->lfDispProductsList($arrCategory_id[0], $_GET['name'], $this->disp_number, $_POST['orderby']); ↑で表示を操作しているまでは理解できるのですが… スレッドを参考にする限り、dtb_product_categoriesを読込み、$arrCategory_idをLC_Page_Products_Detail.php内で反映させるかと思うのですが、いくら様々試してみても弾かれてしまいます。 どなたがご教示頂けると幸いです。 何卒宜しくお願いいたします。 |
seasoft |
投稿日時: 2009/9/23 2:24
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 まずは、何を試したかを具体的に提示するのが早いと思いますよ。
|
SK5 |
投稿日時: 2009/9/23 14:40
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2009/9/22 居住地: 投稿: 7 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 seasoft様 お返事ありがとうございます。
>>まずは、何を試したかを具体的に提示するのが早いと思いますよ。 なるほど。 具体的に申しますと、商品詳細ページにて商品の一覧を出すために、list.phpよりDetail_.phpへソースをコピーし、Detail.tpl内で<!--{section name=cnt loop=$arrProducts}-->を使用できるようにしました。 この時点でカテゴリに関わらず、すべての商品が一覧で表示されるようになりました。 問題はここからです。 商品の一覧表示は function lfDispProductsList($category_id, $name, $disp_num, $orderby) { が行っており、上記にデータを渡しているのが、 $this->lfDispProductsList($arrCategory_id[0], $_GET['name'], $this->disp_number, $_POST['orderby']); だという部分まで突き止めました。 上記ソースの$arrCategory_id[0]の部分をカテゴリIDの数字へ、また、$this->disp_numberに商品登録数を直接打ち込むと、ページ内でカテゴリで絞られることがわかったのです。 なので、$arrCategory_id[0]がデータベースを参照している箇所を追って探しているのですが、全く見つかりません。 >>カテゴリの絞込み表示は、dtb_product_categoriesからもってきて >>それを参考に絞込み表示させることが出来ました! とあるので、$arrCategory_id参照元をdtb_product_categoriesへ変更するのかと思うのですが、これを変更したいため、 data/class/helper/SC_Helper_DB.php内でlfDispProductsListのソースをコピーして、 dtb_product_categoriesを読もうとしたのですが、エラーになるばかりで行き詰ってしまいました。 そもそも、この考えは間違っておりますでしょうか。 何かヒントでもご教示いただければと思います。 何卒宜しくお願いいたします。 |
seasoft |
投稿日時: 2009/9/23 16:28
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 >> なので、$arrCategory_id[0]がデータベースを参照している箇所を追って探しているのですが、全く見つかりません。
EC-CUBEコミュニティ(eccube-comu) では、$this->lfDispProductsList() のようにパラメータを渡さずに呼ぶように変更されており、以前の実装は少々過去の記憶になっており、若干うろ覚えですが・・・ 「$arrCategory_id[0]がデータベースを参照している」というよりも、$arrCategory_id[0] を問い合わせの抽出条件として利用していたと思います。 厳密には、問い合わせる前に、子カテゴリまで展開する処理が挟まったと思います。 引用:
個人的には、dtb_product_categories を参照しなくても必要な情報は、商品詳細の処理で取得していたと思います。ただし、子カテゴリまで展開する必要はあると思いますが、それは既存の処理を流用できると思います。 複数のカテゴリに割り当てしている商品をどのように処理するか、仕様決めが重要になるかと思います。
|
tmtqn543 |
投稿日時: 2009/11/10 19:48
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2008/12/26 居住地: 長野県諏訪郡原村 投稿: 108 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 私もSK5さんと全く同じところで躓いております。
SK5さんと同じように、商品詳細ページに同カテゴリ商品を一覧で表示しようとしております。 listのソースを用い、全作品の一覧は表させることが出来ましたが、 やはりSK5さんの躓いておられる箇所の・・、 >>カテゴリの絞込み表示は、dtb_product_categoriesからもってきて >>それを参考に絞込み表示させることが出来ました! という所で、方法が分からず完全に行き詰ってしまいました。 また、商品詳細ページに表示させた、商品一覧ページの内容のソートと、 上部にある「 1 | 2 次へ>> 」部分については何とか実装出来たのですが、 「12件の作品」の箇所については上記同様、 どうやってもカテゴリと同じ表示にして表示することができません。 * 商品の表示部分ですが・・ <!--▼商品ここから--> <!--{section name=cnt loop=$arrProducts}--> <!--{assign var=id value=$arrProducts[cnt].product_id}--> <div class="listarea_detail"> ・ ・ ・ </div> <!--{/section}--> 上記ソースのみではカテゴリーの詳細を表示することは出来ないようなのですが、このソースにさらに追加する箇所はありますでしょうか? また件数表示している部分の・・、 <!--件数ここから--> <!--{if $tpl_linemax > 0}--> <ul class="pagenumberarea"> <li class="left"><span class="pagenumber"><!--{$tpl_linemax}--></span>件の作品</li> ・ ・ ・ </ul> <!--{/if}--> <!--件数ここまで--> こちらもこのソースにも何かしらの指定を追加するのでしょうか? LC_Page_Products_Detail.phpのなかでも、 やはりどこかに追加する部分があるかと思います。 いろいろと考え付く指定をしてみたのですが、現在のわたしのスキルではこれ以上どうしても分からず困っています。 もしお分かりの方がいらっしゃいましたら、今後の研鑽のためにヒントだけでもいただければ幸いです。 どうか何卒よろしくお願いいたします。 |
tmtqn543 |
投稿日時: 2009/11/11 12:17
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2008/12/26 居住地: 長野県諏訪郡原村 投稿: 108 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 追記です。
--- // GETのカテゴリIDを元に正しいカテゴリIDを取得する。 $arrCategory_id = $objDb->sfGetCategoryId("", $_GET['category_id']); if (!isset($_GET['mode'])) $_GET['mode'] = ""; if (!isset($_GET['name'])) $_GET['name'] = ""; if (!isset($_POST['orderby'])) $_POST['orderby'] = ""; if (empty($arrCategory_id)) $arrCategory_id = array("0"); --- 上記部分でカテゴリーIDを取得しているらしいことまでは分かったのですが、 一番上の行の""の部分に数字を入れると、 入れた数字はプロダクトID扱いになり、 このIDが含まれているカテゴリーを表示していることまでは突き止めました。 しかしながら、数字は自分で挿入しなければ動かず、 また、現在表示中のページとの関連も出来ず、 やはり正しく表示させることが出来ませんでした・・。 |
ゲスト |
投稿日時: 2009/11/15 2:23
対応状況: −−−
|
Re: 商品詳細ページに同カテゴリの商品を一覧表示 横から失礼します。
引用:
$arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'],'',$status); でカテゴリIDを取得しているので、これで絞れませんか? ただこれだと複数カテゴリや階層の途中からきた場合、listに表示される内容とは変わると思いますが... list.phpのコードをそのまま使いたいのであれば、listの検索に使われたcategory_idをdetail渡してやれば早いかも。子カテも検索してくれるので。 ただこれも、検索ブロックからきた場合はcategory_idを持たない場合があるので、ひと工夫が必要になるかと。 seasoftさんが言うように仕様が重要で、それによって作り方が全くかわるような気がします。 |
|
tmtqn543 |
投稿日時: 2009/11/18 16:20
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2008/12/26 居住地: 長野県諏訪郡原村 投稿: 108 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 jazz4noさまお返事ありがとうございました。
お知らせ頂いた $arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'],'',$status); で表示できるか試してみましたが、うまく取得できないようでした。 表示は全件になってしまうようです。 そこで、$arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'],'数字',$status); に数字を入れると、入れた数字と同じproduct_idが含まれるカテゴリーの全ての商品が表示される様です。 プロにお願いしないとやはり現在のスキルでは難しい状況かもしれませんが、もう少し考えてみます。 |
ゲスト |
投稿日時: 2009/11/18 23:23
対応状況: −−−
|
Re: 商品詳細ページに同カテゴリの商品を一覧表示 こちらでも、list の lfDispProductsList と
<!--{section name=cnt loop=$arrProducts}--> 〜 <!--{/section}--> をコピペして試してみました。 単一カテゴリであることが前提ですが、カテゴリで絞り込んだリストがでますよ。 $arrCategory_id の値は Array ( [0] => 5 ) のような配列になっていませんか? |
|
tmtqn543 |
投稿日時: 2009/11/19 12:38
対応状況: −−−
|
一人前 ![]() ![]() 登録日: 2008/12/26 居住地: 長野県諏訪郡原村 投稿: 108 |
Re: 商品詳細ページに同カテゴリの商品を一覧表示 お返事ありがとうございます。
早速、お知らせ頂いた部分のみでわたしも試してみました。 テストに新たに用意した2.4.1のサイトの、LC_Page_Products_list.phpの該当箇所とlist.phpの該当箇所のソースをdetailのほうへ挿入しましたところ、表示自体は行われるのですが、やはりカテゴリー別にはなりませんでした。 そこで試しに新規に"雑貨"というカテゴリーを1階層目に制作し、その中に商品を登録してみましたが、やはりどの商品詳細ページを見ても全て表示されてしまいまして、そのカテゴリーの商品のみを絞込み表示させることは私の環境では出来ませんでした。 引用:
上記の部分ですが、このように表記してある部分は見つかりませんでした。 * 因みに挿入するソースに間違いがあるかもしれませんので、御確認させてください。 LC_Page_Products_List.phpですが、 // 商品一覧の表示処理 $this->lfDispProductsList($arrCategory_id[0], $_GET['name'], $this->disp_number, $_POST['orderby']); と、 下のほうの、 /* 商品一覧の表示 */ function lfDispProductsList($category_id, $name, $disp_num, $orderby) { $objQuery = new SC_Query(); 〜 // 購入制限数を取得 $this->lfGetSaleLimit($this->arrProducts[$i]); } } } あたりまでで良いのでしょうか? * またお返事いただきましたら幸いです。どうぞよろしくお願いいたします。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |