バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 新着商品の表示について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nakamori
投稿日時: 2024/5/21 14:33
対応状況: −−−
常連
登録日: 2018/4/25
居住地:
投稿: 36
新着商品の表示について
[EC-CUBE] EC-CUBE4.2.2
[PHP] PHP8.1
[データベース] MySQL 10.4.24-MariaDB
[WEBサーバ] Apache/2.4

お世話になります。
下記ページを参考に、トップページに新着商品を表示するカスタマイズを行いましたが、新着10件を指定しても7~8件しか表示されないことがあります。
https://www.spreadworks.co.jp/top-new-products-for-ec-cube4/


dtb_productの中身を付け合わせてみたところ、product_status_idが2(非公開)と3(廃止)を合わせた10件を拾って来てしまうようで、そのうちproduct_status_idが1(公開)だけ表示されていることがわかりました。

新着商品を10件取得するときに、product_status_id=1の条件を追加するにはどのようにしたら良いでしょうか。



h_tanaka
投稿日時: 2024/5/21 15:10
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: 新着商品の表示について
カスタマイズしているソースを開示してくれたほうがアドバイスをしやすいです。
クエリビルダー使っているならこうです。

        $qb = $this->createQueryBuilder('p')
            ->andWhere('p.Status = 1');


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

nakamori
投稿日時: 2024/5/22 9:04
対応状況: −−−
常連
登録日: 2018/4/25
居住地:
投稿: 36
Re: 新着商品の表示について
ありがとうございます。
ソースは参考に上げたURLのものをそのまま利用しています。
※件数だけ3件→10件に変更してます。

/**
     * 
     * 新着商品3件返す
     * 
     * @return Products|null
     */
    public function getCustomizeNewProduct()
    {
        try {
            // 検索条件の新着順を定義
            $searchData = array();
            $qb = $this->entityManager->createQueryBuilder();
            $query = $qb->select("plob")
                ->from("Eccube\\Entity\\Master\\ProductListOrderBy", "plob")
                ->where('plob.id = :id')
                ->setParameter('id', $this->eccubeConfig['eccube_product_order_newer'])
                ->getQuery();
            $searchData['orderby'] = $query->getOneOrNullResult();

            // 定義した「$searchData」を引数にしてQueryBuilderObjectを取得
            $qb = $this->productRepository->getQueryBuilderBySearchData($searchData);


            // 新着順の商品情報3件取得
            $query = $qb->setMaxResults(3)->getQuery();
            $products = $query->getResult();
            return $products;

        } catch (\Exception $e) {
            return null;
        }
        return null;
    }


クエリービルダーを使用してますが、書式が異なるようで、いただいた方法のままでは絞り込めませんでした。

度々お手数ですが、ご確認いただけると幸いです。
h_tanaka
投稿日時: 2024/5/22 9:15
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: 新着商品の表示について
$qb = $this->productRepository->getQueryBuilderBySearchData($searchData);

は、公開ステータスの商品のみを取得します。

productRepository がオーバーライドされていたり クエリカスタマイザーで条件が更新されていないでしょうか?

デバッグモードにしてブラウザで実行されたクエリを確認してみてください。
https://doc4.ec-cube.net/environmental_setting


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

nakamori
投稿日時: 2024/5/22 14:31
対応状況: −−−
常連
登録日: 2018/4/25
居住地:
投稿: 36
Re: 新着商品の表示について
確かに公開ステータスの商品のみが返ってきているのですが、取得件数が減ってしまっています。

下記スレッドと同種の問題かなと思いましたが。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=23715&forum=10

シンプルに公開商品をIDの大きい順に10件取得できれば良いので、参考にしたコードを破棄して書き直したところ、期待する結果が得られたのでクローズいたします。

ありがとうございました。

$qb = $this->productRepository
                ->createQueryBuilder('p')
                ->andWhere('p.Status = 1')
                ->orderBy('p.id', 'DESC')
                ->setMaxResults(10);

            $Products = $qb->getQuery()->getResult();
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,160名です
総投稿数は110,324件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1682
8
red
1571
9
mcontact
1351
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.