バージョン選択

フォーラム

メニュー

オンライン状況

44 人のユーザが現在オンラインです。 (35 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 43
tattsu もっと...

サイト内検索

質問 > フロント機能 > カテゴリ別の商品一覧を動的ブロックで作りたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
@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つ指定して商品一覧を取得する事が出来ると思います。

//カテゴリIDを指定してカテゴリを取得する(この例ではcategory_id=1)
$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,
));


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

@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が設定されていると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

@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
の中の記述が参考になるかと思います。

あと、リンク先のブロックの作成方法は、正しい方法と思いますので、
ブロックを追加する作業自体は間違っていません。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

@maight
投稿日時: 2018/7/15 5:30
対応状況: −−−
新米
登録日: 2018/7/13
居住地:
投稿: 4
Re: カテゴリ別の商品一覧を動的ブロックで作りたい
ご返信ありがとうございます。

ご指摘の通りに記述したところ、ちゃんと表記されました!

EC-cube3はネット記事漁っても中々自分では理解できないことが多いので、ご丁寧にご説明いただいて大変助かりました。

ご参考のファイル見ながら少しずつ勉強していこうかと思います。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,688名です
総投稿数は109,934件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1280
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.