バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 新着商品プラグインの特定カテゴリのみ表示について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
D-18
投稿日時: 2016/2/28 23:55
対応状況: −−−
半人前
登録日: 2012/10/31
居住地:
投稿: 11
新着商品プラグインの特定カテゴリのみ表示について
助けて下さい。。。。

以前投稿がありました

【2.13.0】新着商品プラグインの特定カテゴリ非表示

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=13632&post_id=74894&order=0&viewmode=flat&pid=0&forum=10#forumpost74894

で投稿させて頂いたのですが、、、

現在、特定のカテゴリのみ非表示ではなく、特定のカテゴリのみ表示をしたく作業をしています。

$arrProductId = array(); foreach ($arrProducts as $key => $val) { 	$arrCategoryId = SC_Helper_DB_Ex::sfGetCategoryId($val['product_id']); 	if(in_array(7, $arrCategoryId)){ 		$arrProductId[] = $val['product_id']; 	} }


if(!in_array(7, $arrCategoryId)){

の「!」を外すだけで対応してみてうまく表示が出来たと喜んでいたのですが、、、

管理画面 > プラグイン管理 > プラグイン設定より表示個数を5個にして保存しているのですが3件とか、、2件とかしか表示されません。

現在、私が理解できた事としてはカテゴリー7に3件登録後、別カテゴリーにて2件他のものを追加し、再度カテゴリー7に新規登録を2件した場合、プラグイン設定の表示個数が5個の場合は

・カテゴリー7の2件
・別カテゴリーの2件
・カテゴリー7の1件

の表示個数「5件」のうち、カテゴリー7のもの「3件」だけが表示されているように思います。。。

これをどうして良いものなのか、、、
どこをどうすればよいものなのか。。。。

私の理解出来る範囲を超えております。。。。

助言の程、よろしくお願いいたします。。。。

私の環境は下記になります。
---------------------------
・EC-CUBE 2.12.3
・PHP   PHP 5.3.29
・DB    MySQL 5.5.46
---------------------------
karin
投稿日時: 2016/2/29 15:50
対応状況: −−−
仙人
登録日: 2008/9/15
居住地: 東京都
投稿: 656
Re: 新着商品プラグインの特定カテゴリのみ表示について
D-18 様

実際にプラグインのソースを読んではいないのですが、
プラグインの表示個数:5件 の状態で
カテゴリIDが7のものだけを表示

if(in_array(7, $arrCategoryId)){


とすると、ご報告の下記内容になるのは納得できます。
(すでに5件に絞り込まれている状態で、さらにカテゴリIDでの条件を加えている為)

引用:

・カテゴリー7の2件
・別カテゴリーの2件
・カテゴリー7の1件
の表示個数「5件」のうち、カテゴリー7のもの「3件」だけが表示されているように思います。。。


特定のカテゴリIDのものだけをプラグインの表示個数で設定した数だけ表示したいのであれば、テンプレート側ではなく、データを取得する部分の変更が必要かもしれません。

D-18
投稿日時: 2016/3/4 17:25
対応状況: −−−
半人前
登録日: 2012/10/31
居住地:
投稿: 11
Re: 新着商品プラグインの特定カテゴリのみ表示について
karin様

ご回答ありがとうございます!

データを取得する部分とはプラグイン側の変更との事でしょうか?

私が書き込んでいる
if(in_array(7, $arrCategoryId)){

の記述はプラグイン内の記述なので

++++++++++++++++++++++++++++++++++++++++++++++++
すでに5件に絞り込まれている状態で、さらにカテゴリIDでの条件を加えている為
++++++++++++++++++++++++++++++++++++++++++++++++

の箇所を入れ替える事が出来れば、、、
なんて安易な事を考えているのですが、、、

カテゴリIDで絞り込んでそこから5件のような、、、

しかし、どこをどう記述し直せばよいかがわかりません。。。

よろしければ助言の程、よろしくお願いいたします。。。
D-18
投稿日時: 2016/3/31 22:57
対応状況: −−−
半人前
登録日: 2012/10/31
居住地:
投稿: 11
Re: 新着商品プラグインの特定カテゴリのみ表示について

<?php
// {{{ requires
require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php';

/**
 * 新着商品ブロックのブロッククラス
 */
class LC_Page_FrontParts_Bloc_Newbooks extends LC_Page_FrontParts_Bloc {

    /**
     * 初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
    }

    /**
     * プロセス.
     *
     * @return void
     */
    function process() {
        $this->action();
        $this->sendResponse();
    }

    /**
     * Page のアクション.
     *
     * @return void
     */
    function action() {
        //商品情報取得
        $this->arrNewbooks = $this->lfGetNewbooks();
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
    
    /**
     * 新着商品の情報を取得
     *
     * @return array
     * @setcookie array
     */
    function lfGetNewbooks(){
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objProduct = new SC_Product_Ex();
		


        // プラグイン情報を取得.
        $plugin     = SC_Plugin_Util_Ex::getPluginByPluginCode("Newbooks");
        //表示条件
        $disp_rule  = is_numeric($plugin['free_field1']) ? $plugin['free_field1'] : 0;
        //表示件数
        $disp_count = unserialize($plugin['free_field2']);
        //表示ステータス
        $product_status = $plugin['free_field3'];

        //デバイスフラグ
       $disp_device == SC_Display_Ex::detectDevice();

        // 新着商品情報取得 特定のカテゴリ 【11】
        $col = 'product_id';
        $table = 'dtb_products';
		$where = 'category_id = 11';
		$where .= 'and status = 1 and del_flg = 0';
		

        if($product_status){
            $arrStatus = unserialize($product_status);
            if(is_array( $arrStatus )){
                $strstatus = '';
                foreach( $arrStatus as $status ){
                    if( $strstatus ) $strstatus .= ',';
                    $strstatus .= $status;
                }
                $where .= ' '
                        . 'AND product_id IN ('
                        . '    SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . $strstatus . ')'
                        . ')';
            }
        }
        switch($disp_rule) {
            case 1://登録日順
                $objQuery->setOrder('create_date desc');
            break;
            case 2://更新日順
                $objQuery->setOrder('update_date desc');
            break;
        }
		
        if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_PC ) {
           $objQuery->setLimit($disp_count[10]);
        }elseif(SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE){
           $objQuery->setLimit($disp_count[1]);
        }elseif(SC_Display_Ex::detectDevice() == DEVICE_TYPE_SMARTPHONE ){
           $objQuery->setLimit($disp_count[2]);
        }
		
		
        $arrProducts = $objQuery->select($col, $table, $where);


        $objQuery =& SC_Query_Ex::getSingletonInstance();
        if (count($arrProducts) > 0) {

            $arrProductId = array();
            foreach ($arrProducts as $key => $val) {
                $arrProductId[] = $val['product_id'];
            }

            // 商品詳細情報取得
            $arrTmp = $objProduct->getListByProductIds($objQuery, $arrProductId);
            foreach ($arrTmp as $key => $arrRow) {
                $_row = $arrRow;
                $arrProductList[] = $_row;
            }
        }
        return $arrProductList;
    }

}
?>


自分なりに色々と調べながら試してみました!
残念ながらエラーで動作はできておりません。。。。


        // 新着商品情報取得 特定のカテゴリ 【11】
        $col = 'product_id';
        $table = 'dtb_products';
	$where = 'category_id = 11';
	$where .= 'and status = 1 and del_flg = 0';


とカテゴリーIDを先に指定してみたのですがどこがダメなんでしょうか?

ご教授頂けますとたすかります。。。。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は60,859名です
総投稿数は95,423件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2038
4
468
2020
5
yuh
1612
6
umebius
1588
7
red
1399
8
h_tanaka
992
9
fukap
907
10
tsuji
863
11
shutta
835
12 ramrun 789
13
tao_s
783
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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