バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

 > フロント機能 > 規格のプルダウン表示順序について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
waiya
投稿日時: 2016/6/15 19:13
対応状況: −−−
半人前
登録日: 2009/5/29
居住地: 大阪市
投稿: 13
規格のプルダウン表示順序について
ECCUBE3.0.10でサイト制作をおこなっておりますが、
フロント画面で規格1・規格2ともにプルダウンの順序が
管理画面の規格登録画面で順序を変更しても反映されないという現象にあわれた方おられますか?

希望としては、dtb_class_categoryテーブルのrankの降順にしたいと思っています。

もしご存知の方おられましたらお知恵を貸していただきたいと思います。
何卒よろしくお願いいたします。
DELIGHT
投稿日時: 2016/6/15 20:15
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 規格のプルダウン表示順序について
当該箇所の処理は下記の順で追えます。

https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Form/Type/AddCartType.php#L105
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L156
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L60

ProductClassのマッピングは下記に記載されていますが、
私の知る限りでは、外部テーブルによるソートをマッピングによって実現することは出来ません。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml#L69

そのため、Eccube\Entity\Product::_calc()内で配列をソートした上でforeachをする必要があります。
Eccube\Entity\Product::getProductClasses()の返り値は配列ではなくDoctrine\Common\Collections\Collectionですので、
Doctrine\Common\Collections\Collection::toArray()した上でusort()するといいでしょう。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

DELIGHT
投稿日時: 2016/6/15 20:36
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 規格のプルダウン表示順序について
申し訳ありません、上記だけでは不十分なようです。
案が思いついたら再度書きます。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

DELIGHT
投稿日時: 2016/6/15 20:44
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 規格のプルダウン表示順序について
下記の箇所でも同様の処理がありました。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/template/default/Product/detail.twig#L28
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L378

先の書き込みと合わせた2箇所で配列のソートをする必要があります。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

waiya
投稿日時: 2016/6/16 5:54
対応状況: −−−
半人前
登録日: 2009/5/29
居住地: 大阪市
投稿: 13
Re: 規格のプルダウン表示順序について
DELIGHTさんご解説いただきありがとうございます!

確かにマッピングでデータベースアクセス時にソートができれば一番よいですね.....今回はお教えいただいた箇所を参考にして下記の箇所にusortを追加することでフロント側の表示はうまくいきました。

https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Entity/Product.php#L100

if ($ProductClass->getClassCategory1()) {
$classCategoryId1 = $ProductClass->getClassCategory1()->getId();
if (!empty($classCategoryId1)) {

//規格1ランク用の配列を取得
$cc_rank_1[$ProductClass->getClassCategory1()->getName()] = $ProductClass->getClassCategory1()->getRank();

$this->classCategories1[$ProductClass->getClassCategory1()->getId()] = $ProductClass->getClassCategory1()->getName();
if ($ProductClass->getClassCategory2()) {

//規格2ランク用の配列を取得
$cc_rank_2[$ProductClass->getClassCategory2()->getName()] = $ProductClass->getClassCategory2()->getRank();

$this->classCategories2[$ProductClass->getClassCategory1()->getId()][$ProductClass->getClassCategory2()->getId()] = $ProductClass->getClassCategory2()->getName();
}
}
}

[ループが終わった後に]
// 規格1のソート
uasort($this->classCategories1,function($a, $b) use($cc_rank_1){
if($cc_rank_1[$a] == $cc_rank_1[$b]) return 0;
return $cc_rank_1[$a] < $cc_rank_1[$b];
});

// 規格2のソート
if ($ProductClass->getClassCategory2()) {
uasort($this->classCategories2,function($a, $b) use($cc_rank_2){
if($cc_rank_2[$a] == $cc_rank_2[$b]) return 0;
return $cc_rank_2[$a] < $cc_rank_2[$b];
});
}

あまりスマートではありませんが、これで様子を見ていきます。
もし、不具合などあればまた記載します。
これをもって一旦解決済みとさせていただきます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.