質問 > フロント機能 > カテゴリ別の商品一覧を動的ブロックで作りたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
@maight |
投稿日時: 2018/7/13 13:04
対応状況: −−−
|
新米 登録日: 2018/7/13 居住地: 投稿: 4 |
カテゴリ別の商品一覧を動的ブロックで作りたい カテゴリ別の商品一覧を動的ブロックで作りたい
下記のページを見ながら新着商品一覧の動的ブロックを作成することには成功しました。 ・動的ブロックの作成方法 カテゴリ別の一覧を作りたいのですが どこの記述のどのパラメータをどういじればそれができるのかがわかりません>< おそらく「 src/Eccube/Controller/Block/xxxxxController.php 」内の以下記述 $Products = $app['eccube.repository.product'] ->createQueryBuilder('p') ->orderBy('p.create_date', 'DESC') ->setMaxResults(5) ->getQuery() ->getResult(); return $app->render('Block/new_item.twig', array( 'Products' => $Products, )); をいじるのでしょうけど、 何をどう追加すればカテゴリ別にできるか、設定の仕方をご教授いただきたいです>< [EC-CUBE] EC-CUBE3系(最新のもの) [環境] XAMPP(localhost) [OS] windows [PHP] PHP5以降?? [データベース] PHPMyAdmin [現象] 再現手順や、どのような現象が発生しているかなど、具体的に |
468 |
投稿日時: 2018/7/13 17:14
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい 1ブロック=1カテゴリというイメージですか?
(カテゴリ毎にブロックを追加する) src/Eccube/Controller/Block/xxxxxController.phpに以下の記述を追加すれば、 カテゴリを1つ指定して商品一覧を取得する事が出来ると思います。
|
@maight |
投稿日時: 2018/7/13 23:23
対応状況: −−−
|
新米 登録日: 2018/7/13 居住地: 投稿: 4 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい >1ブロック=1カテゴリというイメージですか?
はい!その通りです。 さっそく試したのですが上手く表記されませんでした。 ※エラーが出るのではなく、ソースにはちゃんと 「<-- ▼ カテゴリ別商品一覧 ▼ --> <-- ▲ カテゴリ別商品一覧 ▲ -->」と出ていましたがそれだけで中身が空でした。 下記記事に沿い動的ブロックを作って、動的ブロックの作成方法 「src/Eccube/Controller/Block/xxxxxController.php」のファイルに 教えてもらった通りのソースを張り付けたのですが(->setParameter('Category', $Category); 箇所のセミコロンは取って張り付けました)それでもダメでした>< 図々しいかもしれませんが、他に私の方で欠落していそうな手順や、この記事役に立つよなどあればご教授いただきたいです。 よろしくお願いいたします。 |
468 |
投稿日時: 2018/7/14 10:17
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい すみません。
セミコロンは不要でしたね。 以下のコードの「*」の部分を他の数値にしても表示されませんか? $Category = $app['eccube.repository.category']->find(*); デフォルトだと1=キッチンツール, 2=インテリアという感じでIDが設定されていると思います。
|
@maight |
投稿日時: 2018/7/14 13:19
対応状況: −−−
|
新米 登録日: 2018/7/13 居住地: 投稿: 4 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい 返信ありがとうございます><
やはり find(*) の数値をいじっても無理でした、、、 その他のファイルの記述に問題が?と思ったので、 頂いたソース(下記①)を ① $Category = $app['eccube.repository.category']->find(1); $Products = $app['eccube.repository.product'] ->createQueryBuilder('p') ->innerJoin('p.ProductCategories', 'pct') ->innerJoin('pct.Category', 'c') ->andWhere('pct.Category', ':Category') ->setParameter('Category', $Category) ->orderBy('p.create_date', 'DESC') ->setMaxResults(5) ->getQuery() ->getResult(); return $app->render('Block/new_item.twig', array( 'Products' => $Products, )); 下記②(新着商品を引っ張て来るもの)に変えてみたのですが こちらは普通に新着商品がページ上で表記されるようです>< ② $Products = $app['eccube.repository.product'] ->createQueryBuilder('p') ->orderBy('p.create_date', 'DESC') ->setMaxResults(5) ->getQuery() ->getResult(); return $app->render('Block/new_item.twig', array( 'Products' => $Products, 下記記事の手順で作ろうとすること自体、メジャーなやり方ではなかったりするのでしょうか?? 動的ブロックの作成方法 |
468 |
投稿日時: 2018/7/14 20:43
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい 実際にコードをブロックコントローラーに書いて確認したところ、以下の記述が誤っていました。
->andWhere('pct.Category', ':Category') ↓ ->andWhere('pct.Category = :Category') これで指定したカテゴリの商品が表示されると思います。 あと、今のままだと非公開の商品も表示されると思いますので、 ->andWhere('p.Status = 1') の記述も追加しておく必要があると思います。 データをデータベースから取得する方法のうち、 抽出条件の書き方等は、 /src/Eccube/Repository/ProductRepository.php の中の記述が参考になるかと思います。 あと、リンク先のブロックの作成方法は、正しい方法と思いますので、 ブロックを追加する作業自体は間違っていません。
|
@maight |
投稿日時: 2018/7/15 5:30
対応状況: −−−
|
新米 登録日: 2018/7/13 居住地: 投稿: 4 |
Re: カテゴリ別の商品一覧を動的ブロックで作りたい ご返信ありがとうございます。
ご指摘の通りに記述したところ、ちゃんと表記されました! EC-cube3はネット記事漁っても中々自分では理解できないことが多いので、ご丁寧にご説明いただいて大変助かりました。 ご参考のファイル見ながら少しずつ勉強していこうかと思います。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |