バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

 > フロント機能 > 商品詳細の規格のソート 不具合?

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hiroki79
投稿日時: 2016/11/21 8:51
対応状況: −−−
半人前
登録日: 2015/10/15
居住地:
投稿: 15
商品詳細の規格のソート 不具合?
いつもお世話になっています。

商品詳細の規格が、管理画面で指定しているソート順にならないです。
全てのプラグインを停止しても、正しいソート順になりません。

DBのrankは、管理画面で設定した内容の降順で設定されています。

以下がおかしくなるページです。

通常画面「商品詳細」ページの「商品規格」
管理画面「商品規格登録」ページの「商品規格」
管理画面「商品検索」ページの「カテゴリ」
管理画面「商品登録」ページの「カテゴリ」


EC-CUBE 3.0.12-p1
さくらインターネット スタンダード
PHP 5.4.45
MySQL 5.5.38
468
投稿日時: 2016/11/23 0:06
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 商品詳細の規格のソート 不具合?
おかしくなった並び順は規則性は無くランダムですか?
プラグイン以外に直接カスタマイズ等はされていない状況でしょうか?
あと、ページごとに表示順が入れ替わって表示される事はありますか?
例えば、
管理画面「商品検索」ページの「カテゴリ」
管理画面「商品登録」ページの「カテゴリ」のカテゴリの並び順は揃っていますか?

ご確認、よろしくお願いします。
hiroki79
投稿日時: 2016/11/23 14:40
対応状況: −−−
半人前
登録日: 2015/10/15
居住地:
投稿: 15
Re: 商品詳細の規格のソート 不具合?
ご投稿ありがとうございます。


直接のカスタマイズは、1カ所のみ行いました。
フロントの商品検索条件に、「商品コード」と「商品説明」を追加しました。


【商品規格について】
商品詳細ページの規格は、並び順の法則性がわかりました。
「 dtb_product_class 」の「 product_class_id 」順だと思われます。

【カテゴリについて】
カテゴリ登録を見ると、正しく親子関係も出来ており、並び順も正しく出来ています。

しかし、DBを見ると、rankがめちゃくちゃになっていました。
以下は、そのrankが素直に降順で並んでいました。

管理画面「商品検索」ページの「カテゴリ」
管理画面「商品登録」ページの「カテゴリ」


どの辺りを修正すると良いのでしょうか?
それとも不具合として処理して貰えるんですかね??
umebius
投稿日時: 2016/11/23 15:07
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 商品詳細の規格のソート 不具合?
※3.0.12-p1で確認していません。コード違ったらすみません。


商品詳細ページの規格はAddCartType.phpのbuildFormメソッドで登録されています。


これを変更するにはいろいろな方法がありますが、
そのメソッド内でPHPのsort等を使って変更してしまうのが早いでしょうね。

この部分getClassCategories1()などの結果を一度変数に入れて並び替えれば良いでしょう。

if ($Product && $Product->getProductClasses()) {
                if ($Product->getClassName1()) {
                    $builder->add('classcategory_id1', 'choice', array(
                        'label' => $Product->getClassName1(),
                        'choices'   => array('__unselected' => '選択してください') + $Product->getClassCategories1(),
                    ));
                }
                if ($Product->getClassName2()) {
                    $builder->add('classcategory_id2', 'choice', array(
                        'label' => $Product->getClassName2(),
                        'choices' => array('__unselected' => '選択してください'),
                    ));
                }
            }



管理画面「商品検索」ページの「カテゴリ」はおっしゃる通り、Rank順になっています。

/Form/Type/Master/CategoryType.php
orderBy('c.rank', 'DESC')の部分です。
「// なぜかDESC」というのは本体開発時コメントです。

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'class' => 'Eccube\Entity\Category',
            'property' => 'NameWithLevel',
            // なぜかDESC
            'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('c')
                    ->orderBy('c.rank', 'DESC');
            },
        ));
    }



>rankがめちゃくちゃになっていました。
カテゴリ登録時にrankがおかしいということであれば
対象クラスは/src/Eccube/Controller/Admin/Product/CategoryController.php です。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

hiroki79
投稿日時: 2016/11/23 16:27
対応状況: −−−
半人前
登録日: 2015/10/15
居住地:
投稿: 15
Re: 商品詳細の規格のソート 不具合?
ご投稿ありがとうございます。
早速、試してみました。

【商品詳細ページの規格】
以下の様にコーディングしました。

$array = $Product->getClassCategories1();
foreach ((array) $array as $key => $value) {
   $sort[$key] = $value['rank'];
}
array_multisort($sort, SORT_DESC, $array);
$builder->add('classcategory_id1', 'choice', array(
   'label' => $Product->getClassName1(),
   'choices'   => array('__unselected' => '選択してください') + $array,
));

しかし、驚く事に・・・
DBのrankとは異なる並び順になりました。
rankが文字として扱われたわけでもないみたいです。
id順でも日付順でも名前順でもなく・・・何でしょう??


新たな不具合も見つけました。
規格2がある商品で、規格1を選択しても、規格2が表示されないケースがあります。


【カテゴリ】
フロントの商品検索のカテゴリは問題なく並んでいるので、
そちらのコーディングを参考にしようと思います。
それは、どこを見れば良いでしょうか?
hiroki79
投稿日時: 2016/11/23 20:28
対応状況: −−−
半人前
登録日: 2015/10/15
居住地:
投稿: 15
Re: 商品詳細の規格のソート 不具合?
そういえば、1点、怪しい作業をしています。

2.13で稼働している既存サイトがあるので、
商品データをcsvでインポートしました。

それをするにあたり、カテゴリと商品規格は、
マスタを入力しつつ、DBでAUTO Noを調整しました。


各マスタ保守の画面では正常に動作しているので、
その他の機能でも正常に動作して欲しいです。。。
468
投稿日時: 2016/11/23 21:23
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 商品詳細の規格のソート 不具合?
もう1つカスタマイズの確認ですが、
jQueryのプラグイン等は追加されていませんか?

EC-CUBEでは無いのですが、以前、
プルダウンを装飾するためのJQueryプラグインを導入したところ、
Selectの並び順がDBや管理画面の通りにならずに調査したのですが、
onLoad時にSelectのOptionをわざわざValue属性の値で並び替える動きをするものがありました。

ブラウザのソースの表示で見るHTMLと
FireBug等デバッグツールで見るHTMLの内容が書き変わっていたので
気付いたのですが、
Javascriptによって並び替えられている可能性は無さそうでしょうか?

jQueryの場合、管理画面まで装飾される事はないと思いますので
可能性は低いと思いますが、念の為、確認をお願いします。
umebius
投稿日時: 2016/11/23 23:26
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 商品詳細の規格のソート 不具合?
$array = $Product->getClassCategories1();
foreach ((array) $array as $key => $value) {
   $sort[$key] = $value['rank'];
}
array_multisort($sort, SORT_DESC, $array);
$builder->add('classcategory_id1', 'choice', array(
   'label' => $Product->getClassName1(),
   'choices'   => array('__unselected' => '選択してください') + $array,
));


すみません、この部分なんですが、
getClassCategories1()はキーがid、値がカテゴリ名(文字列)という配列なので、そのコードだと並び替えできていないです。$value['rank']の時点でWarningになると思います。

rankで並び替えたいなら、さらに元をたどって、Product.phpの_calc()メソッドをカスタマイズする必要がありますね。


 if ($ProductClass->getClassCategory1()) {
                    $classCategoryId1 = $ProductClass->getClassCategory1()->getId();
                    if (!empty($classCategoryId1)) {
                        $this->classCategories1[$ProductClass->getClassCategory1()->getId()] = $ProductClass->getClassCategory1()->getName();
                        if ($ProductClass->getClassCategory2()) {
                            $this->classCategories2[$ProductClass->getClassCategory1()->getId()][$ProductClass->getClassCategory2()->getId()] = $ProductClass->getClassCategory2()->getName();
                        }
                    }
                }
                $i++;


このあたりです。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

umebius
投稿日時: 2016/11/23 23:29
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 商品詳細の規格のソート 不具合?
お手数おかけしてすみません。
サイトをデバッグすれば解決できるのかもしれませんが
なかなか難しいものですね。

>【カテゴリ】
>フロントの商品検索のカテゴリは問題なく並んでいるので、
>そちらのコーディングを参考にしようと思います。
>それは、どこを見れば良いでしょうか?

Form/Type/SearchProductType.phpです。
ただコードはほぼ同じです。

$builder->add('category_id', 'entity', array(
            'class' => 'Eccube\Entity\Category',
            'property' => 'NameWithLevel',
            'query_builder' => function (EntityRepository $er) {
                return $er
                    ->createQueryBuilder('c')
                    ->orderBy('c.rank', 'DESC');
            },
            'empty_value' => '全ての商品',
            'empty_data' => null,
            'required' => false,
            'label' => '商品カテゴリから選ぶ',
        ));



----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

hiroki79
投稿日時: 2016/11/24 13:50
対応状況: −−−
半人前
登録日: 2015/10/15
居住地:
投稿: 15
Re: 商品詳細の規格のソート 不具合?
念の為に、以下を行いました。

1.サイトを別で新規構築
2.カテゴリ・規格を普通に入力
3.商品を普通に入力
4.商品規格を普通に入力

【結果】

1.管理画面のカテゴリのソートは問題解消
2.商品詳細の規格ソートは問題継続


その他は以下の通りです

・jQuery系のプラグインは追加しておりません。
・プラグインは1つも追加していない
・テンプレートも何もカスタマイズしていない
・htmlディレクトリを除外する為のカスタマイズ有
・ルートの.htaccessに「 RewriteBase /index.php/ 」を追記
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,880名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.